Java 切换JPanels时没有显示任何内容

Java 切换JPanels时没有显示任何内容,java,jpanel,Java,Jpanel,我对Java相当陌生,我已经创建了一个主页和几个按钮,当我单击其中一个按钮时,它会将主页面板的可见性设置为false,打开一个新类并将该类Jpanel设置为可见 homePanel.setVisible(false); Goodsin Barcode = new Goodsin(); Goodsin.setVisible(true); 但是,一旦打开新类“Goodsin”,它就不会显示任何按钮或文本文件。我知道它正在以System.out.println打印到控制台的方式打开新类,但是JFra

我对Java相当陌生,我已经创建了一个主页和几个按钮,当我单击其中一个按钮时,它会将主页面板的可见性设置为false,打开一个新类并将该类Jpanel设置为可见

homePanel.setVisible(false);
Goodsin Barcode = new Goodsin();
Goodsin.setVisible(true);
但是,一旦打开新类“Goodsin”,它就不会显示任何按钮或文本文件。我知道它正在以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或添加文本字段或按钮,但到目前为止我看到的所有答案都不起作用。

我建议您将面板添加到JFrame。您可以通过从类扩展JFrame或在构造函数中实例化JFrame来实现这一点。然后,您可以根据需要简单地添加和删除(或设置为可见/不可见)。但在更改可见性后,请确保验证JFrame/JPanel。

尝试执行以下操作:

    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);

我建议您尝试以下代码:

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方法中完成的,但是您仍然可以改进此代码并以更好的方式对其进行重构。

只需设置Goodsin面板的边界或设置大小并添加到主页框架中

如何创建名为Goodsin的属性?如果没有添加Goodsin,然后设置它的可见性将毫无意义。我们在主框架中有一个JFrame,当您单击进入Goodsin类时,它仍然可见,但它似乎没有将Panel form Goodsin类添加到JFrame中。它只是返回一个空白的JFrame您是否尝试过使用nameOfJFrame.revalidate()和nameOfJPanel.revalidate()?好的,我在Goodins类中添加了一个新的JFrame,当我单击按钮转到其中的商品时,打开一个新的JFrame并显示我需要的内容,但是如何让它显示在我已经拥有的JFrame中,所以一个新窗口不会打开?只要不添加新的JFrame,就使用您实例化的原始窗口。只需根据需要从中添加/删除JPanel即可。每当我使用JavaSwing制作GUI时,我总是添加一个位于JFrame顶部的“后面板”,然后添加/删除其中的所有内容,这样我就不会意外地接触到JFrame,如果您愿意,也可以这样做。