НЕ работает JScrollPane. Ползунок занимает всю область JPanel, и его не сдвинуть ни как, при этом все разваливается. И вообще, почему ни кто не придумал фреймворк, язык, препроцессор что бы писать на html+сss верстку (компановку). Или придумали, а то не знаю. А то я голову ломаю над одним элементом. На AngularJS в 20-30 строчек делаю то же, что на JAVA в 200-300 с сотней ошибок и постоянному Гуглению.
class PanelUser extends JPanel{
public PanelUser(){
panel =new JPanel();
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
panel.setBorder(BorderFactory.createEmptyBorder(1,1,1,1));
panel.setPreferredSize(new Dimension(width-12,200)); // все что уезжает за 200Пикс, не
// отображается, высота фиксируется а Срулл и не думает выполнять свою работу
// panel.setSize(newDimension(width,200)); - panel растет вниз и становиться больше 200
// а СРУЛЛ (ползунок) занимает всю эту область, от начала до конца и не сдвинуть.
scrl =new JScrollPane(panel
,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS
,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrl.setSize(width-4, 200);
add(scrl);
}
// Функция добавления текста в панель
public void addMessage(String name, String time, String text){
JPanel pan =new JPanel();
pan.setLayout(new BoxLayout(pan,BoxLayout.Y_AXIS));
JLabel lblName =new JLabel(name);
JLabel textField =new JLabel("<html><pre> "+time+"<br><hr>"+text);
pan.add(lblName);
pan.add(textField);
panel.add(pan);
}}
// в main вызов конструктора под JFrame и вызов addMessage(...) несколько раз. В итоге
// В итоге Скрул занимет всю высоту 180пикс для panel.setPrefferedSize();(4 строчка)(при этом данные не попадают в область) и 1000+ для panel.setSize(); и panel уходит вниз, при этом СКРУЛ ЗАНИМАЕТ всю эту область и его не сдвинуть.
//