📄 ht.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.image.*;
import java.io.*;
import com.sun.image.codec.jpeg.*;
class ht extends Frame implements ActionListener,MouseListener,KeyListener
{
private int w;
private int h;
Color c;
Graphics g;
boolean ht=false;
boolean zy=false;
boolean tc=false;
int xz=0;
int x,y;
String path1=null;
Frame f=new Frame("画图工具");
Button b1=new Button("线");
Button b2=new Button("矩形");
Button b3=new Button("圆");
Button b4=new Button("红");
Button b5=new Button("绿");
Button b6=new Button("蓝");
Button b7=new Button("网格");
Button b8=new Button("清除网格");
Button b9=new Button("刷新");
Button b0=new Button("图片另存为..");
Button b10=new Button("填充");
Button b11=new Button("取消填充");
Panel p1=new Panel();
Panel p2=new Panel();
BufferedImage bi;
Graphics2D gg;
ht()
{
bi=new BufferedImage(400,400,BufferedImage.TYPE_INT_RGB);
gg=bi.createGraphics();
p1.setLayout(new GridLayout(3,3));
p1.add(b1);
p1.add(b2);
p1.add(b3);
p1.add(b4);
p1.add(b5);
p1.add(b6);
p1.add(b7);
p1.add(b8);
p1.add(b9);
p1.add(b0);
p1.add(b10);
p1.add(b11);
f.add(p1,"North");
f.add(p2,"Center");
p2.addKeyListener(this);
p2.addMouseListener(this);
b0.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b10.addActionListener(this);
b11.addActionListener(this);
f.setSize(400,400);
double w=Toolkit.getDefaultToolkit().getScreenSize().getWidth();
double h=Toolkit.getDefaultToolkit().getScreenSize().getHeight();
f.setLocation((int)((w-400)/2),(int)((h-400)/2));
f.setVisible(true);
f.setResizable(false);
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void get()
{
c=Color.blue;
g=p2.getGraphics();//获得面板的画笔
//g.setXORMode(Color.white);//在画图有覆盖的地方用白色中和
}
public static void main(String args[])
{
ht my=new ht();
my.get();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b0)
{
try
{
FileDialog fd=new FileDialog(new Frame(),"另存为..",FileDialog.SAVE);
fd.setVisible(true);
path1=fd.getDirectory()+fd.getFile();
FileOutputStream fos=new FileOutputStream(path1);
BufferedOutputStream bos=new BufferedOutputStream(fos);
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(bos);
encoder.encode(bi);
bos.close();
}
catch(Exception ex)
{
System.out.println ("保存失败!");
}
}
if(e.getSource()==b10)
{
tc=true;
}
if(e.getSource()==b11)
{
tc=false;
}
if(e.getSource()==b1)
{ht=true;
xz=1;
}
else if(e.getSource()==b2)
{
ht=true;
xz=2;
}
else if(e.getSource()==b3)
{
ht=true;
xz=3;
}
else if(e.getSource()==b4)
{
c=Color.red;
}
else if(e.getSource()==b5)
{ c=Color.green;
}
else if(e.getSource()==b6)
{ c=Color.blue;
}
else if(e.getSource()==b7)
{
for(int i=0;i<=400;i+=20)
{
gg.setColor(Color.black);
g.setColor(Color.black);
g.drawLine(i,0,i,400);
g.drawLine(0,i,400,i);
gg.drawLine(i,0,i,400);
gg.drawLine(0,i,400,i);
}
}
else if(e.getSource()==b8)
{
for(int j=0;j<=400;j+=20)
{
g.setColor(Color.white);
g.setColor(Color.white);
g.drawLine(j,0,j,400);
g.drawLine(0,j,400,j);
gg.drawLine(j,0,j,400);
gg.drawLine(0,j,400,j);
}
}
else if(e.getSource()==b9)
{
gg.setColor(Color.white);
g.setColor(Color.white);
g.fillRect(0,0,400,400);
gg.fillRect(0,0,400,400);
}
}
public void mousePressed(MouseEvent e)
{
x=e.getX();
y=e.getY();
}
public void mouseReleased(MouseEvent e)
{
if(ht==true){
g.setColor(c);
gg.setColor(c);
switch(xz){
case 1:{
g.drawLine(x,y,e.getX(),e.getY());
gg.drawLine(x,y,e.getX(),e.getY());
break;
}
case 2:{
if(zy==true){
if(tc==true)//为真则为填充,为假就画空心
{
if(x>e.getX())
{
g.fillRect(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
gg.fillRect(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
break;
}
else
{
g.fillRect(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
gg.fillRect(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
break;
}
}
else
{
if(x>e.getX())
{
g.drawRect(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
gg.drawRect(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
break;
}
else
{
g.drawRect(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
gg.drawRect(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
break;
}
}
}
else
{
if(tc==true)//为真则为填充,为假就画空心
{
if(x>e.getX())
{
g.fillRect(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
gg.fillRect(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
break;
}
else
{
g.fillRect(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
gg.fillRect(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
break;
}
}
else
{
if(x>e.getX())
{
g.drawRect(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
gg.drawRect(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
break;
}
else
{
g.drawRect(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
gg.drawRect(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
break;
}
}
}
}
case 3:
{
if(zy==false){
if(tc==true)//为真则为填充,为假就画空心
{
if(x>e.getX())
{
g.fillOval(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
gg.fillOval(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
break;
}
else
{
g.fillOval(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
gg.fillOval(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
break;
}
}
else
{
if(x>e.getX())
{
g.drawOval(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
gg.drawOval(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
break;
}
else
{
g.drawOval(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
gg.drawOval(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getY()-y)));
break;
}
}
}
else
{
if(tc==true)//为真则为填充,为假就画空心
{
if(x>e.getX())
{
g.fillOval(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
gg.fillOval(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
break;
}
else
{
g.fillOval(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
gg.fillOval(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
break;
}
}
else
{
if(x>e.getX())
{
g.drawOval(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
gg.drawOval(e.getX(),e.getY(),(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
break;
}
else
{
g.drawOval(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
gg.drawOval(x,y,(int)(Math.abs(e.getX()-x)),(int)(Math.abs(e.getX()-x)));
break;
}
}
}
}
}
}
}
public void mouseEntered(MouseEvent e)
{}
public void mouseExited(MouseEvent e)
{}
public void mouseClicked(MouseEvent e)
{}
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==16)
zy=true;
if(e.getKeyCode()==116)
{
gg.setColor(Color.white);
g.setColor(Color.white);
g.fillRect(0,0,400,400);
gg.fillRect(0,0,400,400);
}
}
public void keyReleased(KeyEvent e)
{
zy=false;
}
public void keyTyped(KeyEvent e)
{}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -