【问题标题】:JLabel coloring and making transparentJLabel 着色和透明化
【发布时间】:2014-08-03 18:52:41
【问题描述】:

当我点击它时,我正在尝试为JLabel 着色和透明化。

int leftP=4;      //initialized at start of code
if (leftP>0){
        if (lbl.getBackground()!=Color.YELLOW){
            lbl.setBackground(Color.yellow);
            lbl.setOpaque(true);
            leftP--;
        }else{
            lbl.setOpaque(false);
            lbl.repaint();
            leftP++;
        }
}

这里的问题是当leftP>0 if 检查标签的背景是否已经是黄色的。如果是......它会脱色,但如果不是,它会着色。 这是第一次工作。

  1. 我点击标签,它变成黄色和leftP=3
  2. 我重新点击标签,它变成没有黄色作为背景和leftP=4
  3. 当我第三次单击时。我希望它变成带有leftP=3 的黄色......但不幸的是,我不明白为什么它仍然没有颜色,并且每当我点击标签时它都会继续进入ELSE 循环。

【问题讨论】:

  • 顺便说一句。使用带有一个彩色(默认)和一个透明(选定)图标的JToggleButton。容易得多。
  • ..例如as seen here.

标签: java swing colors jlabel


【解决方案1】:

使用 lbl.repaint() 添加 try catch 语句并在每次颜色更改后保留标签;

try{
    int leftP=4;      //initialized at start of code
    if (leftP>0){
        if (lbl.getBackground()!=Color.YELLOW){
            lbl.setBackground(Color.yellow);
            lbl.setOpaque(true);
            lbl.repaint();
            leftP--;
        }else{
            lbl.setOpaque(false);
            lbl.repaint();
            leftP++;
        }
    }
}catch(Exception ee){
ee.printStackTrace();
}

【讨论】:

    【解决方案2】:

    setOpaque() 不会改变背景颜色,所以还是黄色的。

    试试

    lbl.setOpaque(false);
    lbl.setBackground(Color.BLACK);
    

    或者更好地使用另一个标记,例如。你自己的变量。

    【讨论】:

      猜你喜欢
      • 2016-10-21
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 2023-03-28
      相关资源
      最近更新 更多