0

我正在使用 Swing 在 Kotlin 中对此进行编码,但我也可以使用 Java 处理任何答案。

我有一个带有使用 SpringLayout 布局管理器的面板的 JFrame。

var layout = SpringLayout()
var frame = JFrame()
var mainPanel = JPanel(layout)

我想把屏幕一分为二。我知道还有其他方法可以做到这一点,但我又创建了两个 JPanel。一个在顶部,一个在底部。

var topPanel = JPanel()
var bottomPanel = JPanel()
//I've omitted ll of the objects inside these two panels.

我知道如何将它们放在屏幕的顶部和底部,但我希望它们在我更改屏幕尺寸时留在那儿。目前我有这段代码。

layout.putConstraint(SpringLayout.NORTH, bottomPanel, screenSize().height/2, SpringLayout.NORTH, mainPanel)

screenSize 方法只返回 JFrame 的大小。它仅在该实例中获得大小,因此无论如何它对我不起作用。

private fun screenSize(): Dimension = frame.size

我知道使用 Spring,例如,我可以使用 SpringLayout.VERTICAL_CENTER 将对象设置为始终位于屏幕的正中心。这意味着春天能够随着屏幕尺寸的变化实时更新对象的位置。我想要一个更通用的版本,例如,我可以将bottomPanel的y位置设置为屏幕高度/ 2。这将在每次屏幕更改时更新面板的位置,类似于将位置设置为ScreenLayout.VERTICAL_CENTER确实,但向上移动。我还需要使用它来设置面板的大小,因为我希望它们每个都是屏幕宽度/2。我可以随时获取屏幕宽度,但是一旦我将底部面板的位置设置为它,它只会更新时刻,然后它只是继续使用该值。据我所知,Spring 没有屏幕宽度或高度的常量,因此我无法将其插入 putConstraint 方法。我需要一些其他的选择。我已经考虑过一个不断更新它的循环,但这对于这项任务来说效率极低。如果可能的话,我想直接使用 SpringLayout 功能来解决这个问题。

4

0 回答 0