⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hsdraw1.java

📁 这是一个java画图程序。非常的好。里面提供了几种色彩的画笔。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*画图程序*画笔有7种颜色5种模式*/
import java.awt.* ; 
import javax.swing.* ; 
import java.awt.event.* ; 
import java.io.* ; 

public class HsDraw1 extends JFrame { 
static JTextField tt = new JTextField("") ; 

HsDraw1(String title) { 
//设置窗体属性 
this.setTitle(title) ; 

int width = (int)Toolkit.getDefaultToolkit().getScreenSize().getWidth() ; 
int height = (int)Toolkit.getDefaultToolkit().getScreenSize().getHeight() ; 
this.setSize(width , height) ; 

MyPanel mp = new MyPanel() ; 
this.add(mp , BorderLayout.CENTER) ; 

mp.addMouseListener(mp) ; 
mp.addMouseMotionListener(mp) ; 
this.addWindowListener(mp) ; 

//new 按妞类 
JButton b_red = new JButton("red") ; 
b_red.setForeground(Color.red) ; 

JButton b_yellow = new JButton("yellow") ; 
b_yellow.setForeground(Color.yellow) ; 

JButton b_blue = new JButton("blue") ; 
b_blue.setForeground(Color.blue) ; 

JButton b_black = new JButton("black") ; 

JButton b_green = new JButton("green") ; 
b_green.setForeground(Color.green) ; 

JButton b_orange = new JButton("orange") ; 
b_orange.setForeground(Color.orange) ; 

JButton b_pink = new JButton("pink") ; 
b_pink.setForeground(Color.pink) ; 

JButton b_line = new JButton("Line") ; 
JButton b_oval = new JButton("Oval") ; 
JButton b_rect = new JButton("Rect") ; 
JButton b_clear = new JButton("clear") ; 
JButton b_filloval = new JButton("fillOval") ; 
JButton b_fillrect = new JButton("fillRect") ; 

JButton b_open = new JButton("OPEN") ; 
JButton b_save = new JButton("SAVE") ; 

//注册按妞事件监听 
b_red.addActionListener(mp) ; 
b_yellow.addActionListener(mp) ; 
b_blue.addActionListener(mp) ; 
b_black.addActionListener(mp) ; 
b_green.addActionListener(mp) ; 
b_orange.addActionListener(mp) ; 
b_pink.addActionListener(mp) ; 

b_line.addActionListener(mp) ; 
b_oval.addActionListener(mp) ; 
b_rect.addActionListener(mp) ; 
b_clear.addActionListener(mp) ; 
b_filloval.addActionListener(mp) ; 
b_fillrect.addActionListener(mp) ; 

b_open.addActionListener(mp) ; 
b_save.addActionListener(mp) ; 

//设置颜色按妞面版 
JPanel p_color = new JPanel(new FlowLayout()) ; 
p_color.add(b_red) ; 
p_color.add(b_yellow) ; 
p_color.add(b_blue) ; 
p_color.add(b_black) ; 
p_color.add(b_green) ; 
p_color.add(b_orange) ; 
p_color.add(b_pink) ; 

//设置功能键区按妞面版 
JPanel p_bfile = new JPanel(new GridLayout(2 , 1)) ; 
p_bfile.add(b_open) ; 
p_bfile.add(b_save) ; 

JPanel p_file = new JPanel(new BorderLayout()) ; 
p_file.add(p_bfile , BorderLayout.WEST) ; 
p_file.add(tt , BorderLayout.CENTER) ; 

JPanel p_gongneng = new JPanel(new FlowLayout()) ; 
p_gongneng.add(b_line) ; 
p_gongneng.add(b_oval) ; 
p_gongneng.add(b_rect) ; 
p_gongneng.add(b_filloval) ; 
p_gongneng.add(b_fillrect) ; 
p_gongneng.add(b_clear) ; 

JPanel p_gongnengs = new JPanel(new GridLayout(1 , 2)) ; 
p_gongnengs.add(p_file) ; 
p_gongnengs.add(p_gongneng) ; 

//设置窗体 
this.add(p_color , BorderLayout.SOUTH) ; 
this.add(p_gongnengs , BorderLayout.NORTH) ; 
} 

public static void main(String[] args) { 
JFrame.setDefaultLookAndFeelDecorated(true) ; 
HsDraw1 m = new HsDraw1("Zhoudl") ; 

m.setVisible(true) ; 
} 
} 

class MyPanel extends JPanel implements MouseMotionListener, MouseListener, ActionListener, WindowListener { 

int num = 300 ;//大小可调,各种图形的上限 
int oo = 0 ;//画笔的当前状态 0-line , 1-oval , 2-rect ,3-filloval ,4-fillrect 

//记录器 
int ltp = 0 ; 
int otp = 0 ; 
int rtp = 0 ; 
int fotp = 0 ; 
int frtp = 0 ; 

//定义用来保存图象颜色的数组 
int[] lcolor = new int[num] ;// 0-red , 1-yellow , 2-blue , 3-black ,4-greed,5-orange,6-pink 
int[] ocolor = new int[num] ;// 0-red , 1-yellow , 2-blue , 3-black ,4-greed,5-orange,6-pink 
int[] rcolor = new int[num] ;// 0-red , 1-yellow , 2-blue , 3-black ,4-greed,5-orange,6-pink 
int[] focolor = new int[num] ;// 0-red , 1-yellow , 2-blue , 3-black ,4-greed,5-orange,6-pink 
int[] frcolor = new int[num] ;// 0-red , 1-yellow , 2-blue , 3-black ,4-greed,5-orange,6-pink 

//定义用来保存图象数据的数组 
int[] lx1 = new int[num] ;  
int[] ly1 = new int[num] ; 
int[] lx2 = new int[num] ; 
int[] ly2 = new int[num] ; 

int[] ox1 = new int[num] ;  
int[] oy1 = new int[num] ; 
int[] ox2 = new int[num] ; 
int[] oy2 = new int[num] ; 

int[] rx1 = new int[num] ;  
int[] ry1 = new int[num] ; 
int[] rx2 = new int[num] ; 
int[] ry2 = new int[num] ; 

int[] fox1 = new int[num] ;  
int[] foy1 = new int[num] ; 
int[] fox2 = new int[num] ; 
int[] foy2 = new int[num] ; 

int[] frx1 = new int[num] ;  
int[] fry1 = new int[num] ; 
int[] frx2 = new int[num] ; 
int[] fry2 = new int[num] ; 

//构造函数,初始化画笔颜色 
MyPanel() { 
lcolor[0] = 3 ; 
ocolor[0] = 3 ; 
rcolor[0] = 3 ; 
focolor[0] = 3 ; 
frcolor[0] = 3 ; 
} 
public void paint(Graphics g) { 
super.paint(g) ;//刷新界面 

this.setBackground(Color.white) ;//设置背景色 

this.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)) ;//设置指针样式 

//画线 
for (int i = 0 ; i<ltp + 1 ; i++){ 
switch (lcolor[i]) { 
  case 0: g.setColor(Color.red) ; break; 
  case 1: g.setColor(Color.yellow) ; break; 
  case 2: g.setColor(Color.blue) ; break; 
  case 3: g.setColor(Color.black) ; break; 
  case 4: g.setColor(Color.green) ; break ; 
  case 5: g.setColor(Color.orange) ; break ; 
  case 6: g.setColor(Color.pink) ; break ; 
 } 
g.drawLine(lx1[i] , ly1[i] , lx2[i] , ly2[i]) ; 
} 

//画圆 
for (int i = 0 ; i< otp + 1 ; i++){ 
switch (ocolor[i]) { 
  case 0: g.setColor(Color.red) ; break; 
  case 1: g.setColor(Color.yellow) ; break; 
  case 2: g.setColor(Color.blue) ; break; 
  case 3: g.setColor(Color.black) ; break; 
  case 4: g.setColor(Color.green) ; break ; 
  case 5: g.setColor(Color.orange) ; break ; 
  case 6: g.setColor(Color.pink) ; break ; 
 } 
  
 if(ox2[i] > ox1[i]) { 
  if(oy2[i] > oy1[i]) { 
  g.drawOval(ox1[i] , oy1[i] , ox2[i] - ox1[i] , oy2[i] - oy1[i]) ; 
   }else{ 
  g.drawOval(ox1[i] , oy2[i] , ox2[i] - ox1[i] , oy1[i] - oy2[i]) ; 
  } 
 }else{ 
  if(oy2[i] > oy1[i]) { 
  g.drawOval(ox2[i] , oy1[i] , ox1[i] - ox2[i] , oy2[i] - oy1[i]) ; 
  }else{ 
  g.drawOval(ox2[i] , oy2[i] , ox1[i] - ox2[i] , oy1[i] - oy2[i]) ; 
  } 
 } 
} 

//画矩形 
for (int i = 0 ; i< rtp + 1 ; i++){ 
switch (rcolor[i]) { 
  case 0: g.setColor(Color.red) ; break; 
  case 1: g.setColor(Color.yellow) ; break; 
  case 2: g.setColor(Color.blue) ; break; 
  case 3: g.setColor(Color.black) ; break; 
  case 4: g.setColor(Color.green) ; break ; 
  case 5: g.setColor(Color.orange) ; break ; 
  case 6: g.setColor(Color.pink) ; break ; 
 } 

if(rx2[i] > rx1[i]) { 
  if(ry2[i] > ry1[i]) { 
  g.drawRect(rx1[i] , ry1[i] , rx2[i] - rx1[i] , ry2[i] - ry1[i]) ; 
  }else{ 
  g.drawRect(rx1[i] , ry2[i] , rx2[i] - rx1[i] , ry1[i] - ry2[i]) ; 
  } 
 }else{ 
  if(ry2[i] > ry1[i]) { 
  g.drawRect(rx2[i] , ry1[i] , rx1[i] - rx2[i] , ry2[i] - ry1[i]) ; 
  }else{ 
  g.drawRect(rx2[i] , ry2[i] , rx1[i] - rx2[i] , ry1[i] - ry2[i]) ; 
  } 
 } 
} 

//画实心圆 
for (int i = 0 ; i< fotp + 1 ; i++){ 
switch (focolor[i]) { 
  case 0: g.setColor(Color.red) ; break; 
  case 1: g.setColor(Color.yellow) ; break; 
  case 2: g.setColor(Color.blue) ; break; 
  case 3: g.setColor(Color.black) ; break; 
  case 4: g.setColor(Color.green) ; break ; 
  case 5: g.setColor(Color.orange) ; break ; 
  case 6: g.setColor(Color.pink) ; break ; 
 } 
  
 if(fox2[i] > fox1[i]) { 
  if(foy2[i] > foy1[i]) { 
  g.fillOval(fox1[i] , foy1[i] , fox2[i] - fox1[i] , foy2[i] - foy1[i]) ; 
  }else{ 
  g.fillOval(fox1[i] , foy2[i] , fox2[i] - fox1[i] , foy1[i] - foy2[i]) ; 
  } 
 }else{ 
  if(foy2[i] > foy1[i]) { 
  g.fillOval(fox2[i] , foy1[i] , fox1[i] - fox2[i] , foy2[i] - foy1[i]) ; 
  }else{ 
  g.fillOval(fox2[i] , foy2[i] , fox1[i] - fox2[i] , foy1[i] - foy2[i]) ; 
  } 
 } 
} 

//画实心矩形 
for (int i = 0 ; i< frtp + 1 ; i++){ 
switch (frcolor[i]) { 
  case 0: g.setColor(Color.red) ; break; 
  case 1: g.setColor(Color.yellow) ; break; 
  case 2: g.setColor(Color.blue) ; break; 
  case 3: g.setColor(Color.black) ; break; 
  case 4: g.setColor(Color.green) ; break ; 
  case 5: g.setColor(Color.orange) ; break ; 
  case 6: g.setColor(Color.pink) ; break ; 
 } 

if(frx2[i] > frx1[i]) { 
  if(fry2[i] > fry1[i]) { 
  g.fillRect(frx1[i] , fry1[i] , frx2[i] - frx1[i] , fry2[i] - fry1[i]) ; 
  }else{ 
  g.fillRect(frx1[i] , fry2[i] , frx2[i] - frx1[i] , fry1[i] - fry2[i]) ; 
  } 
 }else{ 
  if(fry2[i] > fry1[i]) { 
  g.fillRect(frx2[i] , fry1[i] , frx1[i] - frx2[i] , fry2[i] - fry1[i]) ; 
  }else{ 
  g.fillRect(frx2[i] , fry2[i] , frx1[i] - frx2[i] , fry1[i] - fry2[i]) ; 
  } 
 } 
} 
} 


//鼠标按下移动事件 
public void mouseDragged(MouseEvent e) { 
if(oo == 0) { 
lx2[ltp] = e.getX() ; 
ly2[ltp] = e.getY() ; 
} 

if(oo == 1) { 
ox2[otp] = e.getX() ; 
oy2[otp] = e.getY() ; 
} 

if(oo == 2) { 
rx2[rtp] = e.getX() ; 
ry2[rtp] = e.getY() ; 
} 

if(oo == 3) { 
fox2[fotp] = e.getX() ; 
foy2[fotp] = e.getY() ; 
} 

if(oo == 4) { 
frx2[frtp] = e.getX() ; 
fry2[frtp] = e.getY() ; 
} 

this.repaint() ; 
} 

public void mouseMoved(MouseEvent e) { 

} 

public void mouseClicked(MouseEvent e) { 

} 

//鼠标按下 
public void mousePressed(MouseEvent e) { 
if(oo == 0) { 
lx1[ltp] = e.getX() ; 
ly1[ltp] = e.getY() ; 
} 

if(oo == 1) { 
ox1[otp] = e.getX() ; 
oy1[otp] = e.getY() ; 
} 

if(oo == 2) { 
rx1[rtp] = e.getX() ; 
ry1[rtp] = e.getY() ; 
} 

if(oo == 3) { 
fox1[fotp] = e.getX() ; 
foy1[fotp] = e.getY() ; 
} 

if(oo == 4) { 
frx1[frtp] = e.getX() ; 
fry1[frtp] = e.getY() ; 
} 
} 

//鼠标松开 
public void mouseReleased(MouseEvent e) { 
if(oo == 0) { 
System.out.println ("ltp = " + ltp) ; 
lx2[ltp] = e.getX() ; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -