如何在 JFrame 中切换场景

How to switch through scenes in JFrame

大家好,我想知道。例如,我怎样才能使我的主要 window 以及当用户键入某些内容或单击某些内容时场景发生变化,我的意思是一切都有可能出现新图像新内容但无需更改 window 或至少不必更改弹出一个新的,必须关闭另一个。然后,例如,如果他在新 window 上单击某些内容,他将返回到主页面。我是 JFrame 的新手。谢谢你的时间。 编辑:这是我的代码(测试 JFrame 代码)

public class ActionListenerTest extends JFrame {

private static final long serialVersionUID = 1L;

public ActionListenerTest(){
    super("Yeah");
    setLayout(new FlowLayout());
    setSize(800,800);
    setVisible(true);
    setResizable(false);
    setLocationRelativeTo(null);


    ImageIcon image=new ImageIcon (getClass().getResource("FileName2.png"));
    JPanel p =new JPanel(new GridBagLayout());
    JPanel p2 =new JPanel(new GridBagLayout());
    JLabel lbl= new JLabel(image);
    JButton b=new JButton("Button Test");
    JButton b2=new JButton("Button Test 2");
    lbl.addMouseListener(new MouseListener() {

        @Override
        public void mouseReleased(MouseEvent e) {
            JOptionPane.showMessageDialog(null, "Men... you weak..","WOOOOO",JOptionPane.PLAIN_MESSAGE);
        }

        @Override
        public void mousePressed(MouseEvent e) {
            JDialog d=new JDialog();
            d.setLocationRelativeTo(null);
            d.setSize(300,300);
            d.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
            d.setTitle("Dialog TEST");
            d.setVisible(true);
            JButton test=new JButton("TESTING");
            JPanel testP= new JPanel();
            testP.add(test);
            d.add(testP, BorderLayout.WEST);
        }

        @Override
        public void mouseExited(MouseEvent e) {

        }

        @Override
        public void mouseEntered(MouseEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void mouseClicked(MouseEvent e) {

        }
    });
    b.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(null, "Hey wanna hang out sometime?","WOOOOO",JOptionPane.PLAIN_MESSAGE);
        }
    });


    GridBagConstraints gbc = new GridBagConstraints();
    gbc.insets=new Insets(150,20,30,20);
    gbc.gridx=3;
    gbc.gridy=2;
    p.add(b, gbc);
    gbc.gridx=3;
    gbc.gridy=3;
    p.add(b2, gbc);
    gbc.gridx=15;
    gbc.gridy=15;
    p2.add(lbl, gbc);
    add(p2, BorderLayout.SOUTH);
    add(p, BorderLayout.NORTH);
}
public static void main(String[] args){
    ActionListenerTest a = new ActionListenerTest();
       a.setVisible(true);
}
}

在数组中使用 JPanel 并相应地设置它们的可见性。

你需要的是SWING - CardLayout, Example。欢迎您!

如果您需要经常更换面板或想自己动手。我建议您在 JFrame(默认情况下)上创建一组面板集 BorderLayout,然后在按钮侦听器中相应地交换面板。为了流畅的外观,所有面板边界应该相同。