Как получить JScrollPanes внутри JScrollPane, чтобы следить за изменением размеров родителей - PullRequest
1 голос
/ 27 февраля 2012

Итак, у меня есть куча JTable с. Каждый JTable находится внутри JScrollPane. Затем я добавляю каждый из этих JScrollPane s к JPanel. Затем я добавляю JPanel к JScrollPane, а затем к другому JPanel с BorderLayout. Больший JScrollPane правильно изменяет размер со своим родителем, но каждый из меньших JScrollPane имеет постоянную высоту, которая больше, чем окно, когда оно маленькое. Как я могу заставить каждого из детей JScrollPane s изменить размер с высотой окна / их родителя?

Я попытался добавить больше посредников JPanel с FlowLayout, BorderLayout, и, похоже, ничего не работает.

Вот соответствующий код:

public class MyPanel extends JPanel
{
    public MyPanel()
    {
        super(new BorderLayout());
        JPanel panel = new JPanel();
        for (int i = 0; i < 5; i++)
        {
            // View extends JTable
            panel.add(new JScrollPane(new View(new Model())));
        }
        add(new JScrollPane(panel));
    }
}

На самом деле я просто пытаюсь получить кучу таблиц с полосами прокрутки горизонтально рядом друг с другом внутри большой панели с горизонтальной полосой прокрутки. И я хочу, чтобы все эти вещи соответствующим образом изменяли размеры при изменении размера окна.

больше код:

final MyPanel panel = new MyPanel();
final JTabbedPane tabView = new JTabbedPane();
tabView.add(...);
tabView.add("foo", panel);

final JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, ..., tabView);
this.add(splitPane); // this extends JFrame

1 Ответ

2 голосов
/ 27 февраля 2012

Вы можете использовать BoxLayout . Если вы хотите противоположного: какая-то таблица будет исправлена, вы можете заключить ее в ограничение Box.createRigidArea (новое измерение (100, 100)) .

...