我对Java相对较新,并试图使用Swing首次曝光,因此我决定使用Swing和JButtons
/ JTextFields
来使用Java模拟计算器。
问题是,大多数按钮显示正确并且尺寸正确,但有一些异常 - 特别是减法( - )按钮没有出现,方程按钮(=)出现在后面其他人。会张贴图片,但这应该足够了,我的代表不允许我内嵌图片;我在这里失去了一个旧账户,不得不承担后果。
不用多说,这是代码:
// Set the display JTextField as the top element in the GUI stackup:
disp.setBounds(50,25,400,50);
button7.setBounds(50,75,x,y);
button8.setBounds(150,75,x,y);
button9.setBounds(250,75,x,y);
buttonPlus.setBounds(350,75,x,y);
button4.setBounds(50,125,x,y);
button5.setBounds(150,125,x,y);
button6.setBounds(250,125,x,y);
buttonMinus.setBounds(350,75,x,y);
button1.setBounds(50,175,x,y);
button2.setBounds(150,175,x,y);
button3.setBounds(250,175,x,y);
buttonMult.setBounds(350,175,x,y);
buttonClear.setBounds(50,225,x,y);
button0.setBounds(150,225,x,y);
buttonEqual.setBounds(250,225,x,y);
buttonDiv.setBounds(350,225,x,y);
frame.add(disp);
frame.add(button0);
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.add(button4);
frame.add(button5);
frame.add(button6);
frame.add(button7);
frame.add(button8);
frame.add(button9);
frame.add(buttonClear);
frame.add(buttonPlus);
frame.add(buttonMinus);
frame.add(buttonMult);
frame.add(buttonDiv);
frame.add(buttonEqual);
//Display the window.
frame.pack();
frame.setVisible(true);
如果相关,我也会继续发布构造函数;如果有任何针对性,我正在使用IntelliJ IDEA。
答案 0 :(得分:0)
在您的代码中,buttonMinus
与buttonPlus
具有完全相同的边界。毫无疑问是一个无辜的剪切和粘贴错误。
当你说“等于”按钮落后于其他人时,我不知道你的意思;它们完全被它们遮挡了吗?部分模糊?它出现在正确的行中吗?太宽了吗?太窄了?
最终,没关系。安德鲁是对的;使用布局管理器可以防止这些令人头疼的问题,包括前面提到的剪切和粘贴错误:
JPanel buttonPanel = new JPanel(new GridLayout(0, 4, 3, 3));
buttonPanel.add(button7);
buttonPanel.add(button8);
buttonPanel.add(button9);
buttonPanel.add(buttonPlus);
buttonPanel.add(button4);
buttonPanel.add(button5);
buttonPanel.add(button6);
buttonPanel.add(buttonMinus);
buttonPanel.add(button1);
buttonPanel.add(button2);
buttonPanel.add(button3);
buttonPanel.add(buttonMult);
buttonPanel.add(buttonClear);
buttonPanel.add(button0);
buttonPanel.add(buttonEqual);
buttonPanel.add(buttonDiv);
我知道您希望继续小步骤,但更简单的LayoutManagers(GridLayout,BorderLayout,FlowLayout和BoxLayout)是您不应跳过/推迟的步骤。