Java 如何使JButton从一个GUI转到另一个GUI?

Java 如何使JButton从一个GUI转到另一个GUI?,java,swing,Java,Swing,我应该做一个打开迷宫的密码。迷宫代码工作正常,但我需要一个“启动屏幕”,它将首先加载,然后打开一个菜单,询问“你想玩吗?”以及是和否选项。我一直在做的是“是”和“否”按钮。当按下“是”时,它应该打开在另一个类中键入的迷宫GUI。有人能帮我写一段代码,上面有一个按钮可以打开第二个类吗 我将EclipseIDE与Java一起使用 编辑:我把启动屏幕的代码放上去了,但我不确定我做的是对的。我对Java非常陌生,非常感谢您的帮助 import javax.swing.ImageIcon; import

我应该做一个打开迷宫的密码。迷宫代码工作正常,但我需要一个“启动屏幕”,它将首先加载,然后打开一个菜单,询问“你想玩吗?”以及是和否选项。我一直在做的是“是”和“否”按钮。当按下“是”时,它应该打开在另一个类中键入的迷宫GUI。有人能帮我写一段代码,上面有一个按钮可以打开第二个类吗

我将EclipseIDE与Java一起使用

编辑:我把启动屏幕的代码放上去了,但我不确定我做的是对的。我对Java非常陌生,非常感谢您的帮助

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

@SuppressWarnings("serial")
public class SplashScreen extends JFrame implements ActionListener {
    Image img =     Toolkit.getDefaultToolkit().getImage("images/splash.png");
    ImageIcon imgicon = new ImageIcon(img);

    public SplashScreen() {
        try {
            setSize(633, 300);
            setLocationRelativeTo(null);
            show();
            Thread.sleep(5000);
            dispose();
            int input = JOptionPane.showConfirmDialog(null, "Welcome     to the Maze Game! Would you like to play?", "Select an Option...",
                    JOptionPane.YES_NO_CANCEL_OPTION);

            // 0=yes, 1=no, 2=cancel
            System.out.println(input);

        } catch (Exception exception) {
            javax.swing.JOptionPane.showMessageDialog((java.awt.Component) null,     "Error" + exception.getMessage(),
                    "Error:", javax.swing.JOptionPane.YES_NO_OPTION);
        }
    }

    public void paint(Graphics g) {
        g.drawImage(img, 0, 0, this);
    }

    public static void main(String[] args) {
        SplashScreen sp = new SplashScreen();
    }

    @Override
    public void actionPerformed(ActionEvent e) {

    }
}

所以我有一个旧的Java项目,我只是想帮你一把。因此,您需要将两个GUI相互连接。按“是”后,您拥有的一个将关闭,我想另一个将出现。 所以,在GUI中,当我右键单击按钮时,转到事件、操作并选择执行的操作,它会将您重定向到源。在那里,我只有以下代码:

     Array a = new Array();
     a.setVisible(true);
     a.setDefaultCloseOperation(Array.DISPOSE_ON_CLOSE);

我希望它能帮助你做一些事情:我想你更愿意把迷宫添加到JPanel上,然后让JPanel占据整个JFrame。这样你就可以替换JPanel了,不需要有多个JFrame。还要确保使用事件调度线程运行GUI,以避免不必要的GUI行为(如下所示)

请参见下面的示例,我创建了一个简单的程序,根据您从JOptionPane中选择的选项显示JPanel one(绿色)或two(蓝色):

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

/**
 * This program has two JPanels - one green and one blue.
 * The JOptionPane controls which JPanel is displayed.
 */
public class Test {
    private JFrame jf;
    private JPanel one;
    private JPanel two;

    /**
     * ALWAYS start a Java GUI from the event-dispatching thread!
     * @param args
     */
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new Test();
            }
        });
    }

    /**
     * An instance of the program is constructed.
     */
    public Test() {
        jf = new JFrame("Test");

        addComponents(jf.getContentPane());
        showOptions();

        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setLocationRelativeTo(null);
        jf.setVisible(true);
        jf.pack();
    }

    /**
     * Add components to the pane of our JFrame.
     * You probably want to set the layout manager.
     * @param pane
     */
    public void addComponents(Container pane) {
        one = new JPanel();
        one.setPreferredSize(new Dimension(100, 100));
        one.setBackground(Color.GREEN);

        two = new JPanel();
        two.setPreferredSize(new Dimension(100, 100));
        two.setBackground(Color.BLUE);

        // We've added the GREEN JPanel - that's it
        pane.add(one);
    }

    /**
     * Show the option pane.
     */
    public void showOptions() {
        int input = JOptionPane.showConfirmDialog(null, "Show the blue JPanel?", "Select an Option...", JOptionPane.YES_NO_CANCEL_OPTION);

        if (input == JOptionPane.YES_OPTION) {
            jf.getContentPane().remove(one); // Removing our default green JPanel
            jf.getContentPane().add(two); // Adding our shiny new blue JPanel
        }
    }
}

我建议你用YES\u NO\u CANCEL\u选项查看JOptionPane我有这个选项,但我不知道如何让按钮做任何事情1)为了更快地获得更好的帮助,添加一个或。2) 请参见3)使用中所示的。这是不正确的。。。数组没有JFrame的方法。。。我不知道你在说什么。考虑删除这一点。我同意,这是毫无意义的。我有一个名为ARARY.java的文件,所以我通过添加那个代码连接到那个文件,然后在点击按钮后重定向到那里。雷伊,把我写下来,我可以给你整个项目不要用神奇的数字:“0”和“1”。使用API提供的变量:
JOptionPane.YES\u选项
JOptionPane.NO\u选项
。非常感谢!我会试试看:)