📄 line.java
字号:
package test.paint;
import java.awt.*;
import java.awt.event.MouseEvent;
/**
* Line类,实现画直线的功能
* 作者:王珍,钟雯
* 初始时间:2007 5-17
* 最后一次修改时间:2007 6-17
*/
public class Line extends RectBoundedShape {
/**
*无参构造函数
*/
public Line() {
super();
}
/**
*调用父类的函数
*/
public Line(Color c, Stroke s, int x, int y) {
super(c, s, x, y);
}
/**
*作者:钟雯
* 初始时间:2007 5-17
* 最后一次修改时间:2007 6-17
*/
public Line(Color c, Stroke s, int x, int y, int a, int b)
{
super(c, s, x, y);
endX = a;
endY = b;
}
/**
*记录鼠标按下时的起始点和鼠标松开的终止点
* tan(30) = 0.577;
* tan(60) = 1.155;
*/
public void processCursorEvent(MouseEvent e, int t) {
if (t != MyShape.CURSOR_DRAGGED)
return;
int x = e.getX();
int y = e.getY();
if (e.isShiftDown()) {
if (x - startX == 0) { //vertical
endX = startX;
endY = y;
} else {
float slope = Math.abs(((float) (y - startY)) / (x - startX));
if (slope < 0.577) { //horizontal
endX = x;
endY = startY;
} else if (slope < 1.155) { //deg45
regulateShape(x, y);
} else { //vertical
endX = startX;
endY = y;
}
}
} else {
endX = x;
endY = y;
}
}
/**
* 画一条直线
*作者:王珍
* 初始时间:2007 5-17
* 最后一次修改时间:2007 6-17
*/
public void draw(Graphics2D g) {
g.setColor(color);
g.setStroke(stroke);
g.drawLine(startX, startY, endX, endY);
}
public Rectangle getBounds() {
// TODO Auto-generated method stub
return null;
}
public boolean isImage() {
// TODO Auto-generated method stub
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -