Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > JTable scroll


Автор: xTr1m 11.2.2009, 20:27
И еще раз вечер добрый. Пытаюсь сделать скроллинг в JTable. Вообще у меня следующая структура:

JFrame -> JPanel -> JTabbedPane -> (на закладке таба) JSplitPane -> (в одной области сплиттера) JPanel -> JTable

Посмотрел примеры, увидел, что делается так. JFrame -> JPanel -> JScrollPane ( JTable)

У меня вроде все то же, но только без JFame. Но работать не хочет, никакого скрола нет =(

Автор: Kangaroo 11.2.2009, 22:02
А где у тебя JScrollPane  ?

Автор: xTr1m 12.2.2009, 08:17
Ой, ну да =))

JFrame -> JPanel -> JTabbedPane -> (на закладке таба) JSplitPane -> (в одной области сплиттера) JPanel -> JScrollPane -> JTable

Штука в том еще, что даже таблица перестает отрисовываться? Неужели дело в том, что JPanel (на котором располагается JScrollPane) должен быть обязательно на JFrame?

Автор: math64 12.2.2009, 09:56
Панели можно не использовать:
JFrame -> JTabbedPane -> JSplitPane -> JScrollPane -> JTable
(если JScrollPane занимает всю область сплиттера).
Нужно вручную указать положение setDividerLocation()

Автор: xTr1m 12.2.2009, 10:39
Пробовал, то есть теперь так

JFrame -> JPanel -> JTabbedPane -> (на закладке таба) JSplitPane -> (в одной области сплиттера) JScrollPane -> JTable

Создал JScrollPane, потом JScrollPane::add(моя_таблица). Таблица отображается, но скроллов нет =((


P.S. Еще интересная штука, подумал, может просто у JScrollPane большая область, поставил ей size = 100, 100. Однако она все равно отображается на всю область левого сплиттера. Нормально ли это?

Автор: PashaOvechkin 12.2.2009, 11:03
Код


        JScrollPane tablePane = new JScrollPane( yourTable);
        tablePane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        tablePane.setCorner(JScrollPane.UPPER_RIGHT_CORNER, new Corner( ) );


Автор: xTr1m 12.2.2009, 11:03
 
Код

 table = new JTable();        

        // выравнимваем по центру строки
        DefaultTableCellRenderer r = (DefaultTableCellRenderer) table.getDefaultRenderer(String.class);
        r.setHorizontalAlignment(JLabel.LEFT);
        r.setVerticalAlignment(JLabel.TOP);
        table.setDefaultRenderer(String.class, r);
        
        table.setSize(size);
        table.setLocation(0, 0);

        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);        

        // заполняем таблицу колоками и столбцами
        CreateTableSkelet();

        // создаю скролл
        scrollPane = new JScrollPane(table);
        scrollPane.setSize(200, 200);
        scrollPane.setLocation(50, 50);
        scrollPane.setBackground(Color.gray);
        scrollPane.setLayout(null);
        scrollPane.add(table);
        add(scrollPane);


Вот на Jpanel поместил JScrollPane, на которую положил JTable. в результате таблицу видно, а скролла нет

Автор: xTr1m 12.2.2009, 11:59
Вопрос решен. Всем большое спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)