2011-10-23 3 views
0

キーボードの入力に問題があります。私はKeyActionListenerを書きましたが、マウスでいくつかのボタンをクリックした後にしか動作しません。たとえば、マウス5で押してからキーボードを押すと、記号がキーボードで押されますが、プログラムが起動した後、私は何も手に入れません。ここでkeybordで押されたシンボルをjavaのラベルに入力する方法は?

は私のコードです:

package calc; 

import org.eclipse.swt.SWT; 
import org.eclipse.swt.events.KeyEvent; 
import org.eclipse.swt.events.KeyListener; 
import org.eclipse.swt.events.SelectionEvent; 
import org.eclipse.swt.events.SelectionListener; 
import org.eclipse.swt.layout.GridData; 
import org.eclipse.swt.layout.GridLayout; 
import org.eclipse.swt.widgets.Button; 
import org.eclipse.swt.widgets.Composite; 
import org.eclipse.swt.widgets.Label; 
import org.eclipse.swt.widgets.Text; 
import org.eclipse.ui.part.ViewPart; 
import org.eclipse.wb.swt.SWTResourceManager; 

public class View extends ViewPart { 
    public Text inputText; 
    public Text inputText2; 
    public Label label; 
    public Label label2; 
    public Calculation calcul; 

    public View() 
    { 
     calcul = new Calculation(); 
    } 

    public void createPartControl(Composite parent) { 
     Composite mainComposite = new Composite(parent, SWT.NONE); 
     GridLayout gltop = new GridLayout(1, false);   
     gltop.numColumns = 1;  
     mainComposite.setLayout(gltop); 
     //mainComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_BLUE)); 
     //ВЫзов верхнего и нижнего композита 
     createTop(mainComposite); 
     createBott(mainComposite);  
    } 

    private void createTop(Composite parent) 
    { 
     GridLayout gltop = new GridLayout(1, false);   
     gltop.numColumns = 1; 
     GridData data = new GridData(GridData.FILL_HORIZONTAL);  
     Composite topComposite = new Composite(parent, SWT.NONE);  
     topComposite.setLayout(gltop); 
     topComposite.setLayoutData(data); 
     //topComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_RED)); 

     /*inputText = new Text(topComposite, SWT.BORDER); 
     inputText.setLayoutData(data); 
     inputText.setFont(SWTResourceManager.getFont("", 18, SWT.BOLD));*/ 
     label = new Label(topComposite,SWT.RIGHT | SWT.BORDER); 
     label.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE)); 
     label.setLayoutData(data); 
     label.setFont(SWTResourceManager.getFont("", 18, SWT.BOLD)); 
     label.setText(calcul.output); 
    } 

    private void createBott(Composite parent) 
    { 
     GridLayout glbot = new GridLayout(1, false);   
     glbot.numColumns = 2; 
     GridData data = new GridData(GridData.FILL_BOTH);  
     Composite botComposite = new Composite(parent, SWT.NONE);  
     botComposite.setLayout(glbot); 
     botComposite.setLayoutData(data); 
     //botComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_YELLOW));    

     createLeft(botComposite);  
     createRight(botComposite);  
    } 

    private void createLeft(Composite parent) 
    {   
     Composite leftComposite = new Composite(parent, SWT.NONE); 
     GridLayout glleft = new GridLayout(1, false);  
     GridData data = new GridData(GridData.FILL_BOTH); 
     //glleft.marginTop = 26; 
     leftComposite.setLayout(glleft); 
     leftComposite.setLayoutData(data); 
     //leftComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_CYAN)); 

     label2 = new Label(leftComposite,SWT.BORDER); 
     label2.setLayoutData(data); 
     Button buttonMC = createFuncDigButtons(leftComposite, data, "M+", 'P'); 
     Button buttonMR = createFuncDigButtons(leftComposite, data, "M-", 'M'); 
     Button buttonMS = createFuncDigButtons(leftComposite, data, "MR", 'R'); 
     Button buttonMpl = createFuncDigButtons(leftComposite, data, "MC", 'c'); 
    } 

    private void createRight(Composite parent) 
    { 
     GridLayout glright = new GridLayout(1, false);  
     GridData data = new GridData(GridData.FILL_BOTH);  
     Composite rightComposite = new Composite(parent, SWT.NONE);  
     glright.numColumns = 1; 
     rightComposite.setLayout(glright); 
     rightComposite.setLayoutData(data); 
     //rightComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_DARK_GREEN)); 

     createRightTop(rightComposite); 
     createRightBot(rightComposite); 
    } 

    private void createRightTop(Composite parent) 
    { 
     Composite rightTopComposite = new Composite(parent, SWT.NONE); 
     GridLayout glltop = new GridLayout(1, false);  
     GridData data = new GridData(GridData.FILL_BOTH); 
     glltop.numColumns = 3; 
     glltop.marginBottom = 0; 
     glltop.marginTop = 0; 
     rightTopComposite.setLayout(glltop); 
     rightTopComposite.setLayoutData(data); 
     //rightTopComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_DARK_MAGENTA)); 

     Button buttonBack = createFuncDigButtons(rightTopComposite, data, "Backspace", 'B'); 
     Button buttonC = createFuncDigButtons(rightTopComposite, data, "C", 'C'); 
     Button buttonCE = createFuncDigButtons(rightTopComposite, data, "CE", 'E'); 
    } 

    private void createRightBot(Composite parent) 
    { 
     GridLayout glright = new GridLayout(1, false);  
     GridData data = new GridData(GridData.FILL_BOTH);  
     Composite rightBotComposite = new Composite(parent, SWT.NONE);  
     glright.numColumns = 5; 
     rightBotComposite.setLayout(glright); 
     rightBotComposite.setLayoutData(data); 
     //rightBotComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_DARK_GREEN));  
     Button button7 = createFuncDigButtons(rightBotComposite, data, "7", '7'); 
     Button button8 = createFuncDigButtons(rightBotComposite, data, "8", '8'); 
     Button button9 = createFuncDigButtons(rightBotComposite, data, "9", '9'); 
     Button buttonDev = createFuncDigButtons(rightBotComposite, data, "/", '/'); 
     Button buttonSQRT = createFuncDigButtons(rightBotComposite, data, "sqrt", 't'); 
     Button button4 = createFuncDigButtons(rightBotComposite, data, "4", '4'); 
     Button button5 = createFuncDigButtons(rightBotComposite, data, "5", '5'); 
     Button button6 = createFuncDigButtons(rightBotComposite, data, "6", '6'); 
     Button buttonMult = createFuncDigButtons(rightBotComposite, data, "*", '*'); 
     Button buttonPer = createFuncDigButtons(rightBotComposite, data, "%", '%'); 
     Button button1 = createFuncDigButtons(rightBotComposite, data, "1", '1'); 
     Button button2 = createFuncDigButtons(rightBotComposite, data, "2", '2'); 
     Button button3 = createFuncDigButtons(rightBotComposite, data, "3", '3'); 
     Button buttonMinus = createFuncDigButtons(rightBotComposite, data, "-", '-'); 
     Button buttonDev1 = createFuncDigButtons(rightBotComposite, data, "1/x", 'X'); 
     Button button0 = createFuncDigButtons(rightBotComposite, data, "0", '0'); 
     Button buttonPM = createFuncDigButtons(rightBotComposite, data, "+/-", 'p'); 
     Button buttonD = createFuncDigButtons(rightBotComposite, data, ".", '.');  
     Button buttonPlus = createFuncDigButtons(rightBotComposite, data, "+", '+');   
     Button buttonR = createFuncDigButtons(rightBotComposite, data, "=", '='); 
    } 

    public Button createFuncDigButtons(Composite parent, GridData gridData, final String digit, final char formethod) 
    { 
     Button button = new Button(parent, SWT.PUSH); 
      button.setLayoutData(gridData); 
      button.setText(String.valueOf(digit)); 
      button.addSelectionListener(new SelectionListener() { 
      @Override 
      public void widgetSelected(SelectionEvent arg0) { 
      // update(formethod); 
       calcul.getDigit(formethod); 
       label.setText(calcul.output); 
       if (calcul.memtrue) 
       { 
        label2.setText("M"); 
       } 
       else 
       { 
        label2.setText(""); 
       } 
      } 

      @Override 
      public void widgetDefaultSelected(SelectionEvent arg0) { 
       /* do nothing */ 
      } 
      }); 
      button.addKeyListener(new KeyListener() { 

      @Override 
      public void keyReleased(KeyEvent arg0) { 
      } 

      @Override 
      public void keyPressed(KeyEvent arg0) { 
       calcul.getDigit(arg0.character); 
       label.setText(calcul.output); 
      } 
     }); 
     return button; 
    } 

    public void setFocus() { 
     label.setFocus(); 
    } 
} 

はまた、どのように私は、彼らが同じ大きさになることを、ので、私の左と右のボタンをレイアウトすることができますか?私の操作は私に良い結果を得ることができた、私はまだ別のサイズと右のボタンをメモリボタンがあります。ここではイメージがある:あなたのコード内

enter image description here

+0

* *回のカップルをタブ移動してください「それは私がマウスでいくつかのボタンをクリックした後にのみ機能します」。フォーカスは、GUIの上部にある「タブのような」ものに焦点を当てているかもしれません。 –

+0

Andrew Thompson、ありがとう、はい、私はこれについて知っていますが、どうやってタブビングなしにこれを行うことができますか? – DPS

+0

moreovewどのように左右にレイアウトすると、同じ幅になるのですか? – DPS

答えて

1

TRUボタンbutton.setFocusを集中する()

関連する問題