ArrayList, состоящий из JButtons. Но не работает, как ожидалось - PullRequest
0 голосов
/ 21 мая 2019

Я сейчас нахожусь в проекте и пробую новый код, чтобы сделать мою программу более эффективной.Я думал о ArrayList «кости», которая будет содержать некоторые кнопки (которые должны быть кости).Если я, например, array.add(die1), я предполагаю, что могу ссылаться на объект в массиве вместо фактической кнопки.

Например: я могу установить текст die1 как die1.setText("");. Я также хотел бысделать это непосредственно с объектом в массиве, чтобы я мог использовать циклы, например, array.get(i).setText("");

Но это не работает, что странно.Если я сделаю array.get(0).getClass(), он скажет javax.Swing.JButton, что кажется правильным.

Java 11

ArrayList dice = new ArrayList<JButton>();


private void die1ActionPerformed(java.awt.event.ActionEvent evt) {                                     
    // TODO add your handling code here:
    if (die1.getBackground() == Color.red) {

        dice.remove(dice.indexOf(die1));
        die1.setBackground(Color.green);
    }
    else {
        dice.add(die1);
        die1.setBackground(Color.red);            
    }
}     

private void btnRollActionPerformed(java.awt.event.ActionEvent evt) {                                        
    // TODO add your handling code here:

    for (int i = 0; i < dice.size(); i++) {

        int random = roll();

        dice.get(i).setText(""+random); //This displays as error; uncompilable

    }
}      

Ожидается: работать.Но, естественно, он не может скомпилироваться и вылетает.

1 Ответ

1 голос
/ 21 мая 2019

Потому что вы не ввели объявление своего списка.

Попробуйте это:

List<JButton> dice = new ArrayList<>();
...