Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从其他类添加JPanel_Java_Swing - Fatal编程技术网

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。