当前位置: 首页 > 知识库问答 >
问题:

在Windows LAF下为每个组件设置非活动背景颜色

闻人修明
2023-03-14

我想根据每个组件设置JTextField的非活动背景色。(调用setEditable(false)时会显示非活动颜色)。

正在调用UIManager。put(“TextField.inactiveBackground”,新的ColorUIResource(Color.YELLOW))
在应用程序范围内设置非活动颜色。

它可以在Nimbus LAF下完成,如下所示:http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/nimbus/package-summary.html.使用Windows LAF时可以做类似的事情吗?

共有1个答案

袁法
2023-03-14

我找到了解决办法。这不是一个很好的解决方案,但仍然是一个解决方案:

扩展JTextField类并重写paintComponent方法,以绘制所需颜色的矩形。

class CustomTextField extends JTextField {
  private Color inactiveColor = UIManager.getColor("TextField.inactiveBackground");

  public void setDisabledBackgroundColor(Color inactiveColor) {
    this.inactiveColor = inactiveColor;
    repaint();
  }

  @Override
  protected void paintComponent(Graphics g) {
    if (!isEditable() || !isEnabled()) {
      setOpaque(false);
      g.setColor(inactiveColor);
      g.fillRect(0, 0, getWidth(), getHeight());
    } else {
      setOpaque(true);
    }
    super.paintComponent(g);
  }
}
 类似资料:
  • 通过RGB值设置背景的颜色。 默认的颜色是 0x000000: // 颜色的参数可以是字符串 "#530000" 或者是十六进制数值 0x530000 controller.setBackgroundColor("#530000); //controller.setBackgroundColor(0x530000);

  • 问题内容: 当我尝试使用以下命令在Vim 中或直接在Vim中更改背景色时: …完全不影响我的背景。该选项也没有。但是,当我运行gvim时看起来还可以。 有没有一种方法可以在Vim中更改背景而不更改我的Konsole设置? 编辑 好的,guifg / guibg和ctermfg / ctermbg之间是有区别的。虽然GUI接受许多不同的颜色组合,但是cterm仅允许很少的标准颜色组合。 问题答案:

  • 因此,我尝试使用getContentPane().setBackground(color.white)并尝试将table和scrollpane设置为白色。 这是唯一一个我不能改变颜色的框架,它是在另一个类中创建的- 通过这样做,我得到了另一个面板来成功地改变颜色

  • 我想在XSSFWorkbook中设置自己的背景色。到目前为止,我有这个代码: 但是我得到了以下错误: 类型CellStyle中的setFillForegroundColor(short)方法不是 不推荐使用构造函数XSSFColor(Color) 那么如何在XSSFWorkbook中设置自己的颜色呢?