我对编程相当陌生,我一直在尝试编写一个非常简单的菜单,以允许用户按下 JRadioButton 来选择石头、纸、剪刀的模式(1 人或 2 人)。我当前的代码侦听选择了哪个按钮,然后将 int 设置为 1 或 2。然后它采用该数字并使用它来确定在 main 方法中打开哪个窗口,但我不知道我应该做什么,因为我可以'不要将非静态字段引用到静态方法。
我的这段代码设置了模式,然后根据该 int 确定要打开的窗口。
public void actionPerformed(ActionEvent e)
{
if(p1.isSelected())
mode = 1;
else if(p2.isSelected())
mode = 2;
}
public static void main(String args[])
{
RPSMenu window = new RPSMenu();
window.setBounds(300, 300, 400, 100);
window.setDefaultCloseOperation(EXIT_ON_CLOSE);
window.setVisible(true);
if(mode == 1)
{
Rps window1 = new Rps();
window1.setBounds(300, 300, 400, 160);
window1.setDefaultCloseOperation(EXIT_ON_CLOSE);
window1.setVisible(true);
window.setVisible(false);
}
else if(mode == 2)
{
P2RPS window2 = new P2RPS();
window2.setBounds(300, 300, 400, 150);
window2.setDefaultCloseOperation(EXIT_ON_CLOSE);
window2.setVisible(true);
window.setVisible(false);
}
}
如果看到我的完整代码有帮助,就是这样:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class RPSMenu extends JFrame
implements ActionListener
{
/**
*
*/
private static final long serialVersionUID = 1L;
JRadioButton p1, p2;
int mode;
public RPSMenu()
{
p1 = new JRadioButton(" 1 Player ");
p2 = new JRadioButton(" 2 Player ");
ButtonGroup menu = new ButtonGroup();
menu.add(p1);
menu.add(p2);
JButton go = new JButton(" Go! ");
go.addActionListener(this);
Container m = getContentPane();
m.setLayout( new FlowLayout());
m.add(go);
m.add(p1);
m.add(p2);
}
public void actionPerformed(ActionEvent e)
{
if(p1.isSelected())
mode = 1;
else if(p2.isSelected())
mode = 2;
}
public static void main(String args[])
{
RPSMenu window = new RPSMenu();
window.setBounds(300, 300, 400, 100);
window.setDefaultCloseOperation(EXIT_ON_CLOSE);
window.setVisible(true);
if(mode == 1)
{
Rps window1 = new Rps();
window1.setBounds(300, 300, 400, 160);
window1.setDefaultCloseOperation(EXIT_ON_CLOSE);
window1.setVisible(true);
window.setVisible(false);
}
else if(mode == 2)
{
P2RPS window2 = new P2RPS();
window2.setBounds(300, 300, 400, 150);
window2.setDefaultCloseOperation(EXIT_ON_CLOSE);
window2.setVisible(true);
window.setVisible(false);
}
}
}