Java ActionListener可以';t引用公共类中的数组?
为什么Java ActionListener可以';t引用公共类中的数组?,java,swing,actionlistener,jradiobutton,Java,Swing,Actionlistener,Jradiobutton,为什么public void actionPerformed(ActionEvent事件),colorButton[]突出显示为找不到符号或变量 如何调试它?我正试图使public void actionPerformed(ActionEvent事件) import javax.swing.*; 导入java.awt.*; 导入java.awt.event.*; 公共类颜色选项面板扩展JPanel{ 私有最终整数宽度=350,高度=100,字体大小=20; 私有最终整数颜色=5; 私有颜色[]颜
public void actionPerformed(ActionEvent事件),colorButton[]
突出显示为找不到符号或变量
如何调试它?我正试图使public void actionPerformed(ActionEvent事件)
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
公共类颜色选项面板扩展JPanel{
私有最终整数宽度=350,高度=100,字体大小=20;
私有最终整数颜色=5;
私有颜色[]颜色=新颜色[NUM_颜色];
专用JLabel标题;
私有JRadioButton[]colorButton=新JRadioButton[color.length];
// ------------------------------------------------------------------
//设置顶部带有标签和一组单选按钮的面板
//用于控制面板的背景色。
// ------------------------------------------------------------------
公共颜色选项面板()
{
//设置标题和颜色
heading=newjlabel(“选择背景色!”);
heading.setFont(新字体(“Helvetica”,Font.BOLD,Font_SIZE));
颜色[0]=颜色为黄色;
颜色[1]=color.cyan;
颜色[2]=颜色为红色;
颜色[3]=颜色为绿色;
颜色[4]=颜色为洋红色;
colorButton[0]=新的JRadioButton(“黄色”,true);
colorButton[1]=新的JRadioButton(“青色”);
colorButton[2]=新的JRadioButton(“红色”);
colorButton[3]=新的JRadioButton(“绿色”);
colorButton[4]=新的JRadioButton(“洋红色”);
//实例化ButtonGroup对象和ColorListener对象
ButtonGroup=新建ButtonGroup();
ColorListener=新的ColorListener();
对于(int i=0;i您没有在actionPerformed()
方法中初始化i
。请注意
colorButton
是ColorOptionsPanel
ColorListener
位于ColorOptionsPanel
的外部,因此只能访问ColorOptionsPanel的公共成员
您可以将数组colorButton
的每个元素作为参数传递给ColorListener
类的构造函数:
private class ColorListener implements ActionListener
{
private JRadioButton rdoButton;
public ColorListener(JRadioButton rdoButton)
{
this.rdoButton = rdoButton;
}
@Override
public void actionPerformed(ActionEvent event)
{
Object source = event.getSource();
if(source == rdoButton) //...
}
}
然后你可以像这样使用它:
ColorListener listener = new ColorListener(colorButton[i]);
colorButton[i].addActionListener(listener);
或者,您也可以使用ActionCommand
(请参阅).由于ColorListener
是私有的,因此从外部的任何地方都看不到它,所以只需将其更改为ColorOptions Panel
类的嵌套类。这样,ColorOptions Panel
的私有字段将从ColorListener
中可见
public class ColorOptionsPanel extends JPanel {
private JRadioButton [] colorButton= new JRadioButton[color.length];
//....
private class ColorListener implements ActionListener{
// --------------------------------------------------------
// Updates the background color of the panel based on
// which radio button is selected.
// --------------------------------------------------------
public void actionPerformed (ActionEvent event){
Object source = event.getSource();
if (source==colorButton[i]){setBackground(colorButton[i]);}
}
}
我尝试将实例化器colorButton和颜色数组更改为public,但它仍然声明“找不到符号”varaible colorButton
public class ColorOptionsPanel extends JPanel {
private JRadioButton [] colorButton= new JRadioButton[color.length];
//....
private class ColorListener implements ActionListener{
// --------------------------------------------------------
// Updates the background color of the panel based on
// which radio button is selected.
// --------------------------------------------------------
public void actionPerformed (ActionEvent event){
Object source = event.getSource();
if (source==colorButton[i]){setBackground(colorButton[i]);}
}
}