[英]How do I retain the new background colour of a jlabel after it has been clicked and to make it go back to default on a second click?
我希望我的jLabel組件在單擊時具有不同的背景顏色。 我實際上已經編寫了用於更改背景顏色的代碼,但是我需要它在單擊后保留新的顏色,並在第二次單擊時返回默認值。 我需要幫助。
private void jLabel1MouseEntered(java.awt.event.MouseEvent evt) {
jLabel1.setOpaque(true);
jLabel1.setBackground(Color.orange);
}
private void jLabel1MouseExited(java.awt.event.MouseEvent evt) {
jLabel1.setBackground(Color.white);
jLabel1.setOpaque(false);
}
private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {
jLabel1.setBackground(Color.green);
}
您應該將命令放在Mouse Clicked or pressed event
並且需要將JLable setOpaque
設置為true
否則不會繪制背景,因為對於JLabel
, opaque
的默認值為false
。
即
private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {
jLabel1.setOpaque(true);
jLabel1.setBackground(Color.red);
}
您應該創建一個存儲按鈕狀態的布爾值
boolean isClicked = false;
然后在動作偵聽器中,檢查其值,更新標簽,然后使其與原先相反
if(isClicked)
{
label.setBackground(Color.BLUE);
isClicked = false;
}
else
{
label.setBackground(Color.GRAY);
isClicked = true;
}
單擊后如何保留jlabel的新背景顏色,並在第二次單擊時恢復默認值?
有很多方法可以做到,但最終的概念是相似的。 您只需要在變量中保留新背景色的記錄。
在這種情況下,我使用2個變量來保留顏色oldColor
和newColor
。
class MainPanel extends JPanel{ //Not necessary must be a JPanel. For e.g. only
private Color oldColor;
private Color newColor;
private JLabel lbl;
private JButton btn;
//Constructors, initializations, getters, setters not shown
public void init(){
lbl.setOpaque(true);
btn = new JButton("Click to switch color");
btn.addActionListener(new ButtonHandler());
oldColor = lbl.getBackground(); //can be any color you want
newColor = Color.GREEN; //can be any color you want
}
private class ButtonHandler implements ActionListener{
@Override
public void actionPerformed(ActionEvet e){
if(lbl.getBackground().equals(oldColor))
lbl.setBackground(newColor);
else
lbl.setBackground(oldColor);
}
}
}
如果您有更多顏色,則可以始終使用數組,ArrayList或任何其他合適的數據結構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.