我对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的想法。
发布于 2014-02-26 12:46:20
在您的代码中,buttonMinus的边界与buttonPlus完全相同。毫无疑问,这是一个无辜的剪贴错误。
我不知道你说“相等”按钮在其他人后面是什么意思,是不是被他们完全模糊了?部分模糊了?它出现在正确的一行中吗?是不是太宽了?太窄了?
最终,这并不重要。Andrew是对的;使用布局管理器可以防止这些问题和许多其他问题,包括前面提到的剪切粘贴错误:
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)是一个不应该跳过/推迟的步骤。
https://stackoverflow.com/questions/21983038
复制相似问题