こんにちは、ColorChooser というクラスがあります (net.java.dev.colorchooser.ColorChooser パッケージ内)。
これは、色の選択に使用されるカスタム コンポーネントです。私が望むのは、2 列目に ColorChoosers を含む JTable を表示することです。だから私は自分の TableCellRenderer を作成し、それは動作します:
@SuppressWarnings("serial")
class ColorChooserTableRenderer extends DefaultTableCellRenderer {
public static List<ColorChooser> colors;
public ColorChooserTableRenderer(int rows) {
colors = new ArrayList<ColorChooser>(rows);
for (int i = 0; i<rows ; i ++) {
colors.add(new ColorChooser());
}
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
return colors.get(row);
}
}
これをテーブルに登録します:
JTable t = new JTable(5,3);
t.getColumn(t.getColumnName(1)).setCellRenderer(new ColorChooserTableRenderer(5));
表示は良好です。ColorChoosers の 1 つにマウスを合わせると、ColorChoosers のツール ヒントも表示されます。問題は、ColorChoosers が MouseEvents を受信しないことです。
通常、ColorChooser でマウスを押したままにすると、色を選択するために使用できるポップアップ ウィンドウが表示されます。JTable の場合、ColorChooser コンポーネントはマウス イベントを受け取りません。
解決策はありますか?
編集:質問はこれに簡単に変更できます:
実際に動作する 2 列目に JButton を含むテーブルの小さな例を教えてください。ほら、押せるボタン?