0

次のような UI を持つ JTable を作成したいと思います。

ここに画像の説明を入力

「+」と「-」は、関連する行または列を追加または削除するボタンを示します。ボタンが既存の行と列に適切に配置されるようにするには、データ部分を超えてテーブルを拡張してボタンも含めるのが最も簡単なようです。したがって、上のテーブルには 5 行 6 列が含まれます。

質問:

  1. JTable の列ヘッダーの上にボタンを配置できますか?
  2. 私の理解では、セル レベルでボタンと空白セル (ここを参照) のセル境界線を削除することはできません。次に、ボタンを列または行に揃える別の方法はありますか?
  3. 目的の動作を可能にする、見たり使用したりした類似の UI スタイルはありますか? ライブラリはありますか?これは、たとえば、削除する特定の行または列を選択するためのコンボ ボックスで実現できることを知っています。ただし、行/列を追加/削除するオプションが行/列のすぐ隣に配置されるスタイルを好みます。

ご協力いただきありがとうございます。

4

2 に答える 2

2

代替UIを開いている場合:プロジェクトのaJXTableにはSwingX、特定の列を非表示にしたり、後で元に戻したりできるUIがあります。もちろん、これは既存の列のみを非表示/表示する場合にのみ役立ちます。新しい列を追加したい場合は、SwingXUIが十分ではないのではないかと思います。

行の追加/削除には、そのようなアクションを含むポップアップメニューの使用を検討します。MicrosoftExcelが提供するものと少し似ています。+または-記号もありませんが、行番号を右クリックするとこれらのアクションを見つけることができます。

于 2012-08-22T05:58:26.000 に答える
2

短い答えは(ほとんど)はい、長い答えです、それは少し手間がかかります。

JScrollPaneの行ヘッダーを利用します。詳細については、 setRowHeaderを参照してください。

ここに画像の説明を入力してください

(JavaDocsから使用された画像)

これには、各行の高さに一致するようにコンポーネントをレイアウトする必要があります。

テーブルヘッダーはもう少し複雑で、これがカスタムテーブルの実装であるかどうかにかかっています。

拡張JTable(またはのサブコンポーネント)を行う場合は、configureEnclosingScrollPane(および対応するunconfigureEnclosingScrollPane)メソッドの機能を置き換えることを検討する必要があります。これにより、をカスタムコンポーネントでラップJTableHeaderし、スクロールペインの列ヘッダー位置に設定できます。

そうでない場合は、スクロールペインの列ヘッダーを自分で調整する必要があります。いずれにせよ、基本的なアプローチは同じです。

を使用して、必要なJTableHeaderコンポーネントをレイアウトする手段を提供できるコンポーネントが必要です。の位置にとBorderLayoutのようなものを使用し、JTableHeaderSouthNorth

私見では

于 2012-08-22T00:14:17.317 に答える