繁体   English   中英

JTextField清除Jframe

[英]JTextField clears Jframe

我有一个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);

因此,以某种方式,这四行代码清除了框架。

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

如果你把

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

在代码的底部。

尝试移动您的: frame.setVisible(true); 作为最后的陈述。

移动

frame.setVisible(true);

作为最后一个电话。 要了解更多信息,请检查下面的链接。

为什么在添加组件之前不应该调用setVisible(true)?

无需将button的visible属性显式设置为true。 将面板添加到框架的Container中,然后在最后简单地将名望的visible属性设置为true。

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

看来您永远都不会在最后看到框架。 为此,只需放入frame.setVisible(true); 在末尾。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM