我尝试使用JTEXTField添加文本字段,我使用的布局是GridBagLayout,但由于某种原因,文本字段填满了顶部区域。我已经花了大约2个小时在这上面,我找不到它为什么这样做的原因
这是我的问题
public class Calculator extends JPanel implements ActionListener {
public static final long serialVersionUID = 1L;
public static final int WIDTH = 800;
public static final int HIGHT = 300;
private GridBagLayout layout;
private GridBagConstraints gbConstraints;
public Calculator(){
setPreferredSize(new Dimension(WIDTH, HIGHT));
layout = new GridBagLayout();
setLayout(layout);
gbConstraints = new GridBagConstraints();
JTextField jt = new JTextField(null,20);
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.weighty = 1;
gbConstraints.gridx = 0;
gbConstraints.gridy = 0;
this.add(jt, gbConstraints);
JButton btnQuot = new JButton("Quot");
btnQuot.setPreferredSize(new Dimension(55, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 2;
gbConstraints.gridy = 4;
btnQuot.addActionListener(this);
this.add(btnQuot, gbConstraints);
JButton btnMod = new JButton("Mod");
btnMod.setPreferredSize(new Dimension(55, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 3;
gbConstraints.gridy = 4;
btnMod.addActionListener(this);
this.add(btnMod, gbConstraints);
JButton btnA = new JButton("A");
btnA.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 4;
gbConstraints.gridy = 4;
btnA.addActionListener(this);
this.add(btnA, gbConstraints);
JButton btnBlank = new JButton("");
btnBlank.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 5;
gbConstraints.gridy = 4;
this.add(btnBlank, gbConstraints);
JButton btnBlank1 = new JButton("");
btnBlank1.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 6;
gbConstraints.gridy = 4;
this.add(btnBlank1, gbConstraints);
JButton btnBlank2 = new JButton("");
btnBlank2.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 7;
gbConstraints.gridy = 4;
this.add(btnBlank2, gbConstraints);
JButton btnBlank3 = new JButton("");
btnBlank3.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 8;
gbConstraints.gridy = 4;
this.add(btnBlank3, gbConstraints);
JButton btnBlank4 = new JButton("");
btnBlank4.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 9;
gbConstraints.gridy = 4;
this.add(btnBlank4, gbConstraints);
JButton btnBlank5 = new JButton("");
btnBlank5.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 2;
gbConstraints.gridy = 5;
this.add(btnBlank5, gbConstraints);
JButton btnBlank6 = new JButton("");
btnBlank6.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 3;
gbConstraints.gridy = 5;
this.add(btnBlank6, gbConstraints);
JButton btnB = new JButton("B");
btnB.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 4;
gbConstraints.gridy = 5;
btnB.addActionListener(this);
this.add(btnB, gbConstraints);
JButton backSpace = new JButton("←");
backSpace.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 5;
gbConstraints.gridy = 5;
backSpace.addActionListener(this);
this.add(backSpace, gbConstraints);
JButton btnCE = new JButton("CE");
btnCE.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 6;
gbConstraints.gridy = 5;
btnCE.addActionListener(this);
this.add(btnCE, gbConstraints);
JButton btnClear = new JButton("C");
btnClear.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 7;
gbConstraints.gridy = 5;
btnClear.addActionListener(this);
this.add(btnClear, gbConstraints);
JButton btnPlusMinus = new JButton("+/-");
btnPlusMinus.setPreferredSize(new Dimension(55, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 8;
gbConstraints.gridy = 5;
btnPlusMinus.addActionListener(this);
this.add(btnPlusMinus, gbConstraints);
JButton btnSqrt = new JButton("√");
btnSqrt.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 9;
gbConstraints.gridy = 5;
btnSqrt.addActionListener(this);
this.add(btnSqrt, gbConstraints);
JButton btnBlank7 = new JButton("");
btnBlank7.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 2;
gbConstraints.gridy = 6;
this.add(btnBlank7, gbConstraints);
JButton btnBlank8 = new JButton("");
btnBlank8.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 3;
gbConstraints.gridy = 6;
this.add(btnBlank8, gbConstraints);
JButton btnC = new JButton("C");
btnC.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 4;
gbConstraints.gridy = 6;
btnC.addActionListener(this);
this.add(btnC, gbConstraints);
JButton btn7 = new JButton("7");
btn7.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 5;
gbConstraints.gridy = 6;
btn7.addActionListener(this);
this.add(btn7, gbConstraints);
JButton btn8 = new JButton("8");
btn8.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 6;
gbConstraints.gridy = 6;
btn8.addActionListener(this);
this.add(btn8, gbConstraints);
JButton btn9 = new JButton("9");
btn9.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 7;
gbConstraints.gridy = 6;
btn9.addActionListener(this);
this.add(btn9, gbConstraints);
JButton btnDivid = new JButton("/");
btnDivid.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 8;
gbConstraints.gridy = 6;
btnDivid.addActionListener(this);
this.add(btnDivid, gbConstraints);
JButton btnPercent = new JButton("%");
btnPercent.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 9;
gbConstraints.gridy = 6;
btnPercent.addActionListener(this);
this.add(btnPercent, gbConstraints);
JButton btnBlank9 = new JButton("");
btnBlank9.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 2;
gbConstraints.gridy = 7;
this.add(btnBlank9, gbConstraints);
JButton btnBlank10 = new JButton("");
btnBlank10.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 3;
gbConstraints.gridy = 7;
this.add(btnBlank10, gbConstraints);
JButton btnD = new JButton("D");
btnD.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 4;
gbConstraints.gridy = 7;
btnD.addActionListener(this);
this.add(btnD, gbConstraints);
JButton btn4 = new JButton("4");
btn4.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 5;
gbConstraints.gridy = 7;
btn4.addActionListener(this);
this.add(btn4, gbConstraints);
JButton btn5= new JButton("5");
btn5.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 6;
gbConstraints.gridy = 7;
btn5.addActionListener(this);
this.add(btn5, gbConstraints);
JButton btn6 = new JButton("6");
btn6.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 7;
gbConstraints.gridy = 7;
btn6.addActionListener(this);
this.add(btn6, gbConstraints);
JButton btnMult = new JButton("*");
btnMult.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 8;
gbConstraints.gridy = 7;
btnMult.addActionListener(this);
this.add(btnMult, gbConstraints);
JButton btn1_OverX = new JButton("1/x");
btn1_OverX.setPreferredSize(new Dimension(50, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 9;
gbConstraints.gridy = 7;
btn1_OverX.addActionListener(this);
this.add(btn1_OverX, gbConstraints);
JButton btnBlank11 = new JButton("");
btnBlank11.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 2;
gbConstraints.gridy = 8;
this.add(btnBlank11, gbConstraints);
JButton btnBlank12 = new JButton("");
btnBlank12.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 3;
gbConstraints.gridy = 8;
this.add(btnBlank12, gbConstraints);
JButton btnE = new JButton("E");
btnE.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 4;
gbConstraints.gridy = 8;
btnE.addActionListener(this);
this.add(btnE, gbConstraints);
JButton btn1 = new JButton("1");
btn1.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 5;
gbConstraints.gridy = 8;
btn1.addActionListener(this);
this.add(btn1, gbConstraints);
JButton btn2 = new JButton("2");
btn2.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 6;
gbConstraints.gridy = 8;
btn2.addActionListener(this);
this.add(btn2, gbConstraints);
JButton btn3 = new JButton("3");
btn3.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 7;
gbConstraints.gridy = 8;
btn3.addActionListener(this);
this.add(btn3, gbConstraints);
JButton btnMinus = new JButton("-");
btnMinus.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 8;
gbConstraints.gridy = 8;
btnMinus.addActionListener(this);
this.add(btnMinus, gbConstraints);
JButton btnEquals = new JButton("=");
btnEquals.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.VERTICAL;
gbConstraints.gridheight = 2;
gbConstraints.gridx = 9;
gbConstraints.gridy = 8;
btnEquals.addActionListener(this);
this.add(btnEquals, gbConstraints);
gbConstraints.gridheight = 1;
JButton btnBlank13 = new JButton("");
btnBlank13.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 2;
gbConstraints.gridy = 9;
this.add(btnBlank13, gbConstraints);
JButton btnBlank14 = new JButton("");
btnBlank14.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 3;
gbConstraints.gridy = 9;
this.add(btnBlank14, gbConstraints);
JButton btnF= new JButton("F");
btnF.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 4;
gbConstraints.gridy = 9;
btnF.addActionListener(this);
this.add(btnF, gbConstraints);
JButton btn0 = new JButton("0");
btn0.setPreferredSize(new Dimension(90, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridwidth = 2;
gbConstraints.gridx = 5;
gbConstraints.gridy = 9;
btn0.addActionListener(this);
this.add(btn0, gbConstraints);
gbConstraints.gridwidth = 1;
JButton btnDecimal = new JButton(".");
btnDecimal.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 7;
gbConstraints.gridy = 9;
btnDecimal.addActionListener(this);
this.add(btnDecimal, gbConstraints);
JButton btnPlus = new JButton("+");
btnPlus.setPreferredSize(new Dimension(45, 30));
gbConstraints.fill = GridBagConstraints.CENTER;
gbConstraints.gridx = 8;
gbConstraints.gridy = 9;
btnPlus.addActionListener(this);
this.add(btnPlus, gbConstraints);
}
public static void main(String[] args){
JFrame frame = new JFrame("My Programmer Calculator");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLayout(new BorderLayout());
frame.add(new Calculator(), BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}