如何在java中排列JFrame中的按钮



我只是编程的初学者。我想在NetBeans IDE中写一个计算器(只是它的图形)。但我在按我想要的方式按下按钮时遇到了一些问题。两个按钮具有不同的大小(0&=按钮)。但我不知道该怎么放!

这是我的代码:

public class Calculator extends JFrame implements ActionListener {
   JPanel[] row = new JPanel[7];
   JButton[] button = new JButton[28];
   String[] buttonString = {"MC", "MR", "MS", "M+", "M-",
                            "CL", "CE", "C", "+/-",  "√",
                            "7", "8", "9", "/", "%",
                            "4", "5", "6", "*", "1/x",
                            "1", "2", "3", "-",
                            ".", "+", "0", "="};
   Dimension displayDimension = new Dimension( 275, 60);
   Dimension regularDimension = new Dimension( 55 , 40);
   Dimension zeroButDimension = new Dimension( 110 , 40);
   Dimension equalButDimension = new Dimension( 55 , 80);
   JTextArea display = new JTextArea(1,20);
   Font font = new Font("Times new Roman", Font.BOLD, 14);
   Calculator() {   
       super("CALC"); 
       setDesign();
       setSize(300, 350);
       setResizable(false);
       setDefaultCloseOperation(EXIT_ON_CLOSE);
       GridLayout grid = new GridLayout(7,5);  
       setLayout(grid);
       FlowLayout f1 = new FlowLayout(FlowLayout.CENTER); 
       FlowLayout f2 = new FlowLayout(FlowLayout.CENTER,1,1);
       for(int i = 0; i < 7; i++)
          row[i] = new JPanel();
       row[0].setLayout(f1);
       for(int i = 1; i < 7; i++)
          row[i].setLayout(f2);
       for(int i = 0; i < 28; i++) {
          button[i] = new JButton();
          button[i].setText(buttonString[i]);
          button[i].setFont(font);
          button[i].addActionListener(this);
       }
       display.setFont(font);
       display.setEditable(false);
       display.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
       display.setPreferredSize(displayDimension);
       for(int i = 0; i < 24; i++)
          button[i].setPreferredSize(regularDimension);
       button[26].setPreferredSize(equalButDimension);
       button[24].setPreferredSize(regularDimension);
       button[25].setPreferredSize(regularDimension);
       button[27].setPreferredSize(zeroButDimension);
       row[0].add(display); 
       add(row[0]);
       for(int i = 0; i < 5; i++)
          row[1].add(button[i]);
       add(row[1]);
       for(int i = 5; i < 10; i++)
          row[2].add(button[i]);
       add(row[2]);
       for(int i = 10; i < 15; i++)    
          row[3].add(button[i]);
       add(row[3]); 
       for(int i = 15; i < 20; i++)    
          row[4].add(button[i]);
       add(row[4]); 
       for(int i = 20; i < 24; i++)    
          row[5].add(button[i]);
       row[5].add(button[26]);
       add(row[5]);
       row[6].add(button[27]);
       row[6].add(button[24]);
       row[6].add(button[25]);
       add(row[6]);
       setVisible(true); 
    }
    public final void setDesign() {
       try {
          UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
       }  catch(Exception e) {  
    }
  }
  public void actionPerformed(ActionEvent ae) {
  }
   public static void main(String[] arguments) {
      Calculator c = new Calculator();
  }
}

我应该怎么做才能正确安排它们?

我相信您正在寻找的是gridbaglayout。它允许您基于网格放置元素(按钮、文本字段等)。这是它的文档:

http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html

我还建议看看其他一些布局管理器,因为有一些非常有趣和有用的布局管理器。有关GUI布局的一般介绍,请参阅此处的文档:

http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html

上面的链接提供了您入门所需的所有信息。

为什么不直接使用eclipse窗口生成器之类的东西?您可以简单地以图形方式调整按钮的大小。自己完成所有的swing编程都是浪费时间,最好使用gui来构建gui编辑器,并更多地关注业务逻辑的排序。如果你想做一个真正具体的挥杆动作,你可以花时间更彻底地研究它。

但如果你只是想调整某些按钮的大小,你可以使用按钮的setPreferredSize方法,而不是setSize方法。

相关内容

  • 没有找到相关文章

最新更新