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

时间:2019-04-23 20:13:28

标签: java swing jframe jpanel

我想通过主要的JPanel来创建一家商店,其中的每个内部组件都是一个JPanel,并带有图像,标签和按钮。

我确实尝试过使用JList,但是JList的问题仅保留了组件的呈现,因此按钮不起作用,仅显示了图像。我可以四处走动并使用MouseEvent,但对我来说这是错的,我相信有更好的解决方案。

我希望这些组件的位置取决于帧的大小,例如JList

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

enter image description here

对此:

enter image description here

我确实有一个想法,可以在GridLayout中使用GridBagLayoutpaintComponent(因为它调用每个渲染。如果您知道另一种方法,则可以将{{1} }我想知道),并通过更改JPanel内部的布局变量来更改组件的位置。

我确实浏览了互联网以找到解决方案,但我只发现人们使用了paintComponent,但我认为它在这里不起作用。

1 个答案:

答案 0 :(得分:1)

  

其中的每个组件都是一个带有图像,标签和按钮的JPanel。

有道理。

  

通过更改paintComponent内部的布局变量来更改组件的位置。

paintComponent()方法与更改面板的布局无关。您不应该使用paintComponent()方法。

  

我确实有使用GridLayout或GridBagLayout的想法

使用布局管理器是正确的,但是不幸的是,没有默认布局管理器会自动包装随机数量的组件。

调整框架大小时会自动调用布局管理器。

因此,您可以使用Wrap Layout,它是FlowLayout的扩展,它允许随机包装。