0

私はスイングが初めてで、最初の深刻な問題に直面しました。

私はJTableとテーブルの下にたくさんのチェックボックスを持つJPanelを持っています。テーブルの下のチェックボックスを最初のテーブル列にあるチェックボックスに合わせようとしています。問題は、モデル データが変更されたときにこれを行う必要があることです。

fireTableDataChanged() が JTable でトリガーされた直後に、そのカスタム セル レンダラー コンポーネント (私の場合は JCheckBox) の画面上の位置を取得する方法がありません。私が理解している限り、これは JTable が非同期的に再描画されるために発生します。場所を取得しようとするたびに、 IllegalComponentStateException がスローされます。

これに関するアイデアは大歓迎です。

4

2 に答える 2

2

手動で行うべきではありません。適切な layoutManager を使用する必要があります。さまざまなレイアウトについては、このリンクを確認してください。

http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

于 2012-01-12T15:13:32.003 に答える
0

これは、行と列の画面上の位置を取得するのに役立つ場合があります。

Rectangle rect= cartTable.getCellRect(row,column,true); //cartTable-Jtable object name int x=Double.valueOf(rect.getX()).intValue(); int y=Double.valueOf(rect.getY()).intValue();

于 2013-10-03T11:16:37.647 に答える