gpt4 book ai didi

java : multiple rectangles at once

转载 作者:行者123 更新时间:2023-12-01 17:20:05 25 4
gpt4 key购买 nike

嗨,我是新来的,我不擅长解释问题,但我多年来一直在网上搜索这个问题。这是我的问题:我想在鼠标 x 和 y 处绘制一个矩形。我希望有很多矩形,所以如果我单击 JFrame 上的 50 ,50 坐标,它会绘制一个矩形,然后如果我单击其他地方,它会在那里绘制另一个矩形,但不会删除另一个矩形,所以我可以点击 5 次(<--示例),那么我会同时拥有五个矩形。请帮助我并使其尽可能简单。预先感谢您,请帮助我。

我的代码:

public class Game extends Canvas implements Runnable {
private static final long serialVersionUID = 1L;

public boolean running = false;
public static final String title = "tilebased game!";

private Thread thread;
public int height = 600;
public int width = 800;
private Dimension d = new Dimension(width, height);
public static Rectangle block;
public static Rectangle[] blocks = new Rectangle[2];
public static int blocknum = 0;
public static int xCreate;
public static int yCreate;
public static int xcoord;
public static int ycoord;



public Game() {
setPreferredSize(d);
setMinimumSize(d);
setMaximumSize(d);
addMouseListener(new tile());
addMouseMotionListener(new tile());

}

public void start() {


running = true;
new Thread(this).start();

}

public void stop() {

running = false;

}

public static void main(String[] args) {
Game g = new Game();
JFrame f = new JFrame();
f.add(g);
f.pack();
f.setTitle(title);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setVisible(true);
g.start();

}

public void run() {
while(running){
tick();
render();
}

try{
Thread.sleep(5);
}catch(Exception e){

}
}


public void render() {
BufferStrategy bs = getBufferStrategy();
if (bs == null) {
createBufferStrategy(2);
return;
}
Graphics g = bs.getDrawGraphics();

tile.render(g);




g.dispose();
bs.show();
}

public void tick() {

}

}

以及另一个实现MouseListenerMouseMotionListener的类:

public class listener implements MouseListener, MouseMotionListener {

public static Game game;
public Image img;




@Override
public void mouseDragged(MouseEvent arg0) {

}

@Override
public void mouseMoved(MouseEvent e) {
Game.xcoord = e.getX();
Game.ycoord = e.getY();
}

@Override
public void mouseClicked(MouseEvent e) {

}

@Override
public void mouseEntered(MouseEvent arg0) {

}

@Override
public void mouseExited(MouseEvent arg0) {

}

@Override
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {

}

}

@Override
public void mouseReleased(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {

}
}

}

这是对我的问题的补充。什么与我的代码兼容。 (顺便说一句,我还只是在学习 java,而且我只有 13 岁,不太聪明。)矩形也应该具有固定的高度和宽度,因此当您单击特定区域时,它会绘制一个 10 x 10矩形,它会记住已经绘制的所有其他矩形,就像您的示例中一样,请再次帮助我,谢谢

最佳答案

参见Custom Painting Approaches有关执行此操作的两种常见方法的工作示例:

  1. 从 ArrayList 绘制对象
  2. 在 BufferedImage 上绘画

关于java : multiple rectangles at once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19386128/

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