java - 在 JButtons 上绘制焦点

标签 java swing jbutton standard-library

我有一个程序包含很多 JDialogsJFileChoosers 和其他包含 JButtons 的组件。

我知道我可以从 JButton 转到 JButton 并设置 .focusPainted(false) 以使焦点不可见,但问题是我有一堆“自动”创建的组件(预定义的 JDialogs、JFileChooser),但我无权访问它们的 JButton。我必须手动创建整个组件才能控制它们的子组件(并且从头开始创建 fileChooser 一定很困难)...

但是,我有一个想法。每次创建 JButon 时,focusPainted 默认设置为 true。有没有一种方法可以找到包含原始 JButton 构造函数的 Java 库,并将那里的方法更改为 false,使其成为默认方法?

编辑:我找到了 src.zip 并提取了 AbstractButton.java。如何编辑和重新编译它?

其实问题是,如何编辑Java标准库?

附言你们所有人都说这不是一个好的做法,这个特定示例可能会出什么问题(我认为 JSL 中的任何操作都不取决于焦点是否绘制在 Jbutton 上)?而且我总是可以同时处理两个项目,一个使用原始库,一个使用编辑过的库,当我在一个中出现错误,但在另一个中没有错误时,我知道问题出在哪里。

最佳答案

如何从 JButton 继承并使用您自己的 Button 类,在您使用的构造函数中将 focusPainted 设置为 false。您不想更改标准 Java 代码。

public class MyButton extends JButton{

  public MyButton() {
    super();
    setFocusPainted(false);
  }

}

但我明白了,这不会改变对 FileChooser 按钮的关注。

关于java - 在 JButtons 上绘制焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12386988/

相关文章:

java - 非法监控状态异常

java - 鱿鱼 :S2583 : Change this condition so that it does not always evaluate to "true"

java - LocalDateTime.now() 在 Windows 和 Mac 机器上具有不同级别的精度

java - 单击时图像不居中

java - 如何将 netbeans 中的“确定”按钮设为空

java - 修改函数中的类变量和返回值时出现奇怪的行为

java - 根据 JTextField 验证暂时禁用 JDialog 上的“确定”按钮

未识别该类型的 Java 方法

java - 如何在窗口内移动 3 个按钮

java - 如何去除底部多余的空间