2013-07-19 48 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);