2011-10-26 25 views
2

右と下の3つのボタンの間にスペースを入れるにはどうすればいいですか?メモリとlabelM ??? 行うために私を助けて、そこ等間隔である必要があり、さらにメモリボタンと数字ボタンが同じ高さでなければならない、この、私の脳が行う方法を想像することができませんでしたbecouseこの これはコードSWTレイアウトの問題

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 Composite mainComposite; 
    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); 
     leftComposite.setLayout(glleft); 
     leftComposite.setLayoutData(data); 
     //leftComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_CYAN)); 
     glleft.marginBottom = 5; 
     glleft.marginTop = 7; 
     label2 = new Label(leftComposite,SWT.BORDER | SWT.CENTER); 
     label2.setLayoutData(data); 
     double a = Double.parseDouble(label.getText()); 
     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; 
     glright.horizontalSpacing = 0; 
     glright.verticalSpacing = 0; 
     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; 
     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; 
     glright.marginTop = 0; 
     rightBotComposite.setLayout(glright); 
     rightBotComposite.setLayoutData(data); 
    // rightBotComposite.setBackground(SWTResourceManager.getColor(SWT.COLOR_DARK_GRAY));  
     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) { 
       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); 
      }}); 
      button.setFocus(); 
     return button; 
    } 

    public void setFocus() { 
    } 
} 

であり、これはあるしてください画像:calculator

http://s008.radikal.ru/i306/1110/65/0708165834c9.jpg

+0

私はあなたの問題が何かを得ていない...あなたはそれをより良く説明できますか? –

+0

彼は2つのスペースが等しくなるようにしたいと思っています:) –

+0

LayoutDataを複数のコンポーネントに追加していますが、そうしないでください。私は今コードを見ています。 –

答えて

3

は、左と右のコンポジットを作成しないでください。代わりに、botCompositeの直下にあるすべてのボタン(horizontalSpan = 3の単一のコンポジットの下にあるBackspace、C、CEを除く)を配置し、空白のラベルをスペースに使用します。 @Chris Dennettが指摘しているように、すべてのウィジェットに独自のレイアウトデータがあることを確認してください。