Java 从其他类添加JPanel
我正在尝试将一个简单的Java 从其他类添加JPanel,java,swing,Java,Swing,我正在尝试将一个简单的JPanel从一个不同的类添加到GUI中,这个类只有一个JButton和一个JTextArea 我在swing应用程序中使用IntelliJ IDEA,没有错误。但是,JPanel根本不显示 import javax.swing.*; import java.awt.*; import java.awt.event.ContainerAdapter; import java.awt.event.ContainerEvent; public class GUI { priv
JPanel
从一个不同的类添加到GUI中,这个类只有一个JButton
和一个JTextArea
我在swing应用程序中使用IntelliJ IDEA,没有错误。但是,JPanel
根本不显示
import javax.swing.*;
import java.awt.*;
import java.awt.event.ContainerAdapter;
import java.awt.event.ContainerEvent;
public class GUI {
private JPanel mainPanel;
private JPanel mainInner;
public GUI() {
mainPanel.addContainerListener(new ContainerAdapter() {
@Override
public void componentAdded(ContainerEvent e) {
super.componentAdded(e);
System.out.println("component Added");
}
});
}
public void start() {
JFrame frame = new JFrame("GUI");
frame.setContentPane(new GUI().mainPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
InnerPanel inner = new InnerPanel();
mainInner = inner.getMainInner();
inner.setLayout(new BorderLayout());
mainPanel.setLayout(new BorderLayout());
mainPanel.add(mainInner, BorderLayout.CENTER);
mainPanel.revalidate();
mainPanel.repaint();
frame.pack();
frame.setVisible(true);
}
}
组件侦听器显示组件已添加,但未显示。您忘记将
主面板添加到框架中了:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ContainerAdapter;
import java.awt.event.ContainerEvent;
public class GUI {
private JPanel mainPanel;
private JPanel mainInner;
public GUI() {
mainPanel.addContainerListener(new ContainerAdapter() {
@Override
public void componentAdded(ContainerEvent e) {
super.componentAdded(e);
System.out.println("component Added");
}
});
}
public void start() {
JFrame frame = new JFrame("GUI");
frame.setContentPane(new GUI().mainPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
InnerPanel inner = new InnerPanel();
mainInner = inner.getMainInner();
inner.setLayout(new BorderLayout());
mainPanel.setLayout(new BorderLayout());
mainPanel.add(mainInner, BorderLayout.CENTER);
mainPanel.revalidate();
mainPanel.repaint();
frame.pack();
frame.setVisible(true);
}
}
frame.add(mainPanel);
组件通常会在GUI出现之前添加到GUI中。您可以使用CardLayout
来确保在用户需要它们之前它们不可见。一般提示:为了更快地获得更好的帮助,请添加或。无法运行代码。缺少类的InnerPanel。