2012-12-04 97 views
0

我試圖顯示JTable單元格內的HTML文本,但滾動條沒有顯示出來。下面是我的代碼...JTable單元格內的滾動條

public class TableCellTextRenderer { 

    @Override 
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,  
     boolean hasFocus, int row, int column) { 

     final JTextPane jtextPane = new JTextPane(); 
     JScrollPane scrollPane = new JScrollPane(jtextPane); 
     scrollPane.setPreferredSize(new Dimension(350,350)); 
     scrollPane.setVisible(true); 
     jtextPane.setEditable(false); 
     jtextPane.setAutoscrolls(true); 
     jtextPane.setContentType("text/html"); 
     jtextPane.setText(myHtmlText); 
     jtextPane.setVisible(true); 
     jtextPane.setPreferredSize(new Dimension(350,350)); 

     //this setViewPort has no effect 
     scrollPane.setViewportView(jtextPane); 

     jtextPane.setVisible(true); 
     scrollPane.setAutoscrolls(true); 
     scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); 
     scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 

     JPanel jpanel = new JPanel(); 
     jpanel.setVisible(true); 
     jpanel.setPreferredSize(new Dimension(360, 360)); 
     jpanel.add(scrollPane); 

     return jpanel; 
    } 
} 

滾動條出現,但滾動手柄不出現。你能告訴我我錯過了什麼嗎?

表看起來是這樣的:

First row on jTable

+0

此外,請考慮使用'ListSelectionListener'的[備用方法](http://stackoverflow.com/a/11782366/230513),在[此處](http://stackoverflow.com/a/12306104/230513)中進行說明。 – trashgod

回答

0

恐怕這是行不通的,你會希望它的方式。 JTables的工作方式是通過獲取渲染器組件來繪製單元格,然後將其緩存。用最簡單的術語來說,你要返回的組件基本上只是用來繪製單元格,但它不像普通組件那樣工作 - 例如它不接收事件。您可以使用單元格編輯器(將接收事件),但用戶必須手動選擇單元格。

您可以通過安裝自定義鼠標偵聽器來使用一些技巧,但這些東西會變得非常複雜。最好問問自己是否真的在尋找JTable(而不是自定義佈局),或者是否可能嵌入JavaFX表。

+0

謝謝。我改變了我的觀點,並沒有使用表格。 – jumpa