2017-06-01 75 views
0

我有兩個JTables,每個JTables被添加到具有Borderlayout的容器(TableHeader到BoderLayout.PAGE_START和JTable到中心),這些Container被添加到JScrollPane中。Java,GirdLayout,ScrollPane無法正常工作

將兩個容器添加到具有網格佈局的容器,該網格佈局添加到JPanel的中心。

問題是,該滾動條沒有顯示,或者如果強制滾動條顯示所有的時間,它不工作。 JTable擁有超過100個條目,但只顯示前30個條目。

我已經試過搜索,發現已經有一些可能的修復,但他們沒有工作。我已經嘗試了一個首選大小,添加了一個佈局到ScrollPane和一些其他可能性,但沒有任何工作。

JTable中的一些代碼:

 this.locations = new JTable(data, columnNames); 
     this.locations.getTableHeader().setReorderingAllowed(false); 
     this.locations.setDefaultEditor(Object.class, null); 
//  this.locations.setPreferredSize(new Dimension(100, 100)); 

     Container table = new Container(); 
     table.setLayout(new BorderLayout()); 
     table.add(this.locations.getTableHeader(), BorderLayout.PAGE_START); 
     table.add(this.locations, BorderLayout.CENTER); 

     JScrollPane scrollPane = new JScrollPane(table); 
     scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
     this.content.add(scrollPane); 

位置是JTable中,內容是與GridLayout的,然後將其添加到具有BorderLayout的JPanel中的集裝箱。

+0

請添加一個完整的,可編譯的代碼示例。 – Amber

回答

1
Container table = new Container(); 
    table.setLayout(new BorderLayout()); 
    table.add(this.locations.getTableHeader(), BorderLayout.PAGE_START); 
    table.add(this.locations, BorderLayout.CENTER); 

不需要上述代碼。

所有你需要的是:

this.locations = new JTable(data, columnNames); 
    JScrollPane scrollPane = new JScrollPane(table); 
    this.content.add(scrollPane); 
+0

謝謝,現在它工作。 – Meister96Fels