2012-08-13 75 views
0

我在swing應用程序中工作,我使用jTablejScrollpane現在我的問題是我在一個滾動窗格中添加了多個表格,並且其他表格區域的滾動工作正常,但它光標在表格區域時不起作用。jscrollpane不能在swing應用程序jtable中工作

兩個表格之間的空間滾動工作正常,但在表區域它不起作用。 任何人有任何關於我的問題的想法?所以請給我提前回答非常快... 感謝...

+4

更正你的句子用於獲取答案,你的問題是不是在這個問題完全清楚... – Luna 2012-08-13 06:31:55

+1

你不能添加多個組件到一個scrollPane(又名:它的主視口) - 所以你對「工作」的描述不可能真的如此。考慮顯示一些示例代碼(最好:一個SSCCE)來演示你期待什麼與體驗 – kleopatra 2012-08-13 07:08:52

回答

0

我在一個面板中添加了多個表格而不使用滾動條,然後將面板添加到滾動條上。這樣我的問題就解決了。

因爲沒有添加高級別組件(滾動窗格),您需要添加的滾動窗格標題不會添加到表格中。

可以使用下給予格式,添加標題,而無需使用滾動面板

//initializes the table 
JTable table=new JTable(rowData, columnNames); 
//add table header to any component(panel) 
component.add(table.getTableHeader()); 
//add table to any component(panel) 
component.add(tableRelatedProducts); 
2

有得多複雜的代碼,所以我在這裏不顯示 ... EUH,包含在滾動窗格多個表的面板。複雜的部分在哪裏?請參閱下面的SSCCE,其確實如此。

import javax.swing.BoxLayout; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.WindowConstants; 
import javax.swing.table.DefaultTableModel; 
import java.awt.BorderLayout; 
import java.awt.EventQueue; 

public class TableTest { 
    public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
     JFrame testFrame = new JFrame("Test"); 

     JPanel contentPane = new JPanel(new BorderLayout()); 
     JPanel tablePanel = new JPanel(); 
     tablePanel.setLayout(new BoxLayout(tablePanel, BoxLayout.PAGE_AXIS)); 
     addTableToPanel(tablePanel); 
     addTableToPanel(tablePanel); 
     JScrollPane scrollPane = new JScrollPane(tablePanel); 
     contentPane.add(scrollPane); 
     testFrame.setContentPane(contentPane); 

     testFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     testFrame.pack(); 
     testFrame.setVisible(true); 
     } 
    }); 
    } 

    private static void addTableToPanel(JPanel aTablePanel) { 
    JTable table = createTable(); 
    aTablePanel.add(table.getTableHeader()); 
    aTablePanel.add(table); 
    } 

    private static JTable createTable(){ 
    return new JTable(new DefaultTableModel(new Object[][]{new Object[]{"Data1-1", "Data1-2"}, new Object[]{"Data2-1", "Data2-2"}}, 
                 new Object[]{"Column1", "Column2"})); 
    } 
} 

請注意,當光標位於表格上方時,我沒有滾動問題。所以我們需要更多信息,然後在您的問題中提供。

也許,如果你創建一個SSCCE(或調整這個)可以重現你的問題,你會發現有問題的一段代碼。

+0

我得到了答案,但問題是如何添加表而不將表添加到jScrollpane?如果我添加沒有jScrollpane標題不顯示。感謝您的回覆 – Tejas 2012-08-13 10:36:54

+0

查看我的代碼片段,我手動添加標題。這在[表教程](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#show)中有解釋。 – Robin 2012-08-13 10:46:25