Java Swing、JDK 7中的GUI异常

Java Swing、JDK 7中的GUI异常,java,swing,intellij-idea,java-7,Java,Swing,Intellij Idea,Java 7,我对Java比较陌生,并尝试使用Swing获得第一次接触,因此我决定使用Swing和JButtons/JTextFields在Java中模拟一个计算器 问题是,大多数按钮显示正确且大小正确,但也有一些异常情况——特别是减法(-)按钮没有出现,等式按钮(=)出现在其他按钮后面。将发布一个图像,但这应该足够了,我的代表不允许我内联图像;我丢失了我在这里的一个旧帐户,因此不得不承担后果 不用多说,下面是代码: // Set the display JTextField as the top eleme

我对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,如果这有任何相关性的话。

在您的代码中,
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);

我知道您希望分小步进行,但更简单的布局管理器(GridLayout、BorderLayout、FlowLayout和BoxLayout)是一个您不应该跳过/推迟的步骤。

按钮7.setBounds(50,75,x,y)javagui可能必须在许多平台上工作,在不同的屏幕分辨率上&使用不同的plaf。因此,它们不利于部件的精确放置。要为一个健壮的GUI组织组件,请使用布局管理器,或者与布局填充和边框一起使用。要更快地获得更好的帮助,请发布一个(最简单的完整测试和可读示例)。看起来这个GUI需要一个
GridLayout
,但可以肯定的是,我需要看到它。我以这种方式编写代码的主要原因是,我正在开始,并明确声明什么地方对我更有意义。即使对我来说,它也感觉很原始;但我更愿意从直观的方法开始,逐步改进到更好、更“洁食”的方法。@AndrewThompson MCTaRE,如《类文件完整源代码》1)“更多的“洁食”方法。”忘掉“洁食”,想想是可行的。如果我的第一条评论未能传达事实,
setBounds
是不可行的。这可能是问题背后的原因。2) 你可以从这个开始。。