![](/img/trans.png)
[英]How to assign first JLabel background color to the next JLabel since mouse events are void?
[英]How to change JLabel's background color through mouse events?
我有一個帶有9個JLabels
JPanel
,所有這些都是setBackground()
到白色的顏色,我在類中實現了鼠標監聽器接口。 我的目的是當我在JLabel
區域中單擊我的鼠標時,它會將顏色更改為黑色,反之亦然。 這是我第一次使用鼠標事件而且我被卡住了。 我似乎沒有把整個概念說得對。 你能幫助我嗎? 提前致謝! 哦順便說一句,我明白如果我要使用for-loop
,那么這個過程會更容易,但我只是想知道我們是否可以用更難的方式去做。 干杯!
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class TilePanelA extends JPanel implements MouseListener
{
JLabel label1;
JLabel label2;
JLabel label3;
JLabel label4;
JLabel label5;
JLabel label6;
JLabel label7;
JLabel label8;
JLabel label9;
public TilePanelA()
{
this.setLayout(new GridLayout(3, 3));
Dimension labelSize = new Dimension(300, 300);
label1 = new JLabel();
label2 = new JLabel();
label3 = new JLabel();
label4 = new JLabel();
label5 = new JLabel();
label6 = new JLabel();
label7 = new JLabel();
label8 = new JLabel();
label9 = new JLabel();
label1.setPreferredSize(labelSize);
label2.setPreferredSize(labelSize);
label3.setPreferredSize(labelSize);
label4.setPreferredSize(labelSize);
label5.setPreferredSize(labelSize);
label6.setPreferredSize(labelSize);
label7.setPreferredSize(labelSize);
label8.setPreferredSize(labelSize);
label9.setPreferredSize(labelSize);
label1.setBackground(Color.WHITE);
label2.setBackground(Color.WHITE);
label3.setBackground(Color.WHITE);
label4.setBackground(Color.WHITE);
label5.setBackground(Color.WHITE);
label6.setBackground(Color.WHITE);
label7.setBackground(Color.WHITE);
label8.setBackground(Color.WHITE);
label9.setBackground(Color.WHITE);
label1.setOpaque(true);
label2.setOpaque(true);
label3.setOpaque(true);
label4.setOpaque(true);
label5.setOpaque(true);
label6.setOpaque(true);
label7.setOpaque(true);
label8.setOpaque(true);
label9.setOpaque(true);
this.add(label1);
this.add(label2);
this.add(label3);
this.add(label4);
this.add(label5);
this.add(label6);
this.add(label7);
this.add(label8);
this.add(label9);
label1.addMouseListener(this);
label2.addMouseListener(this);
label3.addMouseListener(this);
label4.addMouseListener(this);
label5.addMouseListener(this);
label6.addMouseListener(this);
label7.addMouseListener(this);
label8.addMouseListener(this);
label9.addMouseListener(this);
} // end of constructor
public void mousePressed(MouseEvent e)
{
if (e.getSource() == Color.WHITE)
{
setBackground(Color.BLACK);
} else
{
setBackground(Color.WHITE);
}
}
public void mouseReleased(MouseEvent e)
{
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
public void mouseClicked(MouseEvent e)
{
}
}
e.getSource()
將返回單擊的標簽,而不是該標簽的顏色(在您的示例中,無論如何)
所以,投下一個標簽:
JLabel theLabel = (JLabel) e.getSource();
適當的setBackground:
if (theLabel.getBackground().equals(Color.WHITE)) theLabel.setBackgound(...);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.