[英]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.