クラスまたはメンバーの上にカーソルを置いたときに表示されるEclipseのようなスクロールバーを備えた小さなツールチップを実装したいと考えています。
私が抱えている問題は、ツールチップ内にあるスクロール ペイン内のコンポーネントの高さではなく幅のみを制限する方法を見つけることです。コンポーネントは HTML をサポートし、テキストが内側の境界の幅を超えたときにテキストを正しくラップする必要がありますが、私が試したすべてのコンポーネントには、行の折り返しまたは HTML レンダリングのいずれかがあり、両方はありません。
Xが「優先」「最大」「最小」などのすべての「setXSize」には、すべて2つの引数が必要であり、コンポーネントの「setMaxWidth」メソッドがないため、幅のみを制限する方法もどこにもありません。
「setMaximumSize(new Dimension(256, Integer.MAX_VALUE);」を設定することは解決策のように思えますが、「max」と「min」で設定されたパラメーターはほとんどの場合無視されるため、機能しません。これは非常にイライラします。
リクエストに応じて、実装の現在の例:
public class MyTooltip extends JTooltip{
private JScrollPane scroll;
private JEditorPane pane;
public MyTooltip(String htmlCode){
this.pane = new JEditorPane();
this.scroll = new JScrollPane(this.pane);
this.pane.setEditable(false);
this.pane.setContentType("text/html");
this.scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
//Here the problems begin
this.pane.setMaximumSize(new Dimension(512, Integer.MAX_VALUE));
this.scroll.setMaximumSize(new Dimension(512, Integer.MAX_VALUE));
this.pane.setText(htmlCode);
this.add(scroll);
}
}
- 実際のコードはもう少し複雑です。しかし、これは良い近似だと思います...