2013-07-19 51 views
0

我有一個JFrame,它包含一個工作按鈕和一個標籤。該程序工作正常,當我點擊按鈕,我得到一個彈出消息,說「開始」。但是,如果我嘗試添加一個JTextField,那麼當我運行該程序時,該框架是空的,用於字段,按鈕或標籤。JTextField清除Jframe

沒有字段的工作代碼如下。

JFrame frame = new JFrame("Test"); 
    frame.setSize(750,300); 
    frame.setLocationRelativeTo(null); 
    frame.setResizable(false); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 



    JPanel panel = new JPanel(false); 



    JLabel label = new JLabel("The Game."); 



    JButton button = new JButton("Start"); 
    button.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
      //Runs this code when button is pressed 
      JOptionPane.showMessageDialog(null, "Starting"); 
     } 
    } 
      ); 
    button.setContentAreaFilled(true); 
    button.setEnabled(true); 
    button.setToolTipText("Starts"); 
    button.setVisible(true); 






    frame.add(panel); 
    panel.add(label); 
    panel.add(button); 

代碼字段不起作用在下面。

JFrame frame = new JFrame("Test"); 
    frame.setSize(750,300); 
    frame.setLocationRelativeTo(null); 
    frame.setResizable(false); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 



    JPanel panel = new JPanel(false); 



    JLabel label = new JLabel("The Game."); 



    JButton button = new JButton("Start"); 
    button.addActionListener(new ActionListener() 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
      //Runs this code when button is pressed 
      JOptionPane.showMessageDialog(null, "Starting"); 
     } 
    } 
      ); 
    button.setContentAreaFilled(true); 
    button.setEnabled(true); 
    button.setToolTipText("Starts"); 
    button.setVisible(true); 







    JTextField field = new JTextField("test", 20); 
    field.setEnabled(true); 
    field.setVisible(true); 







    frame.add(panel); 
    panel.add(label); 
    panel.add(button); 




    panel.add(field); 

所以不知何故,這4行代碼清除幀。

+0

我看到一個類似的問題,雖然似乎沒有工作。 – user1836262

+0

他們都不適合我,但我想我知道什麼是錯的。 – Andy

回答

2

在最後一行調用frame.setVisible(true)(添加所有組件後)。您在添加組件之前調用它。幀

2

,如果你把

 frame.pack(); or 
frame.setVisible(true); 

在它的工作代碼的底部。

2

嘗試喲移動您的:frame.setVisible(true);作爲最後的聲明。

1

看來你從未框架末可見。爲此,只需將frame.setVisible(true);結尾。

2

沒有必要明確地設置按鈕的可視屬性爲true。將你的面板添加到你的框架的容器中,並簡單地將名稱的可見屬性設置爲true。

frame.getContentPane().add(panel); 
.... 
frame.setVisible(true);