我目前正在編寫一個程序,其中有28個標籤創建並排列在for循環中的網格中,我想爲每個標籤添加一個mouseListener。我可以爲每個標籤添加一個mouseListener,但是當我嘗試指定標籤號並更改該標籤的邊框顏色時,我得到一個「從內部類訪問局部變量需要聲明爲最終」的錯誤。我明白這個錯誤背後的原因,但是我不能將「labelNum」變量作爲最終變量,因爲它在循環中需要更改。什麼是解決方法?將addMouseListener()用於數組中的每個標籤?
for (int c = 0; c < 7; c++) {
for (int d = 0; d < 4; d++) {
labelNum = c*4+d;
inventorySlotLabels[labelNum] = new JLabel();
inventorySlotLabels[labelNum].setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
inventorySlotLabels[labelNum].setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
inventorySlotLabels[labelNum].setBounds(15+d*40+d*10, 15+c*30+c*10, 40, 30);
inventorySlotLabels[labelNum].setIcon(new javax.swing.ImageIcon(getClass().getResource("Item.png")));
inventorySlotLabels[labelNum].addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
headerLabel.setText("Inventory Slot Clicked");
inventorySlotLabels[labelNum].setBorder(BorderFactory.createLineBorder(Color.WHITE));
}
}
}
}
哇,謝謝,非常感謝!正如你可以告訴我這個東西相當新,但這是非常有益的! – Foundry