По какой-то причине я не могу это работать. Это должно быть просто на самом деле.
У меня есть JFrame с BorderLayout
, который содержит JPanel
(ЮГ) и (ЦЕНТР) JPanel (itemPanel).
itemPanel должен быть обернут в область прокрутки. Его ширина = x, и все его дочерние элементы имеют общую длину, поэтому он в основном работает как таблица с одним столбцом.
По какой-то причине я не могу заставить полосу прокрутки показывать полосы прокрутки (и прокрутки). В JFrame:
setPreferredSize(dimension);
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().add("South",controlPanel);
JScrollPane scroll = new JScrollPane(itemPanel);
scroll.setBorder(null);
getContentPane().add("Center",scroll);
super.pack();
setVisible(true);
Инициализация и добавление нескольких фиктивных панелей в itemPanel:
itemPanel = new ItemPanel(); // A JPanel with a flowlayout
itemPanel.setPreferredSize(new Dimension(dimension.width,0));
for(int i = 0; i < 20; i++){
JPanel p = new JPanel();
p.setPreferredSize(new Dimension(0,50));
p.setBackground(i%2 == 0 ? Color.GREEN : Color.YELLOW);
itemPanel.add(p);
}
если пропустить itemPanel.setPreferredSize(new Dimension(dimension.width,0));
, полоса прокрутки показывает горизонтальные полосы прокрутки, но, поскольку у разметки потока нет ширины, которой нужно следовать, она просто показывает компоненты в одной строке.