2013-08-19 95 views
0

我學習Java的幾天,我正在嘗試構建一個簡單的計算器。Netbeans中非常簡單的Java程序的不可靠編譯

當我在Netbeans中運行代碼時,可能有30%的時間工作得很好。窗口彈出我的按鈕。另外70%的時間只是一個空白的JFrame彈出。

在這兩種情況下,NetBeans的輸出選項卡告訴我 BUILD SUCCESSFUL(總時間: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

設置的JFrame之後才能調整大小。當它彈出空白時,調整它的大小。內容突然出現了嗎?

如果是這樣,你有刷新問題。實現組件偵聽器接口,使用JFrame.addComponentListener添加它,並在componentShown()處理程序中調用JFrame.validate()。

更新:

我測試了你的代碼。將setVisible調用移至調用後添加所有面板和按鈕以修復刷新問題。有佈局問題,使用BorderLayout和GridBagLayout的組合來修復。