2016-11-05 101 views
0

我想在點擊swing窗口本身時獲得鼠標位置,而不是在eclipse上的控制檯上。任何人都可以知道如何做到這一點?我很抱歉,如果這是一個明顯的問題,我是一個初學者。 Thx提前。Java在點擊Gui時獲得鼠標位置

這是我得到的代碼。我不知何故在這裏找到了一塊,但它並沒有真正幫助我,就像我想要的。

package shapes; 
import java.awt.*; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class mouse { 

public static void main(String[] args){ 

    JFrame frame = new JFrame(); 
    JPanel panel = new JPanel(); 

    frame.add(panel); 
    panel.addMouseListener(new MouseAdapter() { 


     public void mouseClicked(MouseEvent e) { 
      int x=e.getX(); 
      int y=e.getY(); 
      System.out.println(x+","+y); 
     } 

}); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(200, 200); frame.setVisible(true); 




} 

} 
+0

當你說「得到點擊擺動窗口本身上的鼠標位置」你意味着你想在Swing窗口上顯示它,或者你的意思是當指針在Swing窗口上時你想要指針的座標(順便說一句,我認爲你的意思是*指針*而不是*鼠標*)。 –

+0

是的,我很抱歉,我的意思是指針的位置。每當我點擊它時,我都希望指針相對於擺動窗口的座標,我希望它顯示在我點擊的地方。你能幫忙嗎? –

+0

感謝您的澄清。當然,給我一點時間,我會提交一個答案。 –

回答

0

可以打印位置到JLabel

JLabel label = new JLabel(); 
panel.add(label); 
panel.setLayout(null); 
frame.add(panel); 
panel.addMouseListener(new MouseAdapter() { 
    public void mouseClicked(MouseEvent e) { 
     int x = e.getX(); 
     int y = e.getY(); 
     label.setText("X: "+x+" \t Y: "+y); // this sets the JLabel's text 
     label.setBounds(x, y, label.getText().length()*2, 20); 
    } 
}); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setSize(200, 200); 
frame.setVisible(true); 

結果在此:

this is the result

+0

thx,這真的有幫助! –

+0

@IanTwy然後請upvote並接受答案。這樣,當其他人發現這個問題時,他們知道這個答案有效 – ItamarG3

+0

我想upvote,但它表示它不會公開顯示在這裏由於不到15的聲望。 –

0

查看PointerInfo類,它可以幫助你。

+0

他希望它顯示在JFrame上 – ItamarG3

+2

堆棧溢出策略是鏈接不足以應答。如果一個鏈接是你的答案,那麼它應該只是一個評論。 –