0

キー名と値の2つの列を持つJTableがあります。値の列には、次の画像のように許可される複数のデータ型があります。

左側にはキーがあり、右側には値があります(単純な

したがって、列1では、行1にブール値があり、行2に文字列がある可能性があります。ただし、このメソッドでは、列全体getColumnClass(...)のデータ型を設定することしかできません。

列行固有のデータ型を設定する方法はありますか?

ご挨拶、怪しい伝説

4

1 に答える 1

1

同じ列に2つのデータ型を含めることはできません。しかし、あなたの場合、私の提案はレンダリングを使用することです。

  1. 編集者とレンダラーについて読んでください。

  2. 列のデータ型を、を含むコンポーネントクラスとして定義しますJPanel

  3. 列をレンダリングします。Rendererクラスは、Panelを列に返します。constraintパネルにコンポーネントを追加してパネルを返す必要があることに基づいて、が必要です。

この例は、このような場合にレンダリングを使用する方法を示しています。

class PanelCellRenderer extends JPanel implements TableCellRenderer {
public Component getTableCellRendererComponent(final JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
       // row number is used as a constraint.
        if(row == 0) {
            this.add( new JTextField("", 20));
        } else if(row == 1) {
            this.add( new JCheckBox());
        } else if(row == 2) {
            this.add( new JButton());
        } else {
            this.add( new JLabel("Row-4"));
        }
        return this;
   }
}

//出力:

最初の行は。の付いたパネルJTextFieldです。同様に、2行目と3行目にはとがJCheckBoxありJButtonます。4行目にはJLabelwithテキストがあります。

差分コンポーネントを含むパネル

PS:これはただの試みです。私でさえこれをしたことがありません。私が間違っている場合は訂正してください。

于 2012-11-25T17:02:32.953 に答える