6

コンポーネントを持っています。コンポーネントの ToolTip は setToolTipText() メソッドによって設定されます。最初のモニターでは、すべて正常に動作します。フレームを 2 番目のモニターに移動すると、ツールチップがモニターの端 (最初のモニターの側) に表示されます。これは、このコンポーネントのツールチップでのみ発生します。問題は他のマシンでも発生します。それでも、Vista でしかテストしていません。

どうしてこれなの?これは Swing のバグですか? どうすれば修正できますか?

ツールチップ テキストは、マウス カーソルの位置によって異なります。したがって、コードを編集して getToolTipText(MouseEvent e) メソッドをオーバーライドすることがあります。コードの変更を開始する前に、この問題の理由を知っておくとよいでしょう。

前もって感謝します。

4

1 に答える 1

7

Java バグ データベースには、これに関連していると思われるバグ チケットがいくつかあります。

デュアル モニター (デュアル ヘッド) 構成を使用している場合のツールチップの問題。

JApplet の JToolTip はツールチップを間違ったモニターに配置します

一部の複数モニター構成でのアクション ボタンのツールチップの問題

オンは別の重複として閉じられています。1 つは修正済みであると主張し、もう 1 つは修正が理解されたセットを持っています。

一部のユーザーによって投稿された1つの回避策は

frame.pack();
frame.setLocation(location);
frame.setLocation(new Point(0, 0));
frame.setLocation(location);

キーロン・ウィルキンソン

これが機能する理由は、 setLocation()最終的 Component.reshape()に が を呼び出し、 が と呼ばれるメソッドを呼び出す ためです。このメソッドはComponent.notifyNewBounds(boolean resized, boolean moved)、各コンポーネントの境界を設定するコンポーネント階層を横断します。デフォルトでは、これは「怠惰に」行われますが、ウィンドウが移動される前には設定されません。上記のコードは、それらを強制的に設定します。

これは、ある画面から別の画面にウィンドウをドラッグした後、ツールチップが適切に機能し始める理由でもあります。

于 2009-11-04T10:09:08.610 に答える