0

私は現在、完全なグラフィック(JButtonなし)のボタン用にJavaでマウスホバースクリプトを実装しています。ここに私のコードがあります:

@Override
public void mouseMoved(MouseEvent e){
    if (btnExit.getBound().contains(e.getX(), e.getY())){
        btnExit.setStatus(BUTTON_STATE.HOVER);
    } else {
        btnExit.setStatus(BUTTON_STATE.IDLE);
    }
    System.getInstance().repaint();
}

マウスが移動すると、常に再描画メソッドが呼び出されます。

問題は > ホバー アクションの適切な実装ですか? またはより良い実装がありますか?マウスを動かすたびに repaint() を呼び出すのは計算がかなり重いと思ったからです。

THX b4

4

1 に答える 1

0

repaint()を呼び出しても、コンポーネントがすぐに再描画されるわけではありません。この呼び出しは、多くの状況で他のエントリとマージされる可能性のある再描画要求キューにエントリを配置するだけです。

repaint()頻繁に呼び出される可能性がある場合は、オブジェクトを再描画する必要がある後、最大時間を受け入れるバージョンを使用してください。たとえばbutton.repaint(1000)、同じ1秒間に100回呼び出すと、再描画は1回だけになります。(画面全体ではなく)再描画する領域を指定することもできますが、これは、実装がそのような部分的な再描画で実際に少ない仕事をする場合にのみうまく機能します。

btnExitまた、アプリケーションフレーム全体ではなく、再ペイントを呼び出すこともできます。

于 2013-03-16T16:12:37.857 に答える