2017-04-23 17 views
0

私の問題を解決してください。 lblCur lblBntを入力すると、Mousemouseイベントが正しく機能しません。遅れ、劣悪なFPSなどのように見えます。jLabelでmousemoveイベントでカスタムカーソルを作成

lblBtn.addMouseListener(...)を削除すると、lblBg.addMouseMotionListener(...)は正常に動作します。 http://pastebin.com/ZBJySGEq

public myjFrame() 
    { 
     setCursor(Toolkit.getDefaultToolkit().createCustomCursor(new ImageIcon(UrlImg("cur_empty.png")).getImage(),new Point(0,0),"cursor_default")); 
     this.setLayout(new BorderLayout()); 
     lblBg= new JLabel(); 
     lblBg.setIcon(new ImageIcon(UrlImg("main_menu_bg.png"))); 
     lblBg.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { 
      public void mouseDragged(java.awt.event.MouseEvent evt) { 
       cMouseDragged(evt); 
      } 
      public void mouseMoved(java.awt.event.MouseEvent evt) { 
       cMouseMoved(evt); 
      } 
     }); 
     this.add(lblBg); 
    lblBg.setLayout(null);` 

     lblBtn= new JLabel(); 
     lblBtn.setIcon(new ImageIcon(UrlImg("choi.png"))); 
     lblBtn.setBounds(120, 310, 345, 132); 
     lblBtn.addMouseListener(new java.awt.event.MouseAdapter() { 
      public void mouseClicked(java.awt.event.MouseEvent evt) { 
       lblChoiMouseClicked(evt); 
      } 
      public void mouseEntered(java.awt.event.MouseEvent evt) { 
       lblChoiMouseEntered(evt); 
      } 
      public void mouseExited(java.awt.event.MouseEvent evt) { 
       lblChoiMouseExited(evt); 
      } 
     }); 
     lblBg.add(lblBtn); 
     lblCur= new JLabel(); 
     lblCur.setIcon(new ImageIcon(UrlImg("cur_def.png"))); 
     lblCur.setBounds(200, 200, 155, 155); 
     lblCur.setText(""); 
     lblBg.add(lblCur); 
    } 
    private void cMouseMoved(java.awt.event.MouseEvent evt) { 
     lblBg.add(lblBtn); 
     lblCur.setLocation(evt.getX()-40,evt.getY()-40); 
    } 
    private void cMouseDragged(java.awt.event.MouseEvent evt) { 
     lblCur.setLocation(evt.getX()-40,evt.getY()-40); 
    } 
    private void lblChoiMouseEntered(java.awt.event.MouseEvent evt) {          
     lblBtn.setIcon(new ImageIcon(UrlImg("choi_hover.png"))); 
    }          

    private void lblChoiMouseExited(java.awt.event.MouseEvent evt) {          
     lblBtn.setIcon(new ImageIcon(UrlImg("choi.png"))); 
    } 
    private void lblChoiMouseClicked(java.awt.event.MouseEvent evt) {          
     this.dispose(); 
    } 
    public static void main(String[] args) { 
     myjFrame main= new myjFrame(); 
     main.setBounds(100, 100, 769,892); 
     main.setVisible(true); 
    } 
} 

プロジェクト:事前にhttps://drive.google.com/open?id=0Bw0by9qPYJ8TTWoydGtGbHZMbU0

感謝しかし、私はlblBntにクリック...

コードイベントを取得するカント!

event.getComponent().setCursor(); 

詳細については、カーソルAPIを読む:あなたのMouseListenerあなたが使用することができて

+0

レンダリングはどこですか?あなたのコードを読んだ後、私は塗り替えを見つけることができませんでした。 – user7185318

+0

フォーラムで問題を示す適切な[mcve]を投稿してください。外部のウェブサイトではありません。 – camickr

+0

他のリンクではなく、ここに疑わしいコードを投稿してください。 – HenryM

答えて

0

getPredefinedCursor()メソッドを使用できます。

メソッドは、カーソルを設定します。次にmouseReleased()メソッドでは、カーソルをnullに設定して、デフォルトのカーソルを復元します。

カスタム

カーソルカスタムカーソル= Toolkit.getDefaultToolkit()createCustomCursor(...)。 とし、カーソルに使用する画像を指定します。

+0

ありがとうございます。しかし、私がカーソルを使用するとカーソルが32x32になります。だから、私はカーソル 'lblCur.setLocation(evt.getX() - 40、evt.getY() - 40)のようにlblCurを使う必要があります。 ' –

関連する問題