我有一个JPanel
嵌入在一个JFrame
. JPanel
添加于CENTER
of BorderLayout
。我正在使用以下代码来绘制它,但是MouseEvent
's getX()
and getY()
似乎偏移了真实坐标。为什么?
相关代码是:-
private Image backBuffer = createImage(getWidth(), getHeight());
public void mouseDragged(MouseEvent e) {
//System.out.println("Canvas.mouseDragged()");
Graphics2D g2d = (Graphics2D) backBuffer.getGraphics();
int x = e.getX(), y = e.getY();
if(lastCoord == null) {
g2d.drawRect(x, y, 0, 0);
} else {
g2d.drawLine(lastCoord[0], lastCoord[1], x, y);
}
lastCoord = new Integer[]{x, y};
repaint();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D graphics2D = (Graphics2D) g;
graphics2D.setColor(Color.black);
graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
graphics2D.drawImage(backBuffer, 0, 0, null);
}
也许您已将鼠标侦听器添加到 JFrame(而不是面板),因此 getX 和 getY 值是相对于 JFrame 的。然后偏移量是 JFrame 边框和上部标题栏。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)