Когда я добавляю элементы к нему во время выполнения, кажется, что он не обновляет оболочку должным образом. При повторной проверке фрейма он будет продолжать отображать новые элементы в последней строке (даже сохраняя старые перенесенные строки), но не будет продолжать и переноситься на новую строку.
Список может быть переупакован только при изменении размера кадра (не работают валидация, проверка и перерисовка).
final JFrame frame = new JFrame();
final Vector<String> strings = new Vector<String>();
JList list = new JList(strings);
list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
list.setVisibleRowCount(-1);
strings.add(" ------------------ add ------------------");
strings.add(" ------------------ add ------------------");
JButton button = new JButton("add");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
strings.add(" ------------------ add ------------------");
//frame.invalidate();
//frame.validate();
//frame.repaint();
}
});
JPanel panel = new JPanel(new BorderLayout());
panel.add(list, BorderLayout.CENTER);
panel.add(button,BorderLayout.SOUTH);
frame.setSize(400,400);
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);