2012-12-13 18 views

回答

1

我不知道如果我正確地理解你的問題,但如果要插入一些部件(例如JTextField)在JTable細胞,你可以創建這樣一個自定義呈現:

public class CustomTableCellRenderer extends DefaultTableCellRenderer 
{ 
//..... 
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { 
    //create a component according to arguments recieved, and return 
    //e.g. in simplest terms 
    return new JTextField(); 
    } 

那麼你可以在表中使用setDefaultRenderer()方法中的渲染器

+0

thnks vishal ..爲同樣我想添加按鈕,而不是textfield,hw我可以得到它。 – deva

+0

您是否嘗試根據您的要求在該方法中創建'JButton'並將其返回? –

2

DefaultTableCellRenderer本身不會呈現複選框或組合框。它是JTable,它提供了一些基於getColumnClass()實現使用的默認渲染器。下面是從JTable初始化被實現爲內部類一些默認渲染器的代碼:

protected void createDefaultRenderers() { 
    defaultRenderersByColumnClass = new UIDefaults(8, 0.75f); 

    // Objects 
    setLazyRenderer(Object.class, 
      "javax.swing.table.DefaultTableCellRenderer$UIResource"); 

    // Numbers 
    setLazyRenderer(Number.class, "javax.swing.JTable$NumberRenderer"); 

    // Doubles and Floats 
    setLazyRenderer(Float.class, "javax.swing.JTable$DoubleRenderer"); 
    setLazyRenderer(Double.class, "javax.swing.JTable$DoubleRenderer"); 

    // Dates 
    setLazyRenderer(Date.class, "javax.swing.JTable$DateRenderer"); 

    // Icons and ImageIcons 
    setLazyRenderer(Icon.class, "javax.swing.JTable$IconRenderer"); 
    setLazyRenderer(ImageIcon.class, "javax.swing.JTable$IconRenderer"); 

    // Booleans 
    setLazyRenderer(Boolean.class, "javax.swing.JTable$BooleanRenderer"); 
} 

的初始化defaultRenderersByColumnClass哈希表,然後在getDefaultRenderer()使用。

+0

使用DefaultTableCellRenderer,可以將JTextField插入到JTable單元格中? – deva

+0

@deva不知道我明白這個問題。你是指渲染器還是編輯器? – tenorsax

+0

只有渲染器.. – deva