2010-12-03 4 views
0

私は右クリックで情報ポップアップを追加したいJpanelを持っています。したがって、ポップアップの座標は変更される可能性があります。しかし、paintComponentメソッドでポップアップを追加すると、アプリケーションの速度が大幅に低下します。私はpaintComponentでpopupFactoryからポップアップのインスタンスを取得するには、次のコードを使用していますJavaポップアップ、JpanelとPopupFactory - xとy座標を更新する

public void paintComponent(java.awt.Graphics g) { 
    super.paintComponent(g); 
    Graphics2D g2d = (Graphics2D) g; 

if(Show){ 
    popup = factory.getPopup(this, l, mouseX, mouseY); 
    popup.show(); 
} 

リットルは簡単JLabelのです。 Jpanelを右クリックして情報ポップアップを追加する別の方法はありますか?

乾杯、

Slotishtype

答えて

3

Jpanelを右クリックして情報ポップアップを追加する別の方法はありますか?

普通の方法は、MouseListenerを使用してマウスの右クリックを聞き取り、ポップアップを表示することです。 paintComponent()メソッドは、ポップアップがコンポーネントの一部ではないため、ポップアップの表示とは関係ありません。

+0

おかげで、私はいくつかの愚かな理由のためにペイント方法でポップを呼んでいた... – slotishtype

2

あなたはポップアップにコンポーネントがペイントされるたびに追加すべきではありません。

+0

私は知っています。しかし、popupFactoryは私にポップアップの座標を更新することを許しません....これの周りに別の方法がありますか? – slotishtype

+0

getPopup()で座標を渡しています。mouseListenerを使用していると仮定すると、右クリックごとに違いがありますが、問題は分かりません。 – jzd

+0

座標を静的に設定しても、popup = factory.getPopup(this、l、189、123); :paintComponenetが60X /秒のフレームレートで呼び出されているため、アプリケーションが遅くなります。 contstructorでポップアップを追加しても問題はありませんが、mouseListenerを使用して座標を変更することはできません。 – slotishtype

関連する問題