Netbeans中非常简单的Java程序的不可靠编译

时间:2013-08-19 21:27:18

标签: java netbeans compilation

我学习Java几天,我正在尝试构建一个简单的计算器。

当我在Netbeans中运行代码时,可能有30%的时间它运行良好。窗口弹出我的按钮。其他70%的时间只是弹出一个空白的JFrame。

在这两种情况下,Netbeans的输出标签都在告诉我 建立成功(总时间:N秒)

我的代码如下 - 我确定它包含大量的问题和错误,但具体而言,我试图理解为什么执行它的结果是如此不可靠。

提前致谢,

import java.awt.Color;
import java.awt.PopupMenu;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Try1 extends JFrame {

    public static void main(String[] args) {

//JFrame
JFrame frame = new JFrame();
    frame.setSize(400,600);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setTitle("Ben's Program");
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    frame.setResizable ( false );

//JPanel
JPanel panel = new JPanel();
    panel.setSize(360,100);
    panel.setLocation(20, 20);
    panel.setBackground(Color.BLUE);

//JPanel 2
JPanel panel2 = new JPanel();
    panel2.setSize(360,420);
    panel2.setLocation(20, 140);
    panel2.setBackground(Color.RED);

//Button
JButton but1= new JButton("1");
JButton but2= new JButton("2");
JButton but3= new JButton("3");
JButton but4= new JButton("4");
JButton but5= new JButton("5");
JButton but6= new JButton("6");
JButton but7= new JButton("7");
JButton but8= new JButton("8");
JButton but9= new JButton("9");
JButton but0= new JButton("0");
JButton butadd= new JButton("+");
JButton butsub= new JButton("-");
JButton butmulti= new JButton("*"); 
JButton butdiv= new JButton("/");
JButton buteq= new JButton("=");
JButton butclear= new JButton("C");

//Button Layout
    but1.setBounds(10, 81, 89, 23);
    but2.setBounds(126, 81, 89, 23);
    but3.setBounds(225, 81, 89, 23);
    but4.setBounds(10, 115, 89, 23);
    but5.setBounds(126, 115, 89, 23);
    but6.setBounds(225, 115, 89, 23);
    but7.setBounds(10, 149, 89, 23);
    but8.setBounds(126, 149, 89, 23);
    but9.setBounds(225, 149, 89, 23);
    but0.setBounds(126, 183, 89, 23);
    butadd.setBounds(126, 215, 89, 23);
    butsub.setBounds(10, 215, 89, 23);
    butmulti.setBounds(225, 183, 89, 23);
    butdiv.setBounds(225, 149, 89, 23);
    buteq.setBounds(126, 183, 89, 23);
    butclear.setBounds(10, 183, 89, 23);

//Add Panel to Frame
frame.add(panel);
frame.add(panel2);

//Add Buttons to Panel2
panel2.add(but1);
panel2.add(but2);
panel2.add(but3);
panel2.add(but4);
panel2.add(but5);
panel2.add(but6);
panel2.add(but7);
panel2.add(but8);
panel2.add(but9);
panel2.add(butadd);
panel2.add(butsub);
panel2.add(butmulti);
panel2.add(butdiv);
panel2.add(buteq);
panel2.add(butclear);

    }

    }

1 个答案:

答案 0 :(得分:1)

将JFrame设置为可调整大小。当它弹出空白时,调整大小。内容突然出现了吗?

如果是这样,您就会遇到刷新问题。实现组件侦听器接口,使用JFrame.addComponentListener添加它,并在componentShown()处理程序中调用JFrame.validate()。

更新:

我测试了你的代码。将setVisible调用移至调用后,添加所有面板和按钮以修复刷新问题。有布局问题,使用BorderLayout和GridBagLayout的组合来修复。