如何在 Java Swing 中创建响应式 JList
How can I create responsive JList in Java Swing
我想通过拥有一个主要 JPanel
来创建一个商店,里面的每个组件都是一个 JPanel
,带有图像、标签和按钮。
我确实尝试过使用 JList
,但 JList
的问题仅包含组件的渲染,因此按钮无法正常工作,并且它只有一个图像。我可以四处走动并使用 MouseEvent,但对我来说感觉不对,我相信有更好的解决方案。
我希望组件会根据帧大小改变它们的位置,就像 JList
.
例如,如果我改变屏幕的宽度,组件的位置也会随之改变:
对此:
我确实有一个想法,在 paintComponent
中使用 GridLayout
或 GridBagLayout
(因为它会调用每个渲染。如果您知道另一种调用每个渲染的方法 JPanel
我想知道)并通过更改 paintComponent
.
中的布局变量来更改组件的位置
我确实上网寻找解决方案,但我只发现人们使用 JTable
,但我看不到它在这里工作。
each component inside it is a JPanel with an image, label and button.
有道理。
changing the positions of the components by changing the layout variables inside the paintComponent.
paintComponent() 方法与更改面板布局无关。您不应该使用 paintComponent() 方法。
I do have an idea by using GridLayout or GridBagLayout
您使用布局管理器是正确的,但不幸的是,none 的默认布局管理器将在随机数量的组件处自动换行。
布局管理器会在调整框架大小时自动调用。
因此您可以使用 Wrap Layout,它是允许随机包装的 FlowLayout 的扩展。
我想通过拥有一个主要 JPanel
来创建一个商店,里面的每个组件都是一个 JPanel
,带有图像、标签和按钮。
我确实尝试过使用 JList
,但 JList
的问题仅包含组件的渲染,因此按钮无法正常工作,并且它只有一个图像。我可以四处走动并使用 MouseEvent,但对我来说感觉不对,我相信有更好的解决方案。
我希望组件会根据帧大小改变它们的位置,就像 JList
.
例如,如果我改变屏幕的宽度,组件的位置也会随之改变:
对此:
我确实有一个想法,在 paintComponent
中使用 GridLayout
或 GridBagLayout
(因为它会调用每个渲染。如果您知道另一种调用每个渲染的方法 JPanel
我想知道)并通过更改 paintComponent
.
我确实上网寻找解决方案,但我只发现人们使用 JTable
,但我看不到它在这里工作。
each component inside it is a JPanel with an image, label and button.
有道理。
changing the positions of the components by changing the layout variables inside the paintComponent.
paintComponent() 方法与更改面板布局无关。您不应该使用 paintComponent() 方法。
I do have an idea by using GridLayout or GridBagLayout
您使用布局管理器是正确的,但不幸的是,none 的默认布局管理器将在随机数量的组件处自动换行。
布局管理器会在调整框架大小时自动调用。
因此您可以使用 Wrap Layout,它是允许随机包装的 FlowLayout 的扩展。