Имеется массив кнопок
public GUIBoard(int boardSize){
_setBoardSize = boardSize;
setLayout(new GridLayout(_setBoardSize, _setBoardSize));
_cellBtn = new JButton[_setBoardSize*_setBoardSize];
for(i=0; i<(_setBoardSize*_setBoardSize); i++){
_cellBtn[i] = new JButton("x");
_cellBtn[i].addActionListener(new MineListener());
add(_cellBtn[i]);
}
}
Каким образом можно отслеживать все кнопки? Прописывать каждую по отдельности? Или что то нужно менять.
Идея сделать поле как в игре MineSweeper.
Если я не в правильном направлении дайте пожалуйста краткое обьяснение и если можно ссылочки.
Java только учу, по этому ссылки на сложные обьяснения могут сильно замедлить обучение.
Здравствуйте, Аноним, Вы писали:
А>Имеется массив кнопок
А>А> public GUIBoard(int boardSize){
А> _setBoardSize = boardSize;
А> setLayout(new GridLayout(_setBoardSize, _setBoardSize));
А> _cellBtn = new JButton[_setBoardSize*_setBoardSize];
А> for(i=0; i<(_setBoardSize*_setBoardSize); i++){
А> _cellBtn[i] = new JButton("x");
А> _cellBtn[i].addActionListener(new MineListener());
А> add(_cellBtn[i]);
А> }
А> }
А>
А>Каким образом можно отслеживать все кнопки? Прописывать каждую по отдельности? Или что то нужно менять.
А>Идея сделать поле как в игре MineSweeper.
А>Если я не в правильном направлении дайте пожалуйста краткое обьяснение и если можно ссылочки.
А>Java только учу, по этому ссылки на сложные обьяснения могут сильно замедлить обучение.
Есть такой вариант, но не уверен что он лучший
private class MineListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
for(i=0; i<(_setBoardSize*_setBoardSize); i++)
if(e.getSource()==_cellBtn[i])
_cellBtn[i].setText("0");
}
}
Здравствуйте, <Аноним>, Вы писали:
А>Каким образом можно отслеживать все кнопки? Прописывать каждую по отдельности? Или что то нужно менять.
А>Идея сделать поле как в игре MineSweeper.
Не совсем понял (или совсем не понял), что Вам надо. Если вы хотите отслеживать состояние каждой кнопки (открыта, флаг или еще что-нибудь), то просто повесьте ActionListener (он у Вас уже есть) и по совершению действия помечайте в каком-нибудь внутреннем массиве состояние кнопки. Как вариант, сделать JMyButton, который еще помимо того, что это будет JButton, хранить еще и состояния свои. Может, можно на JComponent в свингах объект повесить (я свинга не знаю)?
... << RSDN@Home 1.2.0 alpha rev. 669>>
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>Есть такой вариант, но не уверен что он лучший
А>А> private class MineListener implements ActionListener{
А> public void actionPerformed(ActionEvent e) {
А> for(i=0; i<(_setBoardSize*_setBoardSize); i++)
А> if(e.getSource()==_cellBtn[i])
А> _cellBtn[i].setText("0");
А> }
А> }
А>
Угу... А можно вот так:
private class MineListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
((JButton) e.getSource()).setText("0");
}
}
Здравствуйте, leska, Вы писали:
L>Угу... А можно вот так:
L>L> private class MineListener implements ActionListener{
L> public void actionPerformed(ActionEvent e) {
L> ((JButton) e.getSource()).setText("0");
L> }
L> }
L>
Спасибо, именно это и нужно.