Я экспериментирую с манипулированием изображениями в графическом интерфейсе.Мне нужно, чтобы изображение отображалось в графическом интерфейсе, с несколькими другими компонентами вокруг него.Если размер окна графического интерфейса изменен, только размер области изображения должен изменяться с ним.
Я думал, что использование GridBagLayout
было бы способом, но когда я делаю, поведение изменения размера удержания ScrollPane
изображение является неожиданным: когда окно графического интерфейса пользователя уменьшается в размере, так что доступное пространство слишком мало для изображения в ScrollPane
, компонент ScrollPane
сразу же уменьшает размер до размера, намного меньшего, чем доступное пространство.
Изображение для примера кода: qm.png
import scala.swing.{ Button, GridBagPanel, Label, MainFrame, ScrollPane, SimpleSwingApplication }
import javax.swing.ImageIcon
object GridBag_vs_ScrollPane extends SimpleSwingApplication {
def top = new MainFrame {
title = "GridBag vs ScrollPane"
contents = gui
}
val gui = new GridBagPanel {
val fp_img = """.\resources\qm.png"""
val scrPane = new ScrollPane( new Label { icon = new ImageIcon(fp_img) } )
val button1 = new Button("Button 1")
val c = new Constraints
c.gridx = 0
c.gridy = 0
layout(button1) = c
c.weighty = 1.0
c.gridx = 0
c.gridy = 1
layout(scrPane) = c
}
}
Поведение ScrollPane
, которое я искал, больше похоже на поведение следующего фрагмента кода:
import javax.swing.ImageIcon
import scala.swing.{Label, MainFrame, ScrollPane, SimpleSwingApplication}
object SimpleScrollPane extends SimpleSwingApplication {
def top = new MainFrame {
title = "Simple ScrollPane"
val fp_img = """.\resources\qm.png"""
contents = new ScrollPane( new Label { icon = new ImageIcon(fp_img) } )
}
}
Я не могу понять, как получить желаемое поведение, и почему ScrollPane
ведет себя по-разному в обеих реализациях GUI.
Может ли кто-нибудь просветить меня?