1

次のコードを使用して JLabel を保持する JScrollPane があります。

//Create TEXT LOG JPanel textLogPane = new JScrollPane(logLabel); textLogPane.setPreferredSize(textLogPaneDim); //textLogPane.setOpaque(true); textLogPane.setBorder(BorderFactory.createLineBorder(Color.BLACK)); textLogPane.getViewport().setBackground(Color.DARK_GRAY);


JLabel である logLabel は、キャリッジ リターンを使用する HTML エンコーディングの文字列で表されます。特定の行のコンテンツに基づいて特定の画像を表示します。そのグラフィックを表示しているときに、その行を表示するために JScrollPane、textLogPane をスクロールできるようにしたいと考えています。表示したい行の内容はわかっていますが、関連する行までスクロールダウン (またはアップ) する方法がわかりません。

必要に応じて、HTML エンコーディングを保持し、複数行のテキストのように見える限り、JLabel 以外のものに変更できます。

重複でしたらすみません 検索してみましたが 見つかりませんでした。

ありがとう

4

2 に答える 2

1

いくつかのカスタム計算を行い、ビューポートでscrollRectToVisible()を使用できます。JLabel の特定の行の rect を計算する方法がわかりません。より良い解決策は、おそらくhtmlのカスタムレンダラーを使用して、代わりに文字列をJListに貼り付け、使用することです

list.ensureIndexIsVisible(list.getSelectedIndex());
于 2010-06-23T19:15:37.297 に答える
1

HTML では「キャリッジ リターン」を使用せず、「br」タグを使用します。

複数行のテキストにはおそらく JTextPane を使用することをお勧めします。また、HTML を使用せずに、代わりに属性付きの文字列を追加する方が簡単だと思います。アイコンを JTextPane に挿入することもできます。

実際の例については、テキスト コンポーネントの使用に関する Swing チュートリアルのセクションを参照してください。

于 2010-06-23T19:20:50.957 に答える