簡體   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