?? 306f22af4a2e001d1f09d62187e4b066
字號:
package d;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.Vector;
import javax.swing.JColorChooser;
import javax.swing.JOptionPane;
public class drawbord extends Frame implements ActionListener,MouseMotionListener,MouseListener,Serializable
{
private Button rec,lin,ov,bc,dk,qk,sz,gs;
Color c=Color.BLACK;
int flag=-1;
shap sh;
shap s;
Point m=new Point();
Point n=new Point();
Point sbb=new Point();
Point sbe=new Point();
Point tsbb=new Point();
Point tsbe=new Point();
Panel bord;
Vector<shap> al=new Vector<shap>();
Vector<shap> a=new Vector<shap>();
FileInputStream picin = null;
FileOutputStream picout = null;
ObjectInputStream vin = null;
ObjectOutputStream vout = null;
FileDialog openpicture,savepicture;
public drawbord(String s)
{
super(s);
bord=new Panel();
rec=new Button("畫矩形");
lin=new Button("畫直線");
ov=new Button("畫圓");
bc=new Button("保存圖畫");
dk=new Button("打開圖畫");
qk=new Button("清空");
sz=new Button("選中");
gs=new Button("調色板");
bord.add(dk);
bord.add(bc);
bord.add(rec);
bord.add(ov);
bord.add(lin);
bord.add(qk);
bord.add(sz);
bord.add(gs);
this.add(bord,BorderLayout.NORTH);
rec.addActionListener(this);
lin.addActionListener(this);
ov.addActionListener(this);
qk.addActionListener(this);
dk.addActionListener(this);
bc.addActionListener(this);
sz.addActionListener(this);
gs.addActionListener(this);
addMouseListener(this);
addMouseMotionListener(this);
openpicture = new FileDialog(this,"打開圖畫",FileDialog.LOAD);
openpicture.setVisible(false);
savepicture = new FileDialog(this,"保存圖畫",FileDialog.SAVE);
savepicture.setVisible(false);
openpicture.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{ openpicture.setVisible(false); }
});
savepicture.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{ savepicture.setVisible(false); }
});
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{ System.exit(0);
}
});
this.validate();
this.setSize(900,600);
this.setLocation(60, 60);
this.setVisible(true);
}
public void paint(Graphics g){
if(flag==0)
{
g.clearRect(0,0,this.getSize().width,this.getSize().height);//清除
al.removeAllElements();
}
if(flag==4){
for(int i=0;i<a.size();i++)
a.get(i).draw(g);
}
for(int j=0;j<al.size();j++)
al.get(j).draw(g);
}
@SuppressWarnings("unchecked")
public void actionPerformed(ActionEvent e) {
if(e.getSource()==rec){
flag=1;
}
if(e.getSource()==lin){
flag=2;
}
if(e.getSource()==ov){
flag=3;
}
if(e.getSource()==qk){
flag=0;
repaint();
}
if(e.getSource()==sz){
flag=4;
}
if(e.getSource()==gs){
flag=7;
Color newcolor = JColorChooser.showDialog(this,"調色板",c);
if(newcolor==null)
{
newcolor=Color.BLACK;
}
for(int hy=0;hy<al.size();hy++)
{
if(al.get(hy).isseclect())
al.get(hy).getshapecolor(newcolor);
}
this.repaint();
}
if(e.getSource()==dk){
openpicture.setVisible(true);
if(openpicture.getFile()!=null)
{
int tempflag;
tempflag = flag;
flag = 0 ;
repaint();
try{
al.removeAllElements();
File filein = new File(openpicture.getDirectory(),openpicture.getFile());
picin = new FileInputStream(filein);
vin = new ObjectInputStream(picin);
Vector<shap> readObject = (Vector<shap>) vin.readObject();
al = readObject;
vin.close();
flag = -1;
repaint();
}
catch(ClassNotFoundException ioe2)
{
repaint();
flag = tempflag;
JOptionPane.showMessageDialog(null, "不能讀的對象??!");
}
catch(IOException ioe)
{
repaint();
flag = tempflag;
JOptionPane.showMessageDialog(null, "不能讀的文件??!");
}
}
}
if(e.getSource()==bc){
savepicture.setVisible(true);
try{
File fileout = new File(savepicture.getDirectory(),savepicture.getFile());
picout = new FileOutputStream(fileout);
vout = new ObjectOutputStream(picout);
vout.writeObject(al);
vout.close();
}
catch(IOException ioe)
{
JOptionPane.showMessageDialog(null, "不能讀的對象?。?quot;);
}
}
}
public void mouseDragged(MouseEvent e) {
if(flag!=-1&&flag!=4&&flag!=5&&flag!=6&&flag!=7)
{
sh.setPe(e.getPoint());
this.repaint();
}
if(flag==4){
s.setPe(e.getPoint());
this.repaint();
}
if(flag==6){
this.tsbe=e.getPoint();
for(int k=0;k<al.size();k++)
{
if(al.get(k).isseclect())
al.get(k).xzmove(tsbe.x-tsbb.x,tsbe.y-tsbb.y);
}
this.repaint();
}
}
public void mousePressed(MouseEvent e) {
m=e.getPoint();
switch(flag){
case 1: sh=new shaprec(e.getPoint(),e.getPoint());
sh.setPe(e.getPoint());
al.add(sh);
break;
case 2: sh=new shapline(e.getPoint(),e.getPoint());
sh.setPe(e.getPoint());
al.add(sh);
break;
case 3:sh=new shapoval(e.getPoint(),e.getPoint());
sh.setPe(e.getPoint());
al.add(sh);
break;
case 4: s=new shaprec(e.getPoint(),e.getPoint());
s.setPe(e.getPoint());
a.add(s);
this.sbb=e.getPoint();
break;
case 6:this.tsbb=e.getPoint();
break;
default :
}
}
public void mouseReleased(MouseEvent e) {
if(flag!=-1&&flag!=4&&flag!=5&&flag!=6&&flag!=7)
{
int len=al.size();
al.get(len-1).setPe(e.getPoint());
al.get(len-1).baocunp(m, e.getPoint());
this.repaint();
}
if(flag==4){
a.removeAllElements();
flag=5;
this.sbe=e.getPoint();
for(int js=0;js<al.size();js++)
al.get(js).getmou(this.sbb, this.sbe);
this.repaint();
flag=6;
return;
}
if(flag==6){
this.tsbe=e.getPoint();
for(int k=0;k<al.size();k++)
{
if(al.get(k).isseclect())
al.get(k).xzmove(tsbe.x-tsbb.x,tsbe.y-tsbb.y);
}
this.repaint();
}
}
public void mouseMoved(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -