📄 draw.java
字号:
import java.awt.*;
import java.awt.event.*;
public class draw extends Frame implements ActionListener, MouseListener
{
Button xian =new Button("线");
Button fang =new Button("矩形");
Button yuan =new Button("圆");
Button hong =new Button("红");
Button lv =new Button("绿");
Button lan =new Button("蓝");
Panel p1,p2;
//六个按钮和2个面板
Graphics g;//画笔
Color c; //用来保存用户选择的颜色
int xingzhuang;//用来保存用户选择的形状
int x,y; //用来保存用户按下鼠标开始坐标
boolean b=false; //判断用户是否已经选择了要画图
draw()
{
c=Color.blue;
xingzhuang=x=y=0;//初始化参数
p1=new Panel(new GridLayout(2,3));
p1.add(xian);
p1.add(fang);
p1.add(yuan);
p1.add(hong);
p1.add(lv);
p1.add(lan);
p2=new Panel();
this.add(p1,"North");
this.add(p2,"Center");//设置布局
p2.addMouseListener(this);//为画图的面板添加鼠标监听
xian.addActionListener(this);
fang.addActionListener(this);
yuan.addActionListener(this);
hong.addActionListener(this);
lv.addActionListener(this);
lan.addActionListener(this); //为按钮添加监听
this.setTitle("一个简单的画图程序");
this.setSize(400,400);
Dimension d=Toolkit.getDefaultToolkit().getScreenSize();//获得屏幕大小
this.setLocation((d.width-400)/2,(d.height-400)/2);//设置本窗口居中
this.setResizable(false);//设置本窗口不可以再调整大小
this.setVisible(true);
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void get()
{
g=p2.getGraphics();//获得面板的画笔
g.setXORMode(Color.white);//在画图有覆盖的地方用白色中和
}
public static void main(String args[])
{
draw my=new draw();//显示窗口
my.get();//获得画笔
}
public void actionPerformed(ActionEvent e)
{
String str=e.getActionCommand();//获得按钮上的标签值
if(str.equals("线"))
{
xingzhuang=1;
b=true;
}
else if(str.equals("矩形"))
{
xingzhuang=2;
b=true;
}
else if(str.equals("圆"))
{
xingzhuang=3;
b=true;
}//如果是点击的图形按钮,将形状记录下来,并将绘画状态设置为真
else if(str.equals("红"))
c=Color.red;
else if(str.equals("绿"))
c=Color.green;
else
c=Color.blue;//如果是点击的颜色按钮,将颜色记录下来
}
public void mousePressed(MouseEvent e)
{//鼠标按下后,记录坐标,如果画图状态为真就把鼠标的指针改变
x=e.getX();
y=e.getY();
if(b==true)
this.setCursor(Cursor.CROSSHAIR_CURSOR);
}
public void mouseReleased(MouseEvent e)
{//鼠标释放后,如果画图状态为真才开始画图,否则不予理睬,并将鼠标的指针恢复
if(b==true)
this.setCursor(Cursor.DEFAULT_CURSOR);
if(b==true)
{
g.setColor(c);//首先将画笔的颜色设置为用户选择的颜色
switch(xingzhuang)
{//然后根据不同的形状,画出不同的图形
case 1:
g.drawLine(x,y,e.getX(),e.getY());
break;
case 2:
g.fill3DRect(x,y,e.getX(),e.getY(),true);
break;
case 3:
g.fillOval(x,y,e.getX(),e.getY());
break;
}
}
}
public void mouseClicked(MouseEvent parm1){}
public void mouseEntered(MouseEvent parm1){}
public void mouseExited(MouseEvent parm1) {}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -