sách gpt4 ai đã đi

java - 绘制东西时用鼠标移动时滞后

In lại 作者:行者123 更新时间:2023-12-04 06:38:40 hai mươi bốn 4
mua khóa gpt4 Nike

我在鼠标位置绘制矩形时遇到了一些麻烦。移动鼠标时,绘制的矩形滞后于鼠标光标。有没有办法确保矩形在鼠标上准确移动并且不落后?

这是一个小例子,虽然因为这只是一个矩形,所以滞后非常轻微,但它确实存在。在更大的程序中,我一次画了很多,但只移动了一个。

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

nhập javax.swing.*;

public class MouseTest {
JFrame window;
DrawPanel content;

public MouseTest(){
window = new JFrame("Test");
content = new DrawPanel();
window.setContentPane(content);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
window.pack();
}

public static void main (String[] args){
MouseTest test = new MouseTest();
}

private class DrawPanel extends JPanel implements MouseMotionListener {
int mouseX;
int mouseY;

private DrawPanel(){
setBackground(Color.BLUE);
setPreferredSize(new Dimension(400,400));
addMouseMotionListener(this);
}

public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(mouseX, mouseY, 20, 20);
}

@Ghi đè
public void mouseDragged(MouseEvent e) {
// TODO Phương thức tự động tạo stub

}

@Ghi đè
public void mouseMoved(MouseEvent e) {
mouseX = e.getX();
mouseY = e.getY();
repaint();

}
}

}

1 Câu trả lời

即使这是更多的工作,我建议您只使已更改的区域无效并重新绘制任何此类任务。这将节省许多周期(想象一下一直在绘制完整的背景......)。

你会看到很大的改进。

biên tập

我用这个例子自己测试过

    public void mouseMoved(MouseEvent e) {
repaint(mouseX, mouseY, 20, 20);
mouseX = e.getX();
mouseY = e.getY();
repaint(mouseX, mouseY, 20, 20);
}

并且必须承认这些改进有点学术性(至少对于我的计算机而言)。无论如何,这种技术应该用于更复杂的绘画方法..(你最终会看到改进)

biên tập

还有更多作弊:如果您仍然不喜欢您认为光标所在的位置与系统所想的不匹配,请尝试关闭光标 (http://www.java2s.com/Code/Java/2D-Graphics-GUI/HidethemousecursoruseatransparentGIFasthecursor .htm) 为用户提供更好的反馈。

关于java - 绘制东西时用鼠标移动时滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4564651/

hai mươi bốn 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com