【发布时间】:2011-08-18 09:23:04
【问题描述】:
这是我的示例代码。我正在尝试将没有标题栏显示的 JInternalFrame 嵌入到 JFrame 中。
import javax.swing.*;
import javax.swing.plaf.basic.BasicInternalFrameUI;
class A{
public void doThis(){
JFrame fr = new JFrame();
fr.setSize(300,300);
JInternalFrame f = new JInternalFrame();
f.setSize(200,200);
BasicInternalFrameUI ui = (BasicInternalFrameUI) f.getUI();
ui.setNorthPane(null);
f.setVisible(true);
fr.add(f);
fr.setVisible(true);
}
}
class MainA{
public static void main(String a[]){
A obj = new A();
obj.doThis();
}
}
代码工作正常,并在JFrame 内显示JInternalFrame,没有标题栏,如下所示。
我仍然在运行此 UI,同时当我尝试更改我的 XP 主题(通过属性>>外观>>主题)时,UI 会自动重新绘制自身以再次显示带有标题栏的 JInternalFrame,如图所示下面。
我就是无法理解这种奇怪的行为。我不知道这是 Java Swing 的问题还是与操作系统有关的问题。请在这件事上给予我帮助!
当我明确编码为将 titleBar 设置为 null 时,为什么 UI 会在主题更改时使用启用的标题栏重新绘制?
PS:使用的操作系统是 Windows XP,我不确定在 Linux 或其他版本的 Windows 中是否观察到相同的行为
【问题讨论】:
-
Tips: 1) "java swings" 不,那是“Java Swing”(注意大写字母和's'字符的数量)。 2) "..不确定在...其他版本的 Windows 中是否观察到相同的行为"如果您发布了 @987654321,我可以告诉您在 Windows 7 中是否相同@.
-
@Andrew 我在 groovy 控制台上将之前的代码 sn-p 作为脚本运行。因此,如果您要求的是 java,我已经进行了相同的编辑。
标签: java swing windows-xp jframe look-and-feel