环境:
操作系统:Win 10
IDE:Netbeans 8.1
Java:JDK 1.8u112 Oracle
jre:10.0.2
JTattoo laf:来自http://www.jtattoo.net/的HiFiLookAndFeel
上下文:
创建外观(“ laf”)切换类。
描述:
有一个类A(“ A”)扩展了JFrame(“ frame”)。它具有一些GUI组件,例如JFileChooser(“ fc”),按钮等。其main(“ main”)方法包括(通过dummy_method(List<String> myList) {
if(myList.isEmpty()) {
return null;
}
String firstListValue = myList.get(0).getStringValue();
// Should I do this:
if ("YES".equalsIgnoreCase(firstListValue)) {
return firstListValue;
}
// OR this:
if (firstListValue.equalsIgnoreCase("YES")) {
return firstListValue;
}
// Do something else
}
(“ swingU”)在EDT内部)设置A的实例,设置可见然后调用doClick单击调用Swingutilities.invokeLater()
的按钮(放置在框架中)。此时,屏幕上会显示一个框架和fc。
回到主要。 swingU返回main。延迟约3秒(请参见代码),然后导致更改laf。
laf更改是由另一个称为changer的类引起的。它有一个名为change的方法,即
fc.showOpenDilaog(this)
获取所有打开的窗口上述步骤本身是通过swingU在EDT上执行的。
问题:
预期:
问题的进展:
使用Window.getWindows()
(“ sop”)(内部更改方法)来显示
对话框的isDisplayable(),isShowing(),isVisible()。所有这些
尽管fc清晰可见,但仍返回错误。查找其来源(“ src”)后,使用了
dialog.getParent()(此返回A)并浸泡其
isDisplayable(),isShowing(),isVisible()。这些返回true。没道理!
fc.showOpenDilaog(null)使问题消失。
甚至试图通过sun.awt.AppContext进行浏览-无法产生正面或反面。
捕获:
System.out.println
返回true。根据安德鲁(SSCE)的建议,SSCE
getSupportsWindowDecorations()