单击该面板时如何在面板上设置新的背景颜色?

问题描述 投票:0回答:1

就像标题所说的那样,当点击该面板时,我正在尝试为10个面板中的1个分配新颜色。到目前为止代码看起来像这样。

public void setBoard()
{

    for(int i = 0; i < NUM; i++) {
        panel[i] = new JPanel();
        panel1.add(panel[i]);
        panel[i].setBackground(col1);
        panel[i].addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
            panel[i].setBackground(col3);
            }
        });

    }

    for(int y = 0; y < bombs; y++) {
        panel[randomNum()].setBackground(col2);
    }

}

panel1是所有面板所在的整体容器。

使用此代码,我收到错误消息,即本地变量i必须是final才能从内部类引用它。那我该怎么做?

java swing jpanel mouselistener
1个回答
0
投票

不需要阵列。该事件包含对生成事件的组件的引用:

public void mouseClicked(MouseEvent e) 
{
    Component panel = e.getComponent();
    panel.setBackground(col3);
}
© www.soinside.com 2019 - 2024. All rights reserved.