問題タブ [listcellrenderer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JComboBox の一般的な "POJO" ListCellRenderer を定義する方法
JComboBox がある場合、プラットフォームによっては、セルをレンダリングする方法が異なります。文字列をレンダリングする方法に満足しています。私が達成したいのは、Pojos から Strings にマップする ListCellRenderer を定義して、JComboBox に任意のオブジェクトを設定できるようにすることですが、toString メソッドのコンテンツ以外のものを表示することです。
私の最善の試み(実行時に機能しますが、コンパイル時に警告があります)は次のとおりです
これは次のように使用できます。
このアプローチは、ComboBox のデフォルトの ListCellRenderer のすべての強調表示/選択/その他を取得することを意味するため、優れていますが、ComboBox をドメイン オブジェクトの正規のホルダーとして使用しても、それらを適切に表示できます。
欠点は、上記が明らかに型安全ではないことです。
だから私の質問は:
- これは、この問題に取り組むための正気な方法でもありますか (私にはそう思われます)
- Swing ライブラリで明らかな何かを見逃していませんか (これは非常に明白な機能のように思われるため)。
- 上記の機能を維持しながら、コンパイラの警告を排除する (および上記をタイプセーフにする) 方法を誰かが提案できますか?
java - JCombobox リストの背景色が、選択した背景項目の色を上書きしています
行ごとに複数のテキスト色を表示する JComboBox があります。コンボには大きな値が含まれるため (テキストの折り返しが発生する)、HTML を使用してレンダリングすることはできません。代わりに、JPanel を拡張するカスタム レンダラーを作成しました (その後、前景/背景色が異なる別の JLabels をそのパネルに追加しています)。
色を正しく表示するには、ラベルごとに setOpaque を true に変更する必要があります。これは、選択したアイテムの上部の背景色も上書きします。
この動作を防ぐ方法はありますか? JPanel の色を変更しても、トップの背景色は変更されませんが、明らかにその子 JLabels は変更されますか?
レンダラー:
テキストの一部を赤に設定するには、単純なタグを使用します:
java - getListCellRendererComponent で「isSelected」を切り替えるオーバーライド メソッド
コンポーネントがいつ「isSelected」になるかを制御する独自のメソッドを作成したいと思います。
複数をJList
含む がありますJPanel
。の構築クラスJPanel extends ListCellRenderer<>
。
JList コンポーネント (JPanels) の 1 つが選択されていることを示すには、次を使用します。
別のアイテムを選択しても、選択したアイテムを「選択した」状態に保つ方法が必要です。これは CTRL を押したままにすることで実行できることは理解していますが、うまくいき.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
ません。複数をクリックして選択し、クリックして選択を解除したいと思います。
このために、ListSelectionMode を使用しましたが、方法が見つかりません。
上記を実行したら、特定の領域でクリックしたときにリスト内のコンポーネントのみを選択するメソッドを実装したいと思います(事前に設定されているコンポーネント全体ではなく)。このメソッドを作成しました。正しい領域がクリックされた場合は true を返し、そうでない場合は false を返します。しかし、コンポーネントを 'isSelected' にする mouseevent をオーバーライドする方法がわからないので、これは注意が必要です。
「isSelected」メソッドをオーバーライドしたいメソッドのコードは次のとおりです。
このコードは私のコンストラクターにありますJList
そしてmouseClickedPrebuild
方法。
java - カスタム セル レンダラーは、フォームなどのオブジェクトのプロパティを定義できますか?
カスタム セル レンダラーは、フォームなどのオブジェクトのプロパティを定義できますか?
JList
単なる情報の文字列を使用するのではなく、オブジェクトの現在の状態を反映するように a の要素を定義する方法を探していました。つまり、テキストの代わりに、ラジオ ボタン、テキスト ボックス、およびラベルを使用します。テンプレートのように事前にフォーマットされた方法で。
リストに表示する必要がある項目はシフトのタイム スロットで、それぞれが開始時刻と終了時刻、およびさまざまなブール値のプロパティを表します。コンポーネントを使用して各オブジェクトの状態を表示し、誰かがオブジェクトを選択できるようにできればもっとよいでしょう。選択すると、編集はリストではなくリストの下で行われます。ディスプレイ用です。
このようなもの:
java - カスタム JList セル レンダラー - セル選択?
良い一日。私はかなり新しいCellRenderer
もので、まだそれについてたくさん読んでいます。今、どうしたらいいのかわからない問題で困っています。カスタムに設定することでJPanel
、自分の中に入れることができました。しかし、ここに何百万ドルもかかる問題があります。コントロールを操作するにはどうすればよいでしょうか?JList
CellRenderer
jPanel
つまり、 my を含むセルを右クリックし、右クリックしていくつかのアクションを表示し、選択した行を強調表示できるようにしたいと考えています。
どうすればこれを達成できますか?
ここに私のコードがあります:
第二部: