我只是编程的初学者。我想在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();
}
}
我该怎么做才能正确安排?
答案 0 :(得分:1)
我相信你要找的是gridbaglayout。它允许您基于网格放置元素(按钮,文本字段等)。这是它的文档:
http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html
我还建议您查看其他一些布局管理器,因为那里有一些非常有趣和有用的布局管理器。有关GUI布局的一般介绍,请参阅此处的文档:
http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html
以上链接包含您开始使用所需的所有信息。
答案 1 :(得分:0)
为什么不使用eclipse窗口构建器或其他东西?您只需以图形方式调整按钮的大小即可。自己做所有摆动编程是浪费时间,使用gui构建gui编辑器并更专注于排序业务逻辑更好。如果你想做一个真正专注于挥杆的人,你可以花时间更彻底地研究它。
但是,如果您只想调整某些按钮的大小,可以使用setPreferredSize方法而不是setSize方法。