代码之家  ›  专栏  ›  技术社区  ›  L. Cornelius Dol

带有透明文本字段的Java Nimbus LAF

  •  11
  • L. Cornelius Dol  · 技术社区  · 17 年前

    关于如何让Nimbus不为JTextField绘制背景,有什么想法吗?


    这是Swing最初设计的一个问题,多年来一直令人困惑。问题是setOpaque(false)在退出LAF时有一个副作用,即隐藏背景,而这并不是它真正的目的。需要说明的是,该组件可能有透明部分,swing应该在其后面绘制父组件。

    public boolean isFullyOpaque();
    

    public boolean isOpaque() { return (background!=null); }
    

    Example

    alt text

    4 回复  |  直到 7 年前
        1
  •  17
  •   L. Cornelius Dol    17 年前

    nimbus opaque bug

    myPane.setOpaque(false); // added by OP
    myPane.setBorder(BorderFactory.createEmptyBorder());
    myPane.setBackground(new Color(0,0,0,0));
    

    来自OP的注意事项:我还必须确保JTextField的setOpaque(false),以便绘制父背景——只是想对其他跟随者提及这一点,以防他们像我一样尝试了setOpaqua(true)。

        2
  •  0
  •   OscarRyz    17 年前

    你可以抓取nimbus的源代码,看看那里有什么问题(如果有的话),将其子类化并安装“修复”的。

        3
  •  0
  •   L. Cornelius Dol    17 年前

    来自javadoc

    仅在组件不透明时使用,

        4
  •  0
  •   L. Cornelius Dol    16 年前

    例如,对于“圆形”按钮,这将是圆圈外的角。


    推荐文章