📄 mydrawline2.java
字号:
import java.awt.*;
import java.awt.event.*;
//实现ActionListener,主要是实现一个actionPerformed方法
class MyDrawLine2 extends Frame implements ActionListener{
Button b1 = new Button("画线");
MyCanvas c = new MyCanvas();
public static void main(String[] args){
new MyDrawLine2();
}
MyDrawLine2(){
Frame f = new Frame();
f.setLayout(new BorderLayout(0, 0));
//增加一个窗口事件监听对象,以处理窗口事件,例如本程序中的关闭程序
f.addWindowListener(new MyWindowListener());
f.add(b1, BorderLayout.EAST);
b1.addActionListener(this);
c.setSize(350, 200);
c.setBackground(Color.blue);
f.add(c, BorderLayout.CENTER);
f.setTitle("在窗口内画直线!");
f.setSize(400, 200);
f.show();
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==b1){
c.mode = 1;
}
}
}
class MyWindowListener extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
//实现MouseListener接口,主要实现mouseClicked方法,其它方法可以空实现
class MyCanvas extends Canvas implements MouseListener{
int x1=0, y1=0, x2, y2, mode=0;
MyCanvas(){
addMouseListener(this);
}
public void paint(Graphics g){
g.setColor(Color.red);
g.drawLine(x1, y1, x2, y2);
}
public void mouseClicked(MouseEvent e){ //在该方法中对画线坐标进行调整
if (mode==1 && x1==0 && y1==0){
x1 = e.getX(); y1 = e.getY();
x2 = e.getX(); y2 = e.getY();
}
else if (mode==1){
x1 = x2; y1 = y2;
x2 = e.getX(); y2 = e.getY();
//getGraphics().setColor(Color.red);
setForeground(Color.red); //设置当前画布的前景颜色
//获得当前画布的Graphics类对象,并在该对象上画线
getGraphics().drawLine(x1, y1, x2, y2);
}
}
public void mousePressed(MouseEvent e){ //一下六个方法可以空实现
}
public void mouseReleased(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mouseDragged(MouseEvent e){
}
public void mouseMoved(MouseEvent e){
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -