首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向字符串数组添加ActionPerformed数组

向字符串数组添加ActionPerformed数组
EN

Stack Overflow用户
提问于 2010-04-16 19:40:10
回答 2查看 325关注 0票数 0

在你们问之前,是的,我已经在网上搜索过答案,但我找到的所有东西都是令人困惑的,而且没有什么是最近的,所以在那些论坛上询问不会有真正的帮助。

我的问题是:

我有一个数组,里面有我的名字作为菜单。

代码语言:javascript
复制
String[] fontColor = new String[] {"Red", "Blue", "Green"};

for (int i = 0; i < fontColors.length; i++) {
     JMenuItem fontC = new JMenuItem(fontColors[i]);
     fontC.addActionListener(new fontColorAction());
     changeFontColor.add(fontC);
}

然后,我有一个数组,它将颜色更改保存在一个名为fontColorAction的类中

在那个类中,我有另一个数组,它和我的字符串数组做同样的事情,除了语句中的所有内容都是textarea.setForeground(colorArri);

这将按顺序设置setForeground(),但是现在我如何成功地将类中的操作listner添加到menuItems中呢?

我的类看起来像这样

代码语言:javascript
复制
private class fontColorAction implements ActionListener {
     Color[] colorArr - new Color[] {"Color.RED","Color.BLUE","Color.GREEN"};
     public void actionPerformed(ActionEvent e){
          for(i = 0; i < collorArr.length; i++){
               textarea.setForeground(colorArr[i]);
          }
     }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-16 19:47:05

可以将颜色属性添加到操作中:

代码语言:javascript
复制
private class FontColorAction implements ActionListener {
     private Color color;
     public FontColorAction (Color color){
          this.color = color;
     }

     public void actionPerformed(ActionEvent e){
          textarea.setForeground(color);
     }
}

并像这样初始化操作:

代码语言:javascript
复制
 String[] fontColor = new String[] {"Red", "Blue", "Green"};
 Color[] colorArr - new Color[] {"Color.RED","Color.BLUE","Color.GREEN"};

for (int i = 0; i < fontColors.length; i++) {
     JMenuItem fontC = new JMenuItem(fontColors[i]);
     fontC.addActionListener(new fontColorAction(colorArr [i));
     changeFontColor.add(fontC);
}

另外,按照惯例,java类的第一个字母是大写的;)

票数 2
EN

Stack Overflow用户

发布于 2010-04-16 20:31:39

FontColorAction正在监听对muenu项的操作。我认为你的问题是这个循环:

代码语言:javascript
复制
for(i = 0; i < collorArr.length; i++){
           textarea.setForeground(colorArr[i]);
}

在这里,您只是将颜色设置为Color.GREEN,因为它是数组中的最后一项。如果您将i声明为一个字段,它将起作用。

代码语言:javascript
复制
private class fontColorAction implements ActionListener {
     Color[] colorArr = new Color[] {"Color.RED","Color.BLUE","Color.GREEN"};
     private int colorIndex = 0;
     public void actionPerformed(ActionEvent e){
          textarea.setForeground(colorArr[colorIndex]);
          colorIndex++;
          if(colorIndex==colorArr.length){
              colorIndex = 0;
          }

     }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2652557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档