キー名と値の2つの列を持つJTableがあります。値の列には、次の画像のように許可される複数のデータ型があります。
したがって、列1では、行1にブール値があり、行2に文字列がある可能性があります。ただし、このメソッドでは、列全体getColumnClass(...)
のデータ型を設定することしかできません。
列行固有のデータ型を設定する方法はありますか?
ご挨拶、怪しい伝説
キー名と値の2つの列を持つJTableがあります。値の列には、次の画像のように許可される複数のデータ型があります。
したがって、列1では、行1にブール値があり、行2に文字列がある可能性があります。ただし、このメソッドでは、列全体getColumnClass(...)
のデータ型を設定することしかできません。
列行固有のデータ型を設定する方法はありますか?
ご挨拶、怪しい伝説
同じ列に2つのデータ型を含めることはできません。しかし、あなたの場合、私の提案はレンダリングを使用することです。
編集者とレンダラーについて読んでください。
列のデータ型を、を含むコンポーネントクラスとして定義しますJPanel
。
列をレンダリングします。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行目にはJLabel
withテキストがあります。
PS:これはただの試みです。私でさえこれをしたことがありません。私が間違っている場合は訂正してください。