单击该面板时如何在面板上设置新的背景颜色?
How to set new background color on a panel when that panel is clicked?
如标题所示,我正在尝试在单击该面板时为 10 个面板中的其中一个分配新颜色。到目前为止,代码如下所示。
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 才能从内部 class 引用它。那我该怎么做呢?
不需要数组。该事件包含对生成该事件的组件的引用:
public void mouseClicked(MouseEvent e)
{
Component panel = e.getComponent();
panel.setBackground(col3);
}
如标题所示,我正在尝试在单击该面板时为 10 个面板中的其中一个分配新颜色。到目前为止,代码如下所示。
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 才能从内部 class 引用它。那我该怎么做呢?
不需要数组。该事件包含对生成该事件的组件的引用:
public void mouseClicked(MouseEvent e)
{
Component panel = e.getComponent();
panel.setBackground(col3);
}