Как я могу создать отзывчивый JList в Java Swing - PullRequest
0 голосов
/ 23 апреля 2019

Я хочу создать магазин, имея основной JPanel, в котором каждый компонент внутри него представляет собой JPanel с изображением, этикеткой и кнопкой.

Я пытался использовать JList, нопроблема с JList, он только держит рендеринг компонента, и из-за этого кнопка не работает, и это только изображение.Я могу ходить и использовать MouseEvent, но мне кажется, что это неправильно, и я уверен, что есть лучшее решение для него.

Я хочу, чтобы компоненты меняли свое положение в зависимости от размера кадра, как вJList.

Например, если я изменю ширину экрана, положение компонентов изменится следующим образом:

enter image description here

к этому:

enter image description here

У меня есть идея с использованием GridLayout или GridBagLayout в paintComponent (потому что это вызываеткаждый рендеринг. Если вы знаете другой метод, который вызывает каждый рендеринг (JPanel, который я хотел бы знать), и меняя положения компонентов, изменяя переменные макета внутри paintComponent.

, я делал серфингИнтернет, чтобы найти решение, но я только обнаружил, что люди использовали JTable, но я не вижу, чтобы это работало здесь.

1 Ответ

1 голос
/ 23 апреля 2019

каждый компонент внутри него представляет собой JPanel с изображением, меткой и кнопкой.

Имеет смысл.

изменение положения компонентов путем изменения переменных макета внутри paintComponent.

Метод paintComponent () не имеет ничего общего с изменением макета панелей. Вы не должны играть с методом paintComponent ().

У меня есть идея, используя GridLayout или GridBagLayout

Вы правильно используете менеджер макетов, но, к сожалению, ни один из менеджеров компоновки по умолчанию не будет автоматически переноситься на случайное количество компонентов.

Менеджеры компоновки вызываются автоматически при изменении размера фрейма.

Таким образом, вы можете использовать Wrap Layout , который является расширением для FlowLayout, который допускает случайную упаковку.

...