【问题标题】:JPasswordField text color over written by paintcomponent由paintcomponent覆盖的JPasswordField文本颜色
【发布时间】:2018-10-17 15:24:55
【问题描述】:

所以我制作了我的自定义 JPasswordField 组件,并在其中将背景颜色更改为带有 alpha 的颜色

this.setBackground( new Color(29, 29, 29, 150) );
this.setOpaque(false);

我还把按钮做成圆形,所以我需要使用这个:

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.setColor(getBackground());
    g.fillRoundRect(0, 0, getWidth(), getHeight(), radius, radius);
}

问题是我输入的文字几乎无法阅读 它需要我突出显示它才能看到它。

这是我的前景色:

this.setForeground(new Color(250,250,250, 250));

自从截图后我改变了一点颜色,但我仍然有同样的问题

【问题讨论】:

    标签: java swing paintcomponent


    【解决方案1】:

    你的基本逻辑颠倒了。

    首先调用super.paintComponent() 来绘制文本。

    然后调用fillRoundRect(...),它将在文本顶部进行绘制。

    逻辑应该反过来:

    1. 绘制背景
    2. 调用 super.paintComponent(...)

    【讨论】:

      猜你喜欢
      • 2018-11-12
      • 2021-09-17
      • 2020-11-29
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 2018-03-21
      • 2012-12-15
      • 1970-01-01
      相关资源
      最近更新 更多