テキストとアイコン (MouseListener を使用) を JTable 列に追加します
-
19-09-2019 - |
質問
以下の機能を実装したいのですが、Javaで実現できるか迷っています。「はい」の場合、どのようにして?助けてください:
JTable のようなテーブルを作成したいのですが、 1行目 テーブルの列名と各列のアイコンが含まれています。1行目の各セルに。そのアイコンをクリックすると、テーブルからその列が削除されるはずです (MouseListener を使用することで可能ですか??)。
JTable のセルにボタンを追加できる解決策はたくさんありましたが、テキストとアイコン (MouseListener を使用) の両方をセルに追加する方法については見つかりませんでした。ご協力いただけるかどうかを確認してください。読んでいただきありがとうございます。
解決
あなたはTableCellRenderer
を拡張するカスタムJLabel
を作成することができます。このJLabel
は、アイコン(JLabel
は、テキストの右または左に、アイコンを表示することができます)を使用して作成することができます。あなたは、レンダリングされている行が最初かそうでない天気をgetTableCellRendererComponent
テストする、もしそうであれば、アイコンを設定し、それ以外ではないでしょう。
除去作用のために、あなたはテーブルの上にMouseListener
を追加することができ、かつmouseClicked
メソッドを処理するとき、あなたはrowAtPoint
とcolumnAtPoint
からPoint
を作成することにより、mouseEvent.getX()
とmouseEvent.getY()
をテストすることによってでクリックされたセルを見つけることができます。アイコンがクリックされたとの最初の行を決定する場合は、列モデルから列を削除することができます。
の 1行目によっての場合は、実際にテーブルヘッダを意味する、あなたがJTableHeader
に対して同じレンダラを作成し、そのコンポーネントにMouseListener
を設定することができます。
他のヒント
まあ、私はあなたの質問を理解していない。
私はのJTableの種類を作成したいです テーブルの1行目が含まれているテーブル 列名とアイコン
あなたが列名とソート方向を表示して作品をソートする方法のように、表のヘッダを意味していますか?
もしそうなら、あなたは、テーブルヘッダーのカスタムレンダラーを使用して、クリックされた列を決定するためにヘッダにするMouseListenerを追加します。あなたはデフォルト表のヘッダーレンダラーをカスタマイズすることができるはずですあなたがやりたいします。
それとも、テーブル内のデータの最初の行を意味しています。そうなら、あなたはまだカスタムレンダラを使用する必要があるが、今回はあなたがテーブルではないテーブルのヘッダーにするMouseListenerを追加します。
の両方のケースでは、表のビューから列を除去するTableColumnModel.removeColumn()メソッドを使用することができます。