4

GUI(マップ)上のいくつかのJButtonにカーソルを合わせて、その場所の名前(マンチェスターやロンドンなど)を表示したいと思います。1つのボタンで機能するコードがありますが、複数のボタンでは機能せずout、すべてのボタンの場所に最後のメッセージ(10個のボタンがあるため)を出力します。

trueの場合、GUIの指定された領域にある私のメソッドbutton1を介してテキストを描画します。paintComponent()

どうすればこれを解決できますか?

button1.addMouseMotionListener(this);
button2.addMouseMotionListener(this);
public void mouseMoved(MouseEvent arg0)
{
    if(button1.contains(arg0.getPoint()))
    {
        button1  = true;
        out = "test 1";
        repaint();
    }

    if(!button1.contains(arg0.getPoint()))
    {
        b1 = false;
        out = " ";
        repaint();
    }//same for all 10 buttons but change variables
}
4

3 に答える 3

13

既存のツール ヒント API を使用してみませんか?

button.setTooltip("Manchester");

HTML テキストを使用して、書式設定された結果を生成することもできます。

button.setTooltip("<html>Manchester<br>53.4800° N, 2.2400° W</html>");

画像が埋め込まれている場合は、画像を提供することもできます...

button.setTooltip("<html><img src=" + getClass().getResource("/someimage") + "/>Manchester<br>53.4800° N, 2.2400° W</html>");
于 2013-02-20T20:23:28.590 に答える
3
  • MouseListenerまたはMosueMotionListenerfromを使用しないでくださいJButton。このメソッドは で正しく実装されていますJButtons API

  • repaint()理由がない、この仕事に使う理由が見つからない

  • もう 1 つの方法は、関連するイベントを派生したものに追加ChangeListenerして取得することです。JButtonButtonModel

  • より良いヘルプのために、SSCCE、短く、実行可能で、コンパイル可能で、ほぼJFrame1つだけを投稿してくださいJButton

于 2013-02-20T20:15:44.217 に答える