我现在正在从事一个项目,并且正在尝试一些新代码来提高程序效率。我在想一个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

    }
}


预期:工作。
但是自然无法编译并崩溃。

最佳答案

因为您尚未键入列表的声明。

尝试这个:

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

关于java - 由JButton组成的ArrayList。但不能按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56239593/

10-11 22:56
查看更多