2015-10-24 2 views
0

Этот код создает экран Frame и генерирует mouseEvent, когда пользователь щелкает в любом месте Frame. Тем не менее, я хочу, чтобы код приобретал координаты курсора, где пользователь нажимает кнопку мыши, а не получает только координаты верхнего правого угла JFrame. Я не уверен, как это сделать. Любая помощь будет оценена.Отображение координат мыши на JFrame в Java

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.GridLayout; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
    public class Hw2MouseEventController extends JFrame { 
    public Hw2MouseEventController() { 
     MouseClkd mouse = new MouseClkd(); 
     setLayout(new GridLayout()); 
     add(mouse); 
    } 

    public static void main(String[] args) { 
     Hw2MouseEventController frame = new Hw2MouseEventController(); 
     frame.setTitle("Mouse Event Controller"); 
     frame.setLocation(450, 200); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(450, 450); 
     frame.setVisible(true); 
    } 

    static class MouseClkd extends JPanel { 
     private int x; 
     private int y; 

     public MouseClkd() { 
      addMouseListener(new MouseAdapter() { 
       @Override 
       public void mouseClicked(MouseEvent e) { 
        x = e.getX(); 
        y = e.getY(); 
        repaint(); 
       } 
      }); 
     } 

     public void paint(Graphics g) { 
      super.paint(g); 
      g.fillRect(0, 0, this.getWidth(), this.getHeight()); 
      g.setColor(Color.white); 
      g.drawString("(" + x + "," + y + ")", 10, 10); 
     } 
    }} 
+0

Пожалуйста, прочтите и следуйте инструкциям проводки, особенно [MCVE] (http://stackoverflow.com/help/mcve). Помимо прочего, нам нужно знать, что делает ваш код *. – Prune

ответ

2

Я просто хочу, чтобы отобразить координаты в щелкнутом месте, когда пользователь нажимает кнопку мыши.

Это то, что происходит. Вы добавили MouseListener к панели, так что вы получите щелчок мыши относительно панели.

Если вы хотите, чтобы щелчок мыши был относительно кадра, вам нужно добавить MouseListener к фрейму.

Или, может быть, вам просто нужно изменить:

//g.drawString("(" + x + "," + y + ")", 10, 10); 
g.drawString("(" + x + "," + y + ")", x, y); 
+0

Я пробовал все, но результат не изменился. @camickr – ZpCikTi

+0

Работает отлично для меня. То есть я получаю текст, отображаемый там, где я нажимаю мышь, и текст отображает значение точки мыши. Наверное, я не понимаю твое объяснение проблемы. Расскажите, что вы видите и что вы ожидаете увидеть. – camickr

+0

Я попробую снова ваше решение. Думаю, у тебя все получилось. То есть я получаю текст, отображаемый там, где я нажимаю мышь, и текст отображает значение точки мыши. Это похоже на мой вопрос. Можете ли вы написать здесь свой код. @camickr – ZpCikTi

Смежные вопросы