所有,我是Java的新手,我正在研究Java教科书上的实验12,从Java(Ed.5)开始。
在编写构造函数的代码之后,我创建了一个构建面板并向其添加一些单选按钮的方法。我已将这些单选按钮注册到名为RadioButtonListener的Action Listener。然后我为RadioButtonListener写了一个内部类。
这是问题,因为我使用getSource()方法来确定单击了哪个按钮,编译器无法识别我指示的按钮。
这是我的编码:
private void buildBottomPanel()
{
bottomPanel = new JPanel();
JRadioButton greenButton = new JRadioButton("Green");
JRadioButton blueButton = new JRadioButton("Blue");
JRadioButton cyanButton = new JRadioButton("Cyan");
ButtonGroup bottomButtonGroup = new ButtonGroup();
bottomButtonGroup.add(greenButton);
bottomButtonGroup.add(blueButton);
bottomButtonGroup.add(cyanButton);
greenButton.addActionListener(new RadioButtonListener());
blueButton.addActionListener(new RadioButtonListener());
cyanButton.addActionListener(new RadioButtonListener());
bottomPanel.add(greenButton);
bottomPanel.add(blueButton);
bottomPanel.add(cyanButton);
}
private class RadioButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent f)
{
if (f.getSource() == greenButton)
{
messageLabel.setForeground(Color.GREEN);
}
else if (f.getSource() == blueButton)
{
messageLabel.setForeground(Color.BLUE);
}
else if (f.getSource() == cyanButton)
{
messageLabel.setForeground(Color.CYAN);
}
}
}
答案 0 :(得分:-2)
尝试使用getActionCommand()
代替getSource()
,如下所示: -
if (f.getActionCommand().equals("green"))
{
messageLabel.setForeground(Color.GREEN);
}
或者您可以使用匿名内部类,如下所示: -
greenButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e)
{
messageLabel.setForeground(Color.GREEN);
}
});