我想通过主要的JPanel
来创建一家商店,其中的每个内部组件都是一个JPanel
,并带有图像,标签和按钮。
我确实尝试过使用JList
,但是JList
的问题仅保留了组件的呈现,因此按钮不起作用,仅显示了图像。我可以四处走动并使用MouseEvent,但对我来说这是错的,我相信有更好的解决方案。
我希望这些组件的位置取决于帧的大小,例如JList
。
例如,如果我改变屏幕的宽度,组件的位置将随之改变:
对此:
我确实有一个想法,可以在GridLayout
中使用GridBagLayout
或paintComponent
(因为它调用每个渲染。如果您知道另一种方法,则可以将{{1} }我想知道),并通过更改JPanel
内部的布局变量来更改组件的位置。
我确实浏览了互联网以找到解决方案,但我只发现人们使用了paintComponent
,但我认为它在这里不起作用。
答案 0 :(得分:1)
其中的每个组件都是一个带有图像,标签和按钮的JPanel。
有道理。
通过更改paintComponent内部的布局变量来更改组件的位置。
paintComponent()方法与更改面板的布局无关。您不应该使用paintComponent()方法。
我确实有使用GridLayout或GridBagLayout的想法
使用布局管理器是正确的,但是不幸的是,没有默认布局管理器会自动包装随机数量的组件。
调整框架大小时会自动调用布局管理器。
因此,您可以使用Wrap Layout,它是FlowLayout的扩展,它允许随机包装。