Добавление ActionPerformed Array в String Array - PullRequest
0 голосов
/ 16 апреля 2010

Прежде чем вы, ребята, спросите, да, я искал в Интернете ответ, но все, что я нашел, просто оставляет замешательство, и ничего не происходит в последнее время, поэтому вопрос на этих форумах не поможет.

Мои проблемы таковы:

У меня есть массив, который содержит мое имя для меню.

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 (colorArr [i]);

, который установит setForeground () по порядку, но теперь, как мне успешно прикрепить список действий в моем классе к моим menuItems?

мой класс выглядит так

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]);
          }
     }
}

Ответы [ 2 ]

2 голосов
/ 16 апреля 2010

Вы можете добавить цветовой атрибут к вашему действию:

private class FontColorAction implements ActionListener {
     private Color color;
     public FontColorAction (Color color){
          this.color = color;
     }

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

И инициализировать действия так:

 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-классов первая буква в верхнем регистре;)

0 голосов
/ 16 апреля 2010

FontColorAction прослушивает действия над элементами muenu. Я думаю, что у вас проблема в этом цикле:

for(i = 0; i < collorArr.length; i++){
           textarea.setForeground(colorArr[i]);
}

Здесь вы просто устанавливаете цвет на Color.GREEN, потому что это последний элемент в массиве. Если вы объявите i как поле, оно будет работать.

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;
          }

     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...