2012-03-04 2 views
1

У меня этот 2D JButton массив (цвет белый), и я хочу сделать, когда я нажимаю на квадрат, он превратится в оранжевый. Когда я нажимаю другой квадрат, этот квадрат становится оранжевым, но первый квадрат, который я нажал, вернется к его нормальному белому цвету. Как мне это сделать, если все квадраты не превратятся в апельсин?2D Button Array ActionListener, изменение цвета?

Вот визуализация: enter image description here

Btw, когда я нажимаю на квадраты с цифрами, их цвета не меняются, думать о них, как, как setEnabled(false) кнопок. Я уже знаю, как менять цвета кнопок, я просто хочу знать, как цвет передается по квадрату после квадрата.

Спасибо всем, кто может помочь!

Редактировать: Моя «попытка», но она делает все моизначными кнопками оранжевого цвета.

button[i][j].addActionListener(new ActionListener() { 

    public void actionPerformed(ActionEvent e){ 
     for(int i = 0; i < button.length; i++) 
      for(int j = 0; j < button.length; j++){ 
       if(g.gameBoard[i][j] == null){ 
        //must find the position where the user clicks and make it orange 
        button[i][j].setBackground(Color.ORANGE); 
       } 
      } 
     } 
}); 
+1

[Что вы пробовали] (http://mattgemmell.com/2008/12/08/what-have-you-tried/)? И где именно вы застряли? Тем не менее, для моих денег, если кнопки не имеют собственного «действия», кроме поворота цветов, я бы использовал JLabels и MouseListener, но вам нужно было бы запомнить, чтобы непрозрачное свойство JLabel было true, чтобы они рисовали их цвет фона. –

+2

вы можете использовать массивы JToggleButtons, для лучшей помощи скорее отредактируйте свое сообщение с помощью [SSCCE] (http://sscce.org/) – mKorbel

+0

@HovercraftFullOfEels Я попытался создать, например, JButton в своем actionListener: 'ae.getSource() instanceof JButton', но при этом все мои кнопки становятся оранжевыми, когда я их нажимаю. – alicedimarco

ответ

3

вы можете использовать JToggleButton и поместить их в ButtonGroup, так что вы можете рассматривать их как группу и установите цвет активированного один.

P.S. я буду поддерживать контакт с этой нитью в течение следующих 24 часов, если возникнут какие-либо вопросы, я попытаюсь объяснить больше.

+0

Спасибо! Я попробую это сегодня вечером. – alicedimarco

+0

Прохладный! Это сработало! Большое спасибо! Я больше не планирую менять цвет на оранжевый :) – alicedimarco

-1
if(e.getSource()== null) 
{ 
    //must find the position where the user clicks and make it orange 
    button[i][j].setBackground(Color.ORANGE); 
} 

Попробуйте этот выше код в общедоступном действии voidPerformed (ActionEvent e).

Смежные вопросы