Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 制表符没有焦点视觉指示时的聚焦组件_Java_Swing_Focus - Fatal编程技术网

Java 制表符没有焦点视觉指示时的聚焦组件

Java 制表符没有焦点视觉指示时的聚焦组件,java,swing,focus,Java,Swing,Focus,我有一个JDialog,其中添加了不同的组件(JButton,JTextField,JRadioButton等)。它运行良好,功能符合要求,同时使用键盘与UI交互。当我使用TAB键时,它会迭代所有组件,但问题是-并非所有组件的焦点都在UI上可见 例如: 当按下tab键且下一个组件为文本字段时,光标开始在其中闪烁,再次按下tab键且行中的下一个组件为单选按钮。同时,如果按空格键选择此单选按钮,则该单选按钮上的焦点不可见 类似地,对于下一个内联按钮或组合框,焦点不可见,但按空格键选择它将分别按下按钮

我有一个
JDialog
,其中添加了不同的组件(
JButton
JTextField
JRadioButton
等)。它运行良好,功能符合要求,同时使用键盘与UI交互。当我使用TAB键时,它会迭代所有组件,但问题是-并非所有组件的焦点都在UI上可见

例如: 当按下tab键且下一个组件为文本字段时,光标开始在其中闪烁,再次按下tab键且行中的下一个组件为单选按钮。同时,如果按空格键选择此单选按钮,则该单选按钮上的焦点不可见

类似地,对于下一个内联按钮或组合框,焦点不可见,但按空格键选择它将分别按下按钮和下拉组合框选项

意思是: 按tab键可根据需要在所有组件上迭代聚焦,但并非所有组件都可见

我使用的是一个自定义MetroLAF,它扩展了MetalLAF

我们完全无法从您最初的问题中了解到这一点,这就是为什么您需要在每个问题上发布一个
SSCCE
,以便我们了解您在做什么

因为您使用的是非标准类,所以问题在于该类。由于您还没有发布带有此非标准类代码的SSCCE,我们仍然无法帮助您。您需要自己调试代码或使用金属LAF

MetroLAF中未定义焦点颜色

它是在金属LAF中定义的,因为Metro从金属延伸而来,所以应该定义它。如果没有,则由您设置颜色


您可以查看其中显示了每个LAF的默认值。它还显示了如何设置值。当然,只有当代码使用该值时,设置值才会起作用。

1)您已经描述了一个问题,但没有提出任何问题。你的问题是什么?2) 为了更快地获得更好的帮助,请发布or。
该单选按钮上的焦点不可见
-我从未看到过该问题。LAF确定焦点的指示方式。通常,单选按钮的文本周围有一条虚线。如上所述,发布你的代码来演示这个问题。我想知道这个不寻常的行为,焦点是不可见的,尽管它是有效的。只是不可见。@AlphaTry,问题是你的代码。我猜不出为什么它对我有效了15年,但对你无效。如果您不能发布带有两个单选按钮的JFrame的简单代码来显示问题,那么我们无法提供任何建议。如果你需要帮助,那就努力吧@camickr,我知道,我也尝试过分开做,而且效果很好。但不是在我试图修复的代码中。它是2000多个线性代码。无法将其粘贴到此处。事实证明,在我的例子中,需要在MetroLNF类方法initClassDefaults(UIDefaults表)中获得注册的组件UI类(如MetroRadioButtonUI)在实现中没有定义paintFocus()方法。我在各自的UI类中添加了缺少的paintFocus()方法,并调整了它的调用,就像RadioButtonUI中定义的那样。结果很好。