0

ルームマネージャーのようなプログラムを作っています。

毎日、各部屋にはさまざまなクライアントがいます。1 人のクライアントが同じ日にいくつかの部屋を取ることもあります。

すべてのクライアントを独自の色で彩りたい。クライアントごとに一意のセル レンダラーを作成せずにそれを行うことはできますか?

私は J-Tables を初めて使用しますが、このレンダリング システム全体はあまり効率的ではないように思えます。

これは私のアプリのスクリーンショットです。

平日と週末の列ヘッダーに別のレンダラーを使用しています。また、セルは J-Button であり、レンダラーはそれらに色を付けますが、同じ色のみです。

灰色のセルは「新規」で、オレンジ色のセルはクライアントによって占有されており、異なるクライアント、同じ色です:(

灰色のセルは

何か案は ?

ありがとう、

デイブ

4

2 に答える 2

3

例 #3 (「赤または緑をレンダリング」) を参照してください: http://www.javapractices.com/topic/TopicAction.do?Id=168

要するに、Renderer は単一の共有 JLabel を使用して、セルに応じて異なる色を設定できるということです (上記の例では、JLabel を拡張する DefaultTableCellRenderer を拡張しているため、効果的に同じ JLabel がすべてのセルに使用されます。継承が好きではなく、独自の共有 JLabel を使用できます)。これが機能するのは、JTable レンダリング プロセスが JLabel を「再利用可能なスタンプ」として使用するためです。つまり、セルを順番に調べて、セルの外観を「記録」し、先に進みます。テーブルが (たとえば) 5X3 の場合、実際には 15 個のラベルを保持するのではなく、15 個の画像しか保持できません。

于 2014-12-08T08:56:21.160 に答える
3
  • 単一セル レンダラー クラスを 1 つ作成する
  • セルの状態を使用して、その色を決定します。
  • 列が 0 の場合は、salmon に設定します。
  • それ以外の場合、列が 0 ではなく、値が占有されていることを示している場合は、黄色に設定します
  • そうでなければ灰色。
  • キー: すべては、getTableCellRendererComponent(...)メソッド内にあるロジックと、このメソッドに渡されるパラメーターを正しく使用することに依存します。
于 2014-12-08T08:44:37.043 に答える