Java 为什么JButtons不起作用?
我正在制作游戏《吃豆人》,如果你被怪物杀死,它会带你到一个问题面板 所以我问了一些问题,我有一些选择按钮,比如A,B,C等等 但当你点击按钮时,终端上会显示一系列错误…问题是什么?我如何解决它Java 为什么JButtons不起作用?,java,swing,jpanel,jbutton,Java,Swing,Jpanel,Jbutton,我正在制作游戏《吃豆人》,如果你被怪物杀死,它会带你到一个问题面板 所以我问了一些问题,我有一些选择按钮,比如A,B,C等等 但当你点击按钮时,终端上会显示一系列错误…问题是什么?我如何解决它 public class QuestionPanel extends JPanel { JRadioButton aButt, bButt, cButt, dButt, eButt; // buttons for the different colors the user can choo
public class QuestionPanel extends JPanel {
JRadioButton aButt, bButt, cButt, dButt, eButt; // buttons for the different colors the user can choose.
int fontsize = 15;
int ans = -1;
int rand;
MyPanel panel;
public QuestionPanel() {
panel = new MyPanel();
this.add(panel);
}
class MyPanel extends JPanel
{
UserPanel user; // used for all controls on the left
TextPanel text; // jtextarea for the quotation
public MyPanel()
{
this.setLayout(new GridLayout(0, 2));
user = new UserPanel();
text = new TextPanel();
this.add(user);
this.add(text);
}
// User panel has Jradiobutton, Jbutton, and scroll bar
class UserPanel extends JPanel implements ActionListener, AdjustmentListener // this is for the buttons and the scroll bar
{
JButton randbutton; // this is the random button
RadioButton radioB;
JScrollBar size; // size of the jScrollBar
public UserPanel()
{
setLayout(new GridLayout(3, 0));
setBackground(Color.lightGray);
randbutton = new JButton("PRESS FOR RANDOM QUESTION"); // random quote button
randbutton.addActionListener(this);
this.add(randbutton);
radioB = new RadioButton();
this.add(radioB);
size = new JScrollBar(JScrollBar.HORIZONTAL, 15, 1, 10, 20); // size of the scroll bar
size.addAdjustmentListener(this); // adding the scroll bar
this.add(size);
}
public void adjustmentValueChanged(AdjustmentEvent e) // this is for the size of the scroll bar
{
randommove = false;
fontsize = e.getValue(); // get the value of the scroll bar depending where you keep it or turn it
text.repaint();
}
// seperate class for radio button to allow three buttons
// next to each other
class RadioButton extends JPanel implements ActionListener
{
ButtonGroup answers; // what color it is
JButton a,b,c,d;
public RadioButton()
{
a = new JButton("A"); // A BUTTON
a.addActionListener(this);
this.add(a);
b = new JButton("B"); //b button
b.addActionListener(this);
this.add(b);
c = new JButton("C");
c.addActionListener(this);
this.add(c);
d = new JButton("D");
d.addActionListener(this);
this.add(d);
}
public void actionPerformed(ActionEvent e)
{
randommove = false;
String command = e.getActionCommand();
if(rand == 0 && command.equals("A"))
{
cards.show(c,"Game");
}
else
{
cards.show(c,"Wrong");
System.out.println("hello");
}
if(rand == 1 && command.equals("B"))
{
cards.show(c,"Game");
}
else
{
cards.show(c,"Wrong");
System.out.println("hello");
}
if(rand == 2 && command.equals("D"))
{
cards.show(c,"Game");
}
else
{
cards.show(c,"Wrong");
System.out.println("hello");
}
if(rand == 3 && command.equals("B"))
{
cards.show(c,"Game");
}
else{
cards.show(c,"Wrong");
System.out.println("hello");
}
text.repaint();
}
}
public void actionPerformed(ActionEvent e)
{
randommove = true;
text.repaint();
}
}
您实际上并没有设置按钮的操作命令,您只是设置文本 尝试在action listener中访问action命令时,值为
null
您需要调用以实际设置,那么,操作命令请投入更多的精力,例如显示输出并删除代码中所有不重要的部分。没有声明名为
cards
的变量,但您尝试调用actionPerformed
中的一个变量。