2012-04-11 1 views
3

У меня есть 3 кнопки в 3 ряда: зеленый, желтый и красный. Все они находятся в собственном массиве.
Когда я нажимаю зеленую кнопку, остальные 2 кнопки в одной строке должны быть отключены. Но я не уверен, как обращаться с ним с помощью массивов.Доступ к JButton []

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Test extends JFrame implements ActionListener { 

View view = new View(); 
JButton bGreen[] = new JButton[3]; 
JButton bYellow[] = new JButton[3]; 
JButton bRed[] = new JButton[3]; 

public Test() { 
    this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    this.setBounds(300, 100, 500, 400); 
    this.setVisible(true); 
    this.setLayout(new GridLayout(3, 3)); 

    makeButtons(); 
} 

public void makeButtons() { 
    for (int i = 0; i < 3; i++) { 
     bGreen[i] = new JButton("Green"); 
     bYellow[i] = new JButton("Yellow"); 
     bRed[i] = new JButton("Red"); 

     bGreen[i].setBackground(Color.green); 
     bYellow[i].setBackground(Color.yellow); 
     bRed[i].setBackground(Color.red); 

     bGreen[i].addActionListener(this); 
     bYellow[i].addActionListener(this); 
     bRed[i].addActionListener(this); 

     this.add(bGreen[i]); 
     this.add(bYellow[i]); 
     this.add(bRed[i]); 
    } 
} 

@Override 
public void actionPerformed(ActionEvent ae) { 
    Object source = ae.getSource(); 
    if (source == bGreen) // e.g. bGreen[1] 
    { 
     // bYellow[1].setEnabled(false); 
     // bRed[1].setEnabled(false); 
    } 
    if (source == bYellow) // e.g. bYellow[1] 
    { 
     // bGreen[1].setEnabled(false); 
     // bRed[1].setEnabled(false); 
    } 
    // the same with bRed 
} 

public static void main(String[] args) { 
    Test test = new Test(); 
} 
} 
+6

Как использовать JToggleButtons с каждой кнопкой в ​​строке, добавленной к объекту ButtonGroup для этой строки? –

+0

@HovercraftFullOfEels Вы наносите гвоздь на голову +1 :) – fireshadow52

+0

@HovercraftFullOfEels. Как только вы сделаете этот комментарий ответом, я удалю ответ от заполнителя. – mre

ответ

6

Нельзя. Вы будете изобретать колесо. Используйте JToggleButton s и объедините их все в один и тот же ButtonGroup для каждой строки.

Предложение, сделанное компанией @Hovercraft Full Of Eels, является спонтанным (и на самом деле должно быть ответом).

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