JTextField清除Jframe

时间:2013-07-19 03:20:21

标签: java swing user-interface jtextfield

我有一个JFrame,其中包含一个工作按钮和一个标签。该程序工作正常,当我点击按钮时,我收到一条显示“正在启动”的弹出消息。但是如果我尝试添加一个JTextField,当我运行程序时,框架是空白的,用于字段,按钮或标签。

没有该字段的工作代码如下。

    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行代码正在清除帧。

6 个答案:

答案 0 :(得分:2)

在最后一行调用frame.setVisible(true)(添加所有组件后)。您在添加组件之前调用它。框架

答案 1 :(得分:2)

如果你把

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

在代码底部工作。

答案 2 :(得分:2)

尝试移动您的:frame.setVisible(true);作为最后一个声明。

答案 3 :(得分:2)

移动

frame.setVisible(true);

作为最后一次通话。要了解更多信息,请查看以下链接。

Why shouldn't I call setVisible(true) before adding components?

答案 4 :(得分:2)

无需将button的visible属性显式设置为true。将面板添加到框架的Container中,并在结尾处将名称的visible属性设置为true。

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

答案 5 :(得分:1)

似乎你从未在最后看到框架。要做到这一点,只需将frame.setVisible(true);放在最后。