我有一个程序包含很多 JDialogs
、JFileChoosers
和其他包含 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/