如何使用 ActionListener 使 JPanel 可见

问题描述

我试图通过单击 JButton 使第一个 JPanel 消失而第二个 JPanel 可见。 到目前为止,我只显示第一个 JPanel,单击 JButton 后,框架变空。 我也尝试用组合来做到这一点,所以我不必扩展类。所以我对如何理解不好 组合作品可能是问题所在。我研究了很多,但找不到合适的解决方案。

第一个 JPanel 类:

import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;

public class Panel1 {

JPanel firstscreenpanel = new JPanel();
JButton jButton1 = new JButton();
    
Panel1() {
    
    jButton1.setBounds(300,300,400,200);
    jButton1.setBackground(Color.BLACK);
    jButton1.setVisible(true);
    jButton1.addActionListener(new ActionListener() {

    Panel2 test = new Panel2();
            
    public void actionPerformed(ActionEvent e) {
            
        
            firstscreenpanel.setVisible(false); 
            test.secondscreenpanel.setVisible(true);
            
            
            }
    });
    
    
}

public Component panelone() {
    
    firstscreenpanel.setSize(1280,1024);
    firstscreenpanel.setLayout(null);
    firstscreenpanel.setBackground(Color.BLUE);
    firstscreenpanel.add(jButton1);
    firstscreenpanel.setVisible(true);
    return firstscreenpanel;
            
    }

}

第二个 JPanel 类:

import java.awt.Color;
import java.awt.Component;
import javax.swing.JButton;
import javax.swing.JPanel;

public class Panel2 {

public JPanel secondscreenpanel = new JPanel();
public JButton jButton2 = new JButton();



Panel2() {
    
    jButton2.setBounds(100,100,200);
    jButton2.setBackground(Color.BLACK);
    jButton2.setVisible(true);
            
}
    
public Component paneltwo() {
    
    secondscreenpanel.setSize(1280,1024);
    secondscreenpanel.setLayout(null);
    secondscreenpanel.add(jButton2);
    secondscreenpanel.setBackground(Color.RED);
    secondscreenpanel.setVisible(false);
    return secondscreenpanel;
            
    }
    }

JFrame 类:

import javax.swing.JFrame;

public class Frame1 {


public JFrame frame1 = new JFrame();
Panel1 panel1 = new Panel1();
Panel2 panel2 = new Panel2();

Frame1() {
    
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame1.setState(JFrame.MAXIMIZED_BOTH);
    frame1.setSize(1280,1024);
    frame1.setLayout(null);
    frame1.add(panel1.panelone());
    frame1.add(panel2.paneltwo());
    frame1.setVisible(true);
    
            
    }
    }

主类:

    public class MainClass {

        
    private void showGUI() {

    Frame1 jframe = new Frame1();
                        
    }
    
    public static void main(String[] args) {
        
        final MainClass main = new MainClass();
        
        javax.swing.SwingUtilities.invokeLater(new Runnable()

          {
            public void run() {
                main.showGUI();

            }
        
         });
        
      }

        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)