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