0

JCheckbox と JComboBox 以外の DefaultTableCellRenderer でサポートされているコンポーネントを知りたい...

4

2 に答える 2

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()ます。

于 2012-12-13T04:18:46.983 に答える
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()次に、各列のメソッドを使用して、テーブルでそのレンダラーを使用できます

于 2012-12-13T05:05:18.957 に答える