gpt4 book ai didi

java - 为什么每次单击时 java MouseListener 都返回相同的值 x 和 y 值?

转载 作者:行者123 更新时间:2023-11-29 08:10:56 24 4
gpt4 key购买 nike

我正在创建一个 map 编辑器,他们点击的地方将用于向 map 添加数据点。

    public MapEditor() throws HeadlessException, FileNotFoundException, XMLStreamException {
super("MapEditor");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// Set JFrame properties.
this.setTitle("Map Editor");
this.setSize(PREFERRED_WIDTH, PREFERRED_HEIGHT);
this.setBackground(Color.gray);

this.setJMenuBar(makeMenuBar());

JPanel mainPanel = new JPanel( new BorderLayout());

Icon image = new ImageIcon("map.jpg");
JLabel label = new JLabel(image);
scrollPane = new JScrollPane();
scrollPane.getViewport().add(label);

scrollPane.addMouseListener(this);

mainPanel.add(scrollPane, BorderLayout.CENTER);


this.getContentPane().add(mainPanel);

this.getContentPane().add(makeStatusBar(), BorderLayout.SOUTH);

setVisible(true);
}

单击鼠标时我还有以下事件:

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

但是,无论我在窗口中的哪个位置单击,它都会返回相同的值。我注意到,如果我将整个窗口移动到屏幕上的其他位置,它会返回不同的值。它们似乎对应于窗口的左上角。我已经尝试将 MouseListener 添加到不同的组件,但我对每个组件都得到了相同的结果。一些帮助将不胜感激。

最佳答案

改用 MouseAdapter,因为它是一个用于接收鼠标事件的抽象适配器类。

请参阅 Java MouseListener 的已接受答案代码示例。

编辑:您没有使用 MouseEvent 变量引用,因此 getX()getY() 不会返回您期望的内容,除非getX()getY() 是你自己的方法吗?

将您的代码更改为:

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

关于java - 为什么每次单击时 java MouseListener 都返回相同的值 x 和 y 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8177715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com