2013-05-03 73 views
2

我有2個問題,我需要問,1如何獲得我的JTable的水平滾動,目前它收縮所有不可讀的列。我有20列顯示在表中。如何獲得JTable的水平滾動

2,如何調整我的桌面高度寬度最大值到我的屏幕大小。

我當前的代碼是

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 2013-05-03 09:43:15

+0

@ johnchen902,這是JScrollPane的。如何獲得scoll? – 2013-05-03 09:44:43

+1

爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2013-05-03 09:52:40

回答

8

爲了防止這種情況的所有列都調整到ScrollPane大小,你可以禁用自動調整:

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 

將您ScrollPaneBorderLayout的中心應該將最大尺寸設置爲屏幕尺寸,因爲通常JFrame不能成爲b igger。

若要將ScrollPane的ViewPort的大小設置爲屏幕大小,您可以使用awt Toolkit

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

是的,我有水平滾動,但如何獲得我的ScrollPane屏幕大小的最大尺寸? – 2013-05-03 10:15:52

+0

對不起,我還是不明白。 ScrollPane應該始終處於最大尺寸還是通常較小,最大尺寸只是最大尺寸?它現在如何,它應該如何?你能添加一個當前狀態的截圖或草圖並描述它應該如何? – 2013-05-03 11:27:00

+0

當我設置這樣的表格尺寸「table.setPreferredScrollableViewportSize(new Dimension(500,500));」它根據尺寸擴展了大小,但是我希望它對於我的屏幕大小是最大的,爲了使它更清晰一些,我的表位於JScrollPane中,JScrollPane位於獲取內容面板的容器中。 (); – 2013-05-03 11:35:36

1

JScrollPane裏面加上JTable並設置爲滾動條。

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

它不工作,我修改了我的第四行,你做錯了什麼? – 2013-05-03 09:50:51

+0

'table.setHorizo​​ntalScrollEnabled(true);'試試這個 – 2013-05-03 09:53:59

+0

無效。我應該發佈我的完整代碼嗎? – 2013-05-03 10:01:37

0

這可能對你有幫助。

 Dimension d = new Dimension(900, 800); 
     tbl_transaction.setAutoResizeMode(tbl_transaction.AUTO_RESIZE_OFF); 
     tbl_transaction.setPreferredSize(d); 
     tbl_transaction.setPreferredScrollableViewportSize(d);