1

以下の機能を実装したいのですが、Javaで可能かどうか迷っています。はいの場合、どのように?助けてください:

テーブルの1行目に列名と各列、つまり1行目の各セルにアイコンが含まれるJTableのようなテーブルを作成したいと思います。そのアイコンをクリックすると、その列がテーブルから削除されます (MouseListener を使用して可能ですか??)。

JTable のセルにボタンを追加できる多くのソリューションを見つけましたが、テキストとアイコン (MouseListener を使用) の両方をセルに追加することを説明するソリューションはありません。あなたが助けてくれるかどうかを確認してください。読んでくれてありがとう。

4

2 に答える 2

3

TableCellRendererを拡張するカスタムを作成できますJLabel。これJLabelはアイコンで作成できます(JLabelテキストの右側または左側にアイコンを表示できます)。レンダリングされる行が最初であるかどうかをテストする必要がありgetTableCellRendererComponentます。最初である場合はアイコンを設定し、そうでない場合は設定しません。

削除アクションの場合MouseListener、テーブルにaを追加できます。メソッドを処理するときに、とをテストし、とからを作成することでmouseClicked、クリックされたセルを見つけることができます。アイコンのある最初の行がクリックされたと判断した場合は、列モデルから列を削除できます。rowAtPointcolumnAtPointPointmouseEvent.getX()mouseEvent.getY()

1行目で、実際にテーブルヘッダーを意味する場合は、に対して同じレンダラーを作成し、そのコンポーネントにJTableHeaderを設定できます。MouseListener

于 2009-10-03T04:50:44.387 に答える
2

さて、あなたの質問がわかりません。

テーブルの1行目に列名とアイコンが含まれるJTableのようなテーブルを作成したい

列名と並べ替え方向を表示することで並べ替えが機能するように、テーブルヘッダーを意味しますか?

その場合は、テーブルヘッダーにカスタムレンダラーを使用し、ヘッダーにMouseListenerを追加して、クリックされた列を判別します。デフォルトのテーブルヘッダーレンダラーをカスタマイズして、必要な処理を実行できるはずです。

または、テーブルのデータの最初の行を意味しますか。その場合でも、カスタムレンダラーを使用する必要がありますが、今回は、テーブルヘッダーではなくテーブルにMouseListenerを追加します。

どちらの場合も、TableColumnModel.removeColumn()メソッドを使用して、テーブルのビューから列を削除できます。

于 2009-10-03T04:58:10.453 に答える