Я использую GridBagLayout
для создания GUI в Java. У меня есть три поля, одно слева и два друг над другом справа. Я соответственно установил весовые переменные, и если я ничего не добавлю, rat ios кажется правильным. Проблема в том, что когда я добавляю элемент в поле в правом верхнем углу, соотношение между ним и тем, что ниже, меняется. Это происходит до тех пор, пока контент не станет слишком большим для панели, и JScrollPane
не активируется.
Мой код:
val frame = JFrame("test")
frame.layout = BorderLayout()
val panel1 = JPanel(GridBagLayout())
val panel2 = JPanel().apply {
layout = BoxLayout(this, BoxLayout.Y_AXIS)
}
val panel3 = JPanel(BorderLayout())
val scrollPane = JScrollPane(panel2)
panel1.add(scrollPane, GridBagConstraints().apply {
gridx = 0
gridy = 0
weighty = 0.75
weightx = 1.0
fill = GridBagConstraints.BOTH
})
panel1.add(panel3, GridBagConstraints().apply {
gridx = 0
gridy = 1
weighty = 0.25
weightx = 1.0
fill = GridBagConstraints.BOTH
})
val button = JButton("text")
var counter = 0
button.addActionListener({
panel2.removeAll()
for (i in 0 until ++counter) {
panel2.add(JLabel("some text"))
}
frame.revalidate()
frame.repaint()
})
panel3.add(button, BorderLayout.CENTER)
frame.add(panel1, BorderLayout.CENTER)
frame.setSize(480, 234)
frame.revalidate()
frame.repaint()
frame.isVisible = true