【发布时间】:2019-08-05 00:52:54
【问题描述】:
我目前正在编写一个 JVM Swing 应用程序,其中主窗口应该只显示为一个固定大小的对话框。在平铺窗口管理器(在我的情况下为 i3-wm)上开发它,将其作为平铺窗口处理。我希望它变成浮动的。
在其他编程语言/窗口框架中,这是通过为窗口设置“Dialog”标志来完成的,它告诉窗口管理器这个窗口是一个对话框。不幸的是,swing 似乎没有这样的选择。我也尝试使用 JDialog(有效地作为 JFrame 的替代品),但也没有运气。
进一步研究揭示了一个函数JFrame.setResizable。将false 传递给它会导致窗口正确显示为浮动,但稍后会立即关闭。在这种情况下不会调用窗口关闭处理程序。这是我离成功最近的一次
有问题的代码(scala)是
val jframe = new JFrame()
val size = new Dimension(310, 100)
jframe.setMinimumSize(size)
jframe.setMaximumSize(size)
jframe.setPreferredSize(size)
val layout = new GridLayout(0, 1)
jframe.setLayout(layout)
jframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)
// snip (code to add components to the JFrame)
jframe.pack()
jframe.setVisible(true)
【问题讨论】:
-
只是一个随机猜测:用
Window.POPUP调用setType。目前无法测试。 -
虽然弹出窗口使窗口浮动,但它也删除了窗口装饰。此外,它消除了我聚焦窗口的能力。
POPUP似乎更多地用于上下文菜单之类的东西