Java 如何在单击jlabel后保留其新背景色,并使其在第二次单击时返回默认值?
我希望我的jLabel组件在单击时具有不同的背景颜色。实际上,我已经为背景颜色编写了代码来更改,但我需要它在单击后保留新颜色,并在第二次单击时返回默认值。我需要帮助Java 如何在单击jlabel后保留其新背景色,并使其在第二次单击时返回默认值?,java,swing,Java,Swing,我希望我的jLabel组件在单击时具有不同的背景颜色。实际上,我已经为背景颜色编写了代码来更改,但我需要它在单击后保留新颜色,并在第二次单击时返回默认值。我需要帮助 private void jLabel1MouseEntered(java.awt.event.MouseEvent evt) { jLabel1.setOpaque(true); jLabel1.setBackground(Color.orange); } private void jLabel1Mouse
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);
}
您应该将命令放入
鼠标单击或按下事件中
您需要将JLable setOpaque
设置为true
,否则不会绘制背景,因为opaque
对于JLabel
的默认值为false
i、 e
您应该将命令放入
鼠标单击或按下事件中
您需要将JLable setOpaque
设置为true
,否则不会绘制背景,因为opaque
对于JLabel
的默认值为false
i、 e
您应该创建一个存储按钮状态的布尔值
boolean isClicked = false;
然后在动作监听器中,检查它的值,更新标签,然后使其与原来相反
if(isClicked)
{
label.setBackground(Color.BLUE);
isClicked = false;
}
else
{
label.setBackground(Color.GRAY);
isClicked = true;
}
您应该创建一个存储按钮状态的布尔值
boolean isClicked = false;
然后在动作监听器中,检查它的值,更新标签,然后使其与原来相反
if(isClicked)
{
label.setBackground(Color.BLUE);
isClicked = false;
}
else
{
label.setBackground(Color.GRAY);
isClicked = true;
}
如何在单击jlabel后保留其新背景色,并使其在第二次单击时返回默认值
有很多方法可以做到这一点,但最终的概念是相似的。您只需要在变量中保留新背景颜色的记录
在本例中,我使用了两个变量来保留颜色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或任何其他合适的数据结构
如何在单击jlabel后保留其新背景色,并使其在第二次单击时返回默认值
有很多方法可以做到这一点,但最终的概念是相似的。您只需要在变量中保留新背景颜色的记录
在本例中,我使用了两个变量来保留颜色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或任何其他合适的数据结构。谢谢。事实上我已经做到了。它正在工作,但背景色没有保留。我需要它,这样在第一次点击后,背景颜色会改变,并保持不变,在第二次点击时,它会返回默认值。我想这可以在ActionPerformed活动中完成。谢谢。事实上我已经做到了。它正在工作,但背景色没有保留。我需要它,这样在第一次点击后,背景颜色会改变,并保持不变,在第二次点击时,它会返回默认值。我认为这可以在ActionPerformed活动中实现。