我有一个类,叫做boardGUI,它有64个标签(如棋盘)的列表。每个标签都包含在电路板上的特定磁贴上。JLabel`s财产不`吨更改
List<JLabel> labelList = new ArrayList<>();
在另一类,我正在尝试设置一些这个标签不透明,与setOpaque(true)
方法,每当我点击标签(的mouseClicked方法中)中的一个。
JLabel l1 = boardGUI.labelList.get(1);
l1.setOpaque(true);
的问题是,虽然L1是指在labelList正确的标签(我与调试检查),它不`吨做任何视觉上的变化(在GUI)。
但是,如果我试图设置在boardGUI类标签的不透明度,它的工作。
for (int i=0;i<64;i++)
labelList.get(i).setOpaque(true);
的问题在哪里呢?
这里就是我试图以应用更改类:
public class Controller {
private Board board = new Board();
private BoardGUI boardGUI = new BoardGUI();
public Controller() {
boardGUI.setVisible(true);
boardGUI.addLabelListener(new LabelListener());
}
class LabelListener implements MouseListener{
@Override
public void mouseClicked(MouseEvent arg0) {
JLabel l1 = boardGUI.labelList.get(1);
l1.setOpaque(true);
}
BoardGUI类(有更多的代码,但它是不相关):
public class BoardGUI extends JFrame{
List<JLabel> labelList = new ArrayList<>();
public BoardGUI() {
createView();
}
public void createView() {
createLabels(mainPanel);
}
public void createLabels(JPanel mainPanel) {
int startX = 100;
int startY = 87;
int x = 100;
int y = 87;
int j = 0;
for (int i=0;i<64;i++) {
JLabel label = new JLabel();
label.setBounds(x , y , 62, 62);
labelList.add(label);
mainPanel.add(label);
if ((i == 7*(j+1) +j)) {
x = startX;
y = startY + 62 *(i/7);
j=j+1;
}
else {
x = x+62;
}
}
}
您是否设置了标签的背景颜色? – JensS
你是如何获得包含标签的类的实例的?看起来你可能正在处理包含64个标签的类的不同实例。此外,您的labelList不是静态的,这意味着内存中可能存在多个列表实例。 –
@NaveedKamran。我试图将更改应用于标签的类实际上是GUI的控制器。 '私人BoardGUI boardGUI =新BoardGUI();' – Tudor