Я делаю чат в java и мне нужно отобразить старые сообщения в JPanel. Мне нужно изображение и сообщение, которое было отправлено / получено для отображения, каждое в своей строке. Код, который у меня сейчас есть:
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel container = new JPanel();
container.setPreferredSize(new Dimension(300, 400));
// Printing five messages
for (int i = 0; i < 5; i++) {
JPanel p = new JPanel();
p.setPreferredSize(new Dimension(300, 40));
p.setBorder(BorderFactory.createLineBorder(Color.BLACK));
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
JLabel img = new JLabel("Image : ");
JLabel txt = new JLabel("This is some text");
p.add(img);
p.add(txt);
img.setAlignmentX(Component.LEFT_ALIGNMENT);
txt.setAlignmentX(Component.LEFT_ALIGNMENT);
container.add(p);
}
f.add(container);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
Результат:
Сейчас я указываю ширину и высоту каждого сообщения, которое не так хорошо, как это должно автоматически изменить размер содержимого. Я чувствую, что для этого должен быть хороший менеджер компоновки, но я новичок в качелях, поэтому помощь приветствуется, поскольку я не знаю, какой из них использовать.