我正在努力用java swing做一个小游戏。对于初学者来说,欢迎屏幕出现在用户身上,他必须选择游戏的玩家数量。我试图找到一种方法,以便当用户选择4个按钮中的一个时,窗口将关闭,他选择的数字将在main中可用,然后下一个窗口将打开(使用用户选择的数字)。任何提示都会有所帮助。感谢您的时间。 这是我的代码:
Main.java
package projtest1;
public class Main {
public static void main(String[] args)
{
WelcomeScreen ws = new WelcomeScreen();
ws.setVisible(true);
int k = ws.returnChoise();
System.out.println(k);
//MainScreen ms = new MainScreen();
//ms.setVisible(true);
}
}
WelcomeScreen.java
package projtest1;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class WelcomeScreen extends JFrame
{
public int choise=0;
private JLabel firstLabel = new JLabel("Welcome fellas!", JLabel.CENTER);
private JLabel secondLabel = new JLabel("Choose number of players", JLabel.CENTER);
JPanel choisePanel = new JPanel();
private JButton button2 = new JButton("2");
private JButton button3 = new JButton("3");
private JButton button4 = new JButton("4");
private JButton button5 = new JButton("5");
public WelcomeScreen()
{
setTitle("Welcome screen");
setSize(400, 400);
setMinimumSize(new Dimension(400,400));
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout gl = new GridLayout(3, 1);
gl.setHgap(1);
gl.setVgap(2);
setLayout(gl);
add(firstLabel);
add(secondLabel);
choisePanel.setLayout(new FlowLayout());
choisePanel.add(button2);
choisePanel.add(button3);
choisePanel.add(button4);
choisePanel.add(button5);
add(choisePanel);
ClickListener clickListener = new ClickListener();
button2.addActionListener(clickListener);
button3.addActionListener(clickListener);
button4.addActionListener(clickListener);
}
public int returnChoise()
{
return choise;
}
private class ClickListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
String text = e.getActionCommand();
if (text.equals("2"))
{
choise = 2;
System.out.println(choise);
dispose();
}
else if (text.equals("3"))
{
choise = 3;
System.out.println(choise);
dispose();
}
else if (text.equals("4"))
{
choise = 4;
System.out.println(choise);
dispose();
}
else
{
choise = 5;
System.out.println(choise);
dispose();
}
}
}
}
答案 0 :(得分:3)
请勿使用多个JFrame
,而是可以使用专为同一目的而设计的CardLayout
。您可以在不同的视图(面板)之间切换。
CardLayout类管理两个或多个共享相同显示空间的组件(通常是JPanel实例)。
请参阅How to Use CardLayout上的 Swing Tutorial ,并查找Sample examples。