質問

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

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

JTable のセルにボタンを追加できる解決策はたくさんありましたが、テキストとアイコン (MouseListener を使用) の両方をセルに追加する方法については見つかりませんでした。ご協力いただけるかどうかを確認してください。読んでいただきありがとうございます。

役に立ちましたか?

解決

あなたはTableCellRendererを拡張するカスタムJLabelを作成することができます。このJLabelは、アイコン(JLabelは、テキストの右または左に、アイコンを表示することができます)を使用して作成することができます。あなたは、レンダリングされている行が最初かそうでない天気をgetTableCellRendererComponentテストする、もしそうであれば、アイコンを設定し、それ以外ではないでしょう。

除去作用のために、あなたはテーブルの上にMouseListenerを追加することができ、かつmouseClickedメソッドを処理するとき、あなたはrowAtPointcolumnAtPointからPointを作成することにより、mouseEvent.getX()mouseEvent.getY()をテストすることによってでクリックされたセルを見つけることができます。アイコンがクリックされたとの最初の行を決定する場合は、列モデルから列を削除することができます。

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

他のヒント

まあ、私はあなたの質問を理解していない。

  

私はのJTableの種類を作成したいです   テーブルの1行目が含まれているテーブル   列名とアイコン

あなたが列名とソート方向を表示して作品をソートする方法のように、表のヘッダを意味していますか?

もしそうなら、あなたは、テーブルヘッダーのカスタムレンダラーを使用して、クリックされた列を決定するためにヘッダにするMouseListenerを追加します。あなたはデフォルト表のヘッダーレンダラーをカスタマイズすることができるはずですあなたがやりたいします。

それとも、テーブル内のデータの最初の行を意味しています。そうなら、あなたはまだカスタムレンダラを使用する必要があるが、今回はあなたがテーブルではないテーブルのヘッダーにするMouseListenerを追加します。

の両方のケースでは、表のビューから列を除去するTableColumnModel.removeColumn()メソッドを使用することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top