如何在 Java Swing 中创建响应式 JList

How can I create responsive JList in Java Swing

我想通过拥有一个主要 JPanel 来创建一个商店,里面的每个组件都是一个 JPanel,带有图像、标签和按钮。

我确实尝试过使用 JList,但 JList 的问题仅包含组件的渲染,因此按钮无法正常工作,并且它只有一个图像。我可以四处走动并使用 MouseEvent,但对我来说感觉不对,我相信有更好的解决方案。

我希望组件会根据帧大小改变它们的位置,就像 JList.

例如,如果我改变屏幕的宽度,组件的位置也会随之改变:

对此:

我确实有一个想法,在 paintComponent 中使用 GridLayoutGridBagLayout(因为它会调用每个渲染。如果您知道另一种调用每个渲染的方法 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 的扩展。