我想画一条线但我不能使用“drawline”,只能使用“fillRect”。 当我通过mouseclick事件从用户那里读取一个点并放置一个矩形时,我有以下代码。Java图形使用fillRect绘制一条线
我需要做相同的,但通过绘制一条从A点的长方形,B点
这里画一条线是我的代码:
package graphics_draw_rec;
import java.awt.*;
import java.awt.Point;
import javax.swing.*;
import java.awt.event.*;
public class DrawRectangleOnMouseClick extends JPanel{
MouseHandler mouseHandler = new MouseHandler();
Point p2 = new Point(0, 0);
boolean drawing;
public DrawRectangleOnMouseClick(){
this.setPreferredSize(new Dimension(500, 400));
this.addMouseListener(mouseHandler);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillRect(p2.x, p2.y, 5, 5);
}
private class MouseHandler extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
drawing = true;
p2 = e.getPoint();
repaint();
}
public void mouseReleased(MouseEvent e) {
drawing = false;
p2 = e.getPoint();
repaint();
}
}
public static void main(String[] args) {
JFrame f = new JFrame("Draw Rectangle On Mouse Click");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new DrawRectangleOnMouseClick());
f.pack();
f.setVisible(true);
}
}
为什么你不能使用'drawLine'?有什么问题? – Radiodef
无关说明:如果您要学习Java中的GUI编程,并且没有使用Swing的特定要求,请考虑使用新的JavaFX GUI工具箱,因为Oracle不会进一步开发Swing,而是推动JavaFX。 – Puce
您确定这不是针对http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm吗? – Marco13