1

s のesJTableを表示するカスタム レンダラーがあります。ただし、ユーザーがテーブル セルをクリックしてチェックボックスをクリックしないと、チェックボックスがまだチェックされているため、これにより若干の問題が発生します。JCheckboxboolean

特定のポイントでJCheckboxレンダリングされた実際の境界を返す方法はありますか?JTableJCheckbox

どうもありがとうございました。

4

3 に答える 3

1

チェックボックスの状態を変更するのは編集者の責任であり、レンダラーの責任ではありません。を使用する場合はDefaultCellEditor、独自のコードを作成する必要はありません。

私は間違っているかもしれませんが、これはタイプがBoolean.class(によって決定されるTableModel)を持つすべての列のデフォルトの動作だと思います。したがって、レンダリング/編集コードを記述する必要はありません。モデルが正しい列タイプを返し、列がチェックボックスとしてレンダリングされ、チェックボックスで編集されることを確認してください。

編集:たぶん私はあなたが求めていたものに混乱しました。質問に対するPaulのコメントを見て、テーブルセル内の任意の場所をクリックすると、チェックボックスを切り替える必要があることに同意する必要があります。

于 2008-12-02T15:29:53.793 に答える
1

JCheckBoxから返されたコンポーネントとしてを使用している場合はTableCellEditor、フィットするように引き伸ばされるか、何か他のものになります (指定されていないようです)。したがって、当然行うべきことは、それを aJPanelに配置することです。これにより、領域を a に割り当てる方法を選択したままにして、引き延ばすことがLayoutManagerできます。

于 2008-12-02T19:10:48.450 に答える
0

私は実際に今日の午後に同じようなことをしました。

これが私のトリックですJTree。私のチェックボックスは右端または行にあります。

public void mouseClicked(MouseEvent e) {

int x = e.getX();
int y = e.getY();
int row = getRowForLocation(x, y);

Rectangle rect = getRowBounds(row);
Rectangle rect2 = new Rectangle(rect.x, rect.y, rect.height + 2, rect.height);
if (rect2.contains(x, y)) ....  // The click is on the checkbox
于 2008-12-02T15:38:52.060 に答える