Swing中的GUI异常,JDK 7

时间:2014-02-24 08:59:32

标签: java swing intellij-idea java-7

我对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。

1 个答案:

答案 0 :(得分:0)

在您的代码中,buttonMinusbuttonPlus具有完全相同的边界。毫无疑问是一个无辜的剪切和粘贴错误。

当你说“等于”按钮落后于其他人时,我不知道你的意思;它们完全被它们遮挡了吗?部分模糊?它出现在正确的行中吗?太宽了吗?太窄了?

最终,没关系。安德鲁是对的;使用布局管理器可以防止这些令人头疼的问题,包括前面提到的剪切和粘贴错误:

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)是您不应跳过/推迟的步骤。