2013-05-03 2 views
2

У меня есть 2 вопроса, которые мне нужно спросить, 1-й, как получить горизонтальный свиток для моего JTable, в настоящее время он сокращает все столбцы, которые вообще не читаются. У меня есть 20 столбцов для отображения в таблице.Как получить горизонтальную прокрутку в JTable

2nd, как отрегулировать мой размер высоты стола максимальный до моего размера экрана.

мой текущий код

Container cp = getContentPane(); 

      ConnectionDB con = new ConnectionDB(); 
      tableModel = con.getRecord(DEFAULT_QUERY); 

    table = new JTable(tableModel); 
    table.setPreferredScrollableViewportSize(new Dimension(900, 500)); 

    table.setFont(new Font("Tahoma", Font.PLAIN, 12)); 
    scrollPane = new JScrollPane(table); 

    centerPanel.add(scrollPane, BorderLayout.CENTER); 
    centerPanel.setBorder(BorderFactory.createTitledBorder("Books:")); 
    cp.add("Center", centerPanel); 

Пожалуйста, помогите мне в этом, спасибо заранее.

+0

Для горизонтальной прокрутки, используйте 'JScrollPane' – johnchen902

+0

@ johnchen902, это JScrollPane. как получить scoll? –

+1

Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

ответ

8

Чтобы предотвратить, что все столбцы изменяют свои размеры в ScrollPane размера вы можете отключить автоматическое изменение размера:

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 

Добавление Вашего ScrollPane в центр BorderLayout должен установить максимальный размер экрана, так как обычно JFrame не может стать b igger.

Чтобы установить размер ScrollPane с ViewPort на размер экрана, вы можете использовать awt Toolkit.

table.setPreferredScrollableViewportSize(Toolkit.getDefaultToolkit().getScreenSize()); 
+0

Да, у меня есть горизонтальный прокрутка, но как получить максимальный размер экрана для моей ScrollPane? –

+0

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

+0

, когда я устанавливал такие размеры таблицы, как этот «table.setPreferredScrollableViewportSize (новое измерение (500, 500)); он расширяет размер в соответствии с размерами, но я хочу, чтобы он был максимальным для моего размера экрана, чтобы сделать его более понятным, моя таблица находится в JScrollPane, а JScrollPane находится в контейнере, который получает содержимое. –

1

Добавить JTable внутри JScrollPane и установить для полос прокрутки.

new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 

Пример кода для JTable, чтобы соответствовать размеру экрана

public class TestJTableFitsScreenWidth { 

    public static void main(String... args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      public void run() { 
       JFrame f = new JFrame(); 
       DefaultTableModel dtm = new DefaultTableModel(
         new String[][]{ 
          new String[] {"A", "B", "D"}, 
          new String[] {"D", "E", "F"} 
         }, 
         new String[] {"col1", "col2", "col3"}); 
       JTable table = new JTable(dtm); 
       table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
       f.getContentPane().setLayout(new BorderLayout()); 
       f.getContentPane().add(table, BorderLayout.CENTER); 
       f.setVisible(true); 
       f.pack(); 
      } 
     }); 
    } 
} 
+0

его не работает, я изменил свою четвертую последнюю строку с твоей, что делаю неправильно? –

+0

'table.setHorizontalScrollEnabled (true);' try this –

+0

не работает. Должен ли я опубликовать свой полный код? –

0

Это может вам помочь.

 Dimension d = new Dimension(900, 800); 
     tbl_transaction.setAutoResizeMode(tbl_transaction.AUTO_RESIZE_OFF); 
     tbl_transaction.setPreferredSize(d); 
     tbl_transaction.setPreferredScrollableViewportSize(d); 
Смежные вопросы