2012-03-02 22 views
2

どこでも検索しましたが、私の質問に対する答えはまだ見つからないようです。私はセルレンダラとセルエディタに関するすべてを読んだことがありますが、まだわかりません...私はJTableを持っており、ユーザが編集中のセルを明確に見ていることを確認したいと思います。デフォルトでは、JTableの編集されたセルはより暗い境界になりますが、背景を緑色にしたいと思います。私はそれを選択すると緑色にすることができますが、データ入力を開始すると緑色の背景が消え、白いセルに書き込んでいます。JTableで編集したセルの背景色を変更するにはどうすればいいですか?

データを入力しているときでも、セルの背景を緑色に保つ方法を見つける手助けをしてください。

+1

なぜ、デフォルトよりも強いビジュアルヒントが必要ですか? @trashgodは技術的に正しい答えを投稿しましたが(編集コンポーネントが不透明であると仮定します)、正確に何を達成したいのですか? – kleopatra

+0

これは、私の上司が私にしたいことです。以前のプログラムはこのように働き、ユーザーはこれに慣れているので、このようにしておきたいと思います。だから、ユーザーの習慣は本当にです。 – user1245697

答えて

5

まず、テーブルのデフォルトの選択の背景色を取得:

Color color = UIManager.getColor("Table.selectionBackground"); 

第二に、このexampleに示すように、prepareEditor()をオーバーライドして、一致するエディタコンポーネントの背景色を設定します。

@Override 
public Component prepareEditor(TableCellEditor editor, int row, int col) { 
    Component c = super.prepareEditor(editor, row, col); 
    c.setBackground(color); 
    return c; 
} 

補足:技術的には正しいですが、エディタコンポーネントの色は通常、アクティブな間は対応するUIデリゲートによって管理されることに注意してください。不幸な選択は、コントラストの低下とユーザビリティの低下を招く可能性があります。徹底的なテストでターゲットをご覧ください&感触が保証されています。

+0

素晴らしい答え+1 – mKorbel

+0

@mKorbel:ありがとう、私は上記の警告を追加しました。私はどんな考えも歓迎します。 – trashgod

+0

ありがとう、素晴らしい作品:) – user1245697

関連する問題