我有一個類,叫做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