Java-从Panel1更改为Panel2

Java-从Panel1更改为Panel2,java,swing,jpanel,Java,Swing,Jpanel,我想创建一个简单的java应用程序,但我遇到了一些问题。 这是我的主要课程: import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Component; import javax.swing.JButton; import java.awt.event.ActionListener; impor

我想创建一个简单的java应用程序,但我遇到了一些问题。 这是我的主要课程:

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Component;

import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class MainWindow {

    private JFrame frame;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MainWindow window = new MainWindow();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public MainWindow() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        frame.getContentPane().add(panel, BorderLayout.CENTER);

        JButton btnNewButton = new JButton("First B");
        panel.add(btnNewButton);
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                SecWindow SW = new SecWindow();
                //-----
            }           
        });                     
    }    
}
第二类:

import javax.swing.JButton;
import javax.swing.JPanel;

public class SecWindow {

    public SecWindow() {
        SecPanel();
    }

    public void SecPanel() {            
        JPanel panel2 = new JPanel();
        JButton btnNewButton_2 = new JButton("Sec B");
        panel2.add(btnNewButton_2);     
    }
}
如何操作:当我按下“
First B
”时,我想删除第一个面板并创建一个新的类
SecWindow()

如何操作:当我按下“First B”时,我想删除第一个面板并创建一个新的类SecWindow()

您应该使用
卡片布局
。CardLayout允许您交换框架中的面板

有关更多信息和工作示例,请阅读上Swing教程的部分

该示例使用一个组合框来交换面板,因此您只需将代码移动到按钮的ActionListener

try{
secWindow secondWindow = new secWindow();
secondWindow.frame.setVisible(true);
window.frame.setVisible(false);
} catch (Exception e) {
                e.printStackTrace();
如何操作:当我按下“First B”时,我想删除第一个面板并创建一个新的类SecWindow()

您应该使用
卡片布局
。CardLayout允许您交换框架中的面板

有关更多信息和工作示例,请阅读上Swing教程的部分

该示例使用一个组合框来交换面板,因此您只需将代码移动到按钮的ActionListener

try{
secWindow secondWindow = new secWindow();
secondWindow.frame.setVisible(true);
window.frame.setVisible(false);
} catch (Exception e) {
                e.printStackTrace();
这将隐藏第一个窗口并显示第二个窗口。 不能完全“删除”包含main方法的对象。你的应用程序将以main方法开始和结束

相反,您可以创建新类并将main方法转移到那个里

这将隐藏第一个窗口并显示第二个窗口。 不能完全“删除”包含main方法的对象。你的应用程序将以main方法开始和结束


相反,您可以创建新类并将main方法转移到那里

现在我有两个错误。First at SecondWindow.frame:我的SecondWindow()类中没有框架。第二个窗口.frame.setVisible(false),var窗口在缅因州是本地的,对。尝试此.frame.setVisible(false)。。。事实上,我的速度比我的大脑快了一点,只要使用camickr的建议,它会好得多,而且它会花我时间在不编码的情况下实现正确的操作…secondWindow.panel2.setVisible(true);-“不工作”面板。设置为可见(假);-现在好了,你还是应该看看camickr的答案,并学会这样做。他在这些方面的经验比我在第二节课上的panel2 global要好,现在没事了,现在我没有sintax错误。。但仍然不工作现在我有两个错误。First at SecondWindow.frame:我的SecondWindow()类中没有框架。第二个窗口.frame.setVisible(false),var窗口在缅因州是本地的,对。尝试此.frame.setVisible(false)。。。事实上,我的速度比我的大脑快了一点,只要使用camickr的建议,它会好得多,而且它会花我时间在不编码的情况下实现正确的操作…secondWindow.panel2.setVisible(true);-“不工作”面板。设置为可见(假);-现在好了,你还是应该看看camickr的答案,并学会这样做。他在这些方面的经验比我在第二节课上的panel2 global要好,现在没事了,现在我没有sintax错误。。但还是不行