問題タブ [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 - Swing ListCellRenderer の機能
のJavaDocjavax.swing.ListCellRenderer
のサンプル コードに関する簡単な質問:
ListCellRenderer
この例では、が拡張するクラスによって実装されており、メソッドがJLabel
単純getListCellRendererComponent(...)
に を返すことに少し驚いていますthis
。JLabel
複数の要素を含むリストであっても、周りに a のインスタンスが 1 つしかないように見えます。
setText(...)
通常、リスト内の 2 番目の項目に対してメソッドが内部で呼び出されるとgetListCellRendererComponent(...)
、リスト内の既存の最初の項目のラベルが変更されることを期待します。または、実際には、リストが同じJLabel
インスタンスを 2 回 (またはそれ以上)、リスト内の各項目に対して 1 回ずつ使用することさえできないはずです。
さて、これを解決する 2 つの方法を思いついたので、実際にどちらが (もしあれば) 起こっているのか疑問に思っていました:
- リスト項目ごと
JList
に提供されたの新しいインスタンスを何らかの方法で作成しますか?ListCellRenderer
- それとも、実際にこのコンポーネントを何らかのパネルに追加するのではなく、リストのキャンバスで
getListCellRendererComponent(...)
そのメソッドを呼び出すためだけに返されたコンポーネントを使用しますか?paint(...)
java - JComboBox への項目の動的追加 (値 + アイコン = jlabel)
DefaultComboBoxModel を使用して、JComboBox (文字列テキスト、アイコン アイコン) に特定の項目を追加します。しかし、何かがうまくいかない。これら 2 つのアイテムをコンボ モデルに追加すると、次のようになります。
要約すると、コンボボックスのコードは次のようになります。
ListCellRenderer の使用を検討しましたが、「値」と「アイコン」を同時に使用して、たとえば JLabel コンポーネントをレンダリングする必要があることを「伝える」方法がわかりません。JButton を使用してこれらの項目を動的に追加できることは、私にとって非常に重要です。
java - カスタム ListCellRenderer での JList 表示エラー
JList のカスタム ListCellRenderer に問題があります。リストに項目が 1 つしかない場合、セルは正しく表示されますが、複数の項目がある場合、次のように、すべてのセルのコンテンツが互いに重なるように各セルの継ぎ目が塗りつぶされます。
私の CellRenderer は次のようになります。
を使用して設定されます
メソッドgetSendungen()
は の ArrayList を返しますuiSendungsbutton
。
JList で各項目を独自のセルに正しく表示するにはどうすればよいですか?
swing - すでに選択されている jlist の最初の行
ネットでいくつかの調査を行った後、ここでの質問に対する完全な答えは実際には見つかりませんでした: JList があり、アプリケーションを実行するときに最初の行が既に選択されていることを望みます..このように、少なくとも 1 つの項目がArrayIndexOutOfBoundsException を回避するために選択されたコードのサンプルがあります:
ListCellRenderer が必要ですか? 前もって感謝します
java - カスタム ListCellRenderer の作成
カスタム ListCellRenderer を書きたいと思います。
デフォルトのものと異なる必要があるのは、 の戻り値を表示するのではなく、 の戻り値を表示することだけvalue.toString()
ですvalue.myOwnCustomMethodThatReturnsString()
。
それを行う最も簡単な方法は何ですか?
これがすべて含まれているクラスは、すでに ListCellRenderer を実装しており、次のものがあります。
括弧の間に何を入れればいいのかわかりません...
java - デフォルトのような ListCellRenderer を作成しますか?
任意のオブジェクトの に表示されるテキストをカスタマイズするにJComboBox
は、カスタム を作成するのが正しいアプローチであることを知っていますListCellRenderer
。ただし、通常のコンボ ボックスと同じルック アンド フィールを模倣する方法でこれを行う方法がわかりません。
以下の SSCCE を検討してください。動作しますが、コンポーネントを にキャストする不快な行が 1 つありJLabel
ます。これは私が持つべきではない、頼るべきではない魔法の知識です。そんなに醜いことをせずに同じ効果を得る他の方法はありますか?
java - ListCellRenderer - JLabel - 文字列 - n 行
だから私はこの状況を持っています:
一連の文字列を表示する JList があります。
ただし、これらの文字列は非常に長く、JList は非常に狭いです。紐が通らないということです。
私がやりたいことは、次のように各エントリを 2 行にすることです。
最初の行の wordWrap を実行し、残りの文字列を切り取り、残りの部分に 3 つのドットを追加して、最大スペースが埋められるようにすることで、2 番目の行を終了します。
私が何をするかは重要ではありません。重要なことは、FontMetrics を使用してこれらすべてを測定し、機能させる必要があるということです。そして、それがキャッチです。
メソッド全体getListCellRendererComponent(...)
が実行されるまで、コンポーネントは描画されないため、グラフィックが表示されず、フォントの測定が不可能になります。
どうすれば回避できますか?
PSビジュアルにはJLabelを使用する必要があります。