【发布时间】:2013-09-28 18:32:20
【问题描述】:
我正在学习 Java Swing,并且有一个我正在尝试解决的光学问题。
当我在 Windows 7 上使用系统默认外观时,我会在浮动 JToolBar 上看到巨大的关闭按钮和空标题栏。
仅浮动工具栏的图像(后台没有应用程序):
有没有办法去除浮动工具栏周围的边框和按钮? 或者至少调整它们的大小?
感谢 nachokk 的建议以及在 https://forums.oracle.com/thread/2279762 上找到的以下片段,我可能会向前迈出一步。但是,仍然无法正常工作。现在取消停靠后,工具栏变得不可见。
tbFile = new JToolBar();
tbFile.addHierarchyListener(new HierarchyListener() {
@Override
public void hierarchyChanged(HierarchyEvent e) {
if ((e.getChangeFlags() & HierarchyEvent.PARENT_CHANGED) == 0) return;
JToolBar bar = (JToolBar) e.getComponent();
if (!((BasicToolBarUI) bar.getUI()).isFloating()) return;
final Window topLevel = SwingUtilities.windowForComponent(bar);
if (topLevel instanceof JDialog) {
//((JDialog) topLevel).setVisible(false);
((JDialog) topLevel).setUndecorated(true);
//((JDialog) topLevel).setVisible(true);
}
}
});
【问题讨论】:
-
不这么认为,换个Window主题
-
您可以添加一张图片以更具描述性吗?试试
JFrame#setUndecorated(true),如果你正在寻找它.. -
我想在主框架中有装饰,但不是在工具栏中,同时浮动。不幸的是,JToolBar 类中没有 setUndecorated 方法。
-
@MaximShoustin,我不寻找个人的,而是通用的解决方案。对于任何操作系统上的每个用户
-
在对话框可显示时设置 undecorated 属性是非法的 - 在调用该方法之前处理它。照原样,它抛出一个 IllegalStateException (奇怪地)被某处吞没。
标签: java swing look-and-feel jtoolbar