首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GUI异常在Swing,JDK 7

GUI异常在Swing,JDK 7
EN

Stack Overflow用户
提问于 2014-02-24 08:59:31
回答 1查看 86关注 0票数 0

我对Java还比较陌生,并且尝试使用Swing获得我的第一次曝光,所以我决定使用Swing和JButtons/JTextFields在Java中模拟一个计算器。

问题是,大多数按钮显示正确,大小正确,但也有一些异常--特别是,减法(-)按钮没有出现,等式按钮(=)出现在其他按钮后面。会发布一张图片,但这应该足够了,我的代表也不允许我在网上嵌入一个图片;我失去了一个我在这里的旧账户,不得不承受后果。

下面是代码,不需要再多说了:

代码语言:javascript
复制
// 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的想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-26 12:46:20

在您的代码中,buttonMinus的边界与buttonPlus完全相同。毫无疑问,这是一个无辜的剪贴错误。

我不知道你说“相等”按钮在其他人后面是什么意思,是不是被他们完全模糊了?部分模糊了?它出现在正确的一行中吗?是不是太宽了?太窄了?

最终,这并不重要。Andrew是对的;使用布局管理器可以防止这些问题和许多其他问题,包括前面提到的剪切粘贴错误:

代码语言:javascript
复制
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)是一个不应该跳过/推迟的步骤。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21983038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档