切换JPanels时没有出现任何内容

时间:2016-01-22 14:02:29

标签: java jpanel

我是Java的新手,我创建了一个主页和几个按钮,当我单击其中一个按钮时,它将主页面板的可见性设置为false,打开一个新类并将该类Jpanel设置为可见。 / p>

homePanel.setVisible(false);
Goodsin Barcode = new Goodsin();
Goodsin.setVisible(true);

然而,一旦打开新类“Goodsin”,它就不会显示任何按钮或TextFileds。我知道它是打开新类,因为System.out.println打印到控制台但JFrame中没有任何显示,我不知道为什么。

这是我的新课程代码

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Goodsin {

    public JPanel Goodsin;
    public JTextField item1;
    public String code;
    public JButton btn1;

    public Goodsin() {

        System.out.println("TEST");

        Goodsin = new JPanel();
        item1 = new JTextField(10);
        btn1 = new JButton("Look up Barcode");

        Goodsin.setVisible(true);

        Goodsin.add(item1);
        item1.setSize(80, 30);

        Goodsin.add(btn1);
        btn1.setSize(80, 30);

    }

    public void getString(String code) {
        System.out.println(code);

    }

}

我确定我没有使用Jpanel做正确的事情或添加文本字段或按钮,但到目前为止我看到的所有答案都有效。

4 个答案:

答案 0 :(得分:1)

我建议你将面板添加到JFrame中。您可以通过从类中扩展JFrame或仅在构造函数中实例化一个来完成此操作。然后,您可以根据需要添加和删除(或设置可见/不可见)。请务必在更改可见性后验证您的JFrame / JPanel。

答案 1 :(得分:1)

尝试做这样的事情:

    Goodsin = new JPanel();
      item1 = new JTextField(10);
      btn1 = new JButton("Look up Barcode");

       item1.setSize(80, 30);
       Goodsin.add(item1);

       btn1.setSize(80, 30);
      Goodsin.add(btn1);

    JFrame frame = new JFrame("JFrame Example");
      Goodsin.setLayout(new FlowLayout());
      frame.add(Goodsin);

答案 2 :(得分:0)

我建议您尝试以下代码:

public class Goodsin extends JFrame{

    public static void main(String[] args) {
        Goodsin ui = new Goodsin();
        JTextField item1 = new JTextField(10);
        JButton btn1 = new JButton("Look up Barcode");
        JPanel centralPanel = new JPanel(new FlowLayout());
        centralPanel.add(item1);
        centralPanel.add(btn1);
        item1.setSize(80, 30);
        btn1.setSize(80, 30);
        ui.add(centralPanel);

        ui.pack();
        ui.setVisible(true);

    }
}

在我的示例中,所有内容都在main方法中完成,但是您仍然可以改进此代码并以更好的方式重构它。

答案 3 :(得分:0)

只需设置Bounds of Goodsin面板或设置尺寸并添加主页框