用java代碼畫畫軟件 用java代碼畫畫軟件教程

用JAVA做個畫筆,有畫筆和橡皮功能就行。越簡單越好

新建一個java文件,取名叫做PaintJava.java

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)墾利免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

代碼如下:

import java.applet.*;

import java.awt.*;

import java.awt.event.*;

import java.util.*;

import javax.swing.*;

import java.awt.geom.*;

import java.io.*;

class Point implements Serializable

{

int x,y;

Color col;

int tool;

int boarder;

Point(int x, int y, Color col, int tool, int boarder)

{

this.x = x;

this.y = y;

this.col = col;

this.tool = tool;

this.boarder = boarder;

}

}

class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener

{

int x = -1, y = -1;

int con = 1;//畫筆大小

int Econ = 5;//橡皮大小

int toolFlag = 0;//toolFlag:工具標記

//toolFlag工具對應(yīng)表:

//(0--畫筆);(1--橡皮);(2--清除);

//(3--直線);(4--圓);(5--矩形);

Color c = new Color(0,0,0); //畫筆顏色

BasicStroke size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//畫筆粗細

Point cutflag = new Point(-1, -1, c, 6, con);//截斷標志

Vector paintInfo = null;//點信息向量組

int n = 1;

FileInputStream picIn = null;

FileOutputStream picOut = null;

ObjectInputStream VIn = null;

ObjectOutputStream VOut = null;

// *工具面板--畫筆,直線,圓,矩形,多邊形,橡皮,清除*/

Panel toolPanel;

Button eraser, drLine,drCircle,drRect;

Button clear ,pen;

Choice ColChoice,SizeChoice,EraserChoice;

Button colchooser;

Label 顏色,大小B,大小E;

//保存功能

Button openPic,savePic;

FileDialog openPicture,savePicture;

paintboard(String s)

{

super(s);

addMouseMotionListener(this);

addMouseListener(this);

paintInfo = new Vector();

/*各工具按鈕及選擇項*/

//顏色選擇

ColChoice = new Choice();

ColChoice.add("black");

ColChoice.add("red");

ColChoice.add("blue");

ColChoice.add("green");

ColChoice.addItemListener(this);

//畫筆大小選擇

SizeChoice = new Choice();

SizeChoice.add("1");

SizeChoice.add("3");

SizeChoice.add("5");

SizeChoice.add("7");

SizeChoice.add("9");

SizeChoice.addItemListener(this);

//橡皮大小選擇

EraserChoice = new Choice();

EraserChoice.add("5");

EraserChoice.add("9");

EraserChoice.add("13");

EraserChoice.add("17");

EraserChoice.addItemListener(this);

////////////////////////////////////////////////////

toolPanel = new Panel();

clear = new Button("清除");

eraser = new Button("橡皮");

pen = new Button("畫筆");

drLine = new Button("畫直線");

drCircle = new Button("畫圓形");

drRect = new Button("畫矩形");

openPic = new Button("打開圖畫");

savePic = new Button("保存圖畫");

colchooser = new Button("顯示調(diào)色板");

//各組件事件監(jiān)聽

clear.addActionListener(this);

eraser.addActionListener(this);

pen.addActionListener(this);

drLine.addActionListener(this);

drCircle.addActionListener(this);

drRect.addActionListener(this);

openPic.addActionListener(this);

savePic.addActionListener(this);

colchooser.addActionListener(this);

顏色 = new Label("畫筆顏色",Label.CENTER);

大小B = new Label("畫筆大小",Label.CENTER);

大小E = new Label("橡皮大小",Label.CENTER);

//面板添加組件

toolPanel.add(openPic);

toolPanel.add(savePic);

toolPanel.add(pen);

toolPanel.add(drLine);

toolPanel.add(drCircle);

toolPanel.add(drRect);

toolPanel.add(顏色); toolPanel.add(ColChoice);

toolPanel.add(大小B); toolPanel.add(SizeChoice);

toolPanel.add(colchooser);

toolPanel.add(eraser);

toolPanel.add(大小E); toolPanel.add(EraserChoice);

toolPanel.add(clear);

//工具面板到APPLET面板

add(toolPanel,BorderLayout.NORTH);

setBounds(60,60,900,600); setVisible(true);

validate();

//dialog for save and load

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); }

});

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{ System.exit(0);}

});

}

public void paint(Graphics g)

{

Graphics2D g2d = (Graphics2D)g;

Point p1,p2;

n = paintInfo.size();

if(toolFlag==2)

g.clearRect(0,0,getSize().width,getSize().height);//清除

for(int i=0; in ;i++){

p1 = (Point)paintInfo.elementAt(i);

p2 = (Point)paintInfo.elementAt(i+1);

size = new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

g2d.setColor(p1.col);

g2d.setStroke(size);

if(p1.tool==p2.tool)

{

switch(p1.tool)

{

case 0://畫筆

Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y);

g2d.draw(line1);

break;

case 1://橡皮

g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder);

break;

case 3://畫直線

Line2D line2 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y);

g2d.draw(line2);

break;

case 4://畫圓

Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y));

g2d.draw(ellipse);

break;

case 5://畫矩形

Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x) , Math.abs(p2.y-p1.y));

g2d.draw(rect);

break;

case 6://截斷,跳過

i=i+1;

break;

default :

}//end switch

}//end if

}//end for

}

public void itemStateChanged(ItemEvent e)

{

if(e.getSource()==ColChoice)//預(yù)選顏色

{

String name = ColChoice.getSelectedItem();

if(name=="black")

{c = new Color(0,0,0); }

else if(name=="red")

{c = new Color(255,0,0);}

else if(name=="green")

{c = new Color(0,255,0);}

else if(name=="blue")

{c = new Color(0,0,255);}

}

else if(e.getSource()==SizeChoice)//畫筆大小

{

String selected = SizeChoice.getSelectedItem();

if(selected=="1")

{

con = 1;

size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

else if(selected=="3")

{

con = 3;

size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

else if(selected=="5")

{con = 5;

size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

else if(selected=="7")

{con = 7;

size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

else if(selected=="9")

{con = 9;

size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

}

else if(e.getSource()==EraserChoice)//橡皮大小

{

String Esize = EraserChoice.getSelectedItem();

if(Esize=="5")

{ Econ = 5*2; }

else if(Esize=="9")

{ Econ = 9*2; }

else if(Esize=="13")

{ Econ = 13*2; }

else if(Esize=="17")

{ Econ = 17*3; }

}

}

public void mouseDragged(MouseEvent e)

{

Point p1 ;

switch(toolFlag){

case 0://畫筆

x = (int)e.getX();

y = (int)e.getY();

p1 = new Point(x, y, c, toolFlag, con);

paintInfo.addElement(p1);

repaint();

break;

case 1://橡皮

x = (int)e.getX();

y = (int)e.getY();

p1 = new Point(x, y, null, toolFlag, Econ);

paintInfo.addElement(p1);

repaint();

break;

default :

}

}

public void mouseMoved(MouseEvent e) {}

public void update(Graphics g)

{

paint(g);

}

public void mousePressed(MouseEvent e)

{

Point p2;

switch(toolFlag){

case 3://直線

x = (int)e.getX();

y = (int)e.getY();

p2 = new Point(x, y, c, toolFlag, con);

paintInfo.addElement(p2);

break;

case 4: //圓

x = (int)e.getX();

y = (int)e.getY();

p2 = new Point(x, y, c, toolFlag, con);

paintInfo.addElement(p2);

break;

case 5: //矩形

x = (int)e.getX();

y = (int)e.getY();

p2 = new Point(x, y, c, toolFlag, con);

paintInfo.addElement(p2);

break;

default :

}

}

public void mouseReleased(MouseEvent e)

{

Point p3;

switch(toolFlag){

case 0://畫筆

paintInfo.addElement(cutflag);

break;

case 1: //eraser

paintInfo.addElement(cutflag);

break;

case 3://直線

x = (int)e.getX();

y = (int)e.getY();

p3 = new Point(x, y, c, toolFlag, con);

paintInfo.addElement(p3);

paintInfo.addElement(cutflag);

repaint();

break;

case 4: //圓

x = (int)e.getX();

y = (int)e.getY();

p3 = new Point(x, y, c, toolFlag, con);

paintInfo.addElement(p3);

paintInfo.addElement(cutflag);

repaint();

break;

case 5: //矩形

x = (int)e.getX();

y = (int)e.getY();

p3 = new Point(x, y, c, toolFlag, con);

paintInfo.addElement(p3);

paintInfo.addElement(cutflag);

repaint();

break;

default:

}

}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

public void mouseClicked(MouseEvent e){}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()==pen)//畫筆

{toolFlag = 0;}

if(e.getSource()==eraser)//橡皮

{toolFlag = 1;}

if(e.getSource()==clear)//清除

{

toolFlag = 2;

paintInfo.removeAllElements();

repaint();

}

if(e.getSource()==drLine)//畫線

{toolFlag = 3;}

if(e.getSource()==drCircle)//畫圓

{toolFlag = 4;}

if(e.getSource()==drRect)//畫矩形

{toolFlag = 5;}

if(e.getSource()==colchooser)//調(diào)色板

{

Color newColor = JColorChooser.showDialog(this,"調(diào)色板",c);

c = newColor;

}

if(e.getSource()==openPic)//打開圖畫

{

openPicture.setVisible(true);

if(openPicture.getFile()!=null)

{

int tempflag;

tempflag = toolFlag;

toolFlag = 2 ;

repaint();

try{

paintInfo.removeAllElements();

File filein = new File(openPicture.getDirectory(),openPicture.getFile());

picIn = new FileInputStream(filein);

VIn = new ObjectInputStream(picIn);

paintInfo = (Vector)VIn.readObject();

VIn.close();

repaint();

toolFlag = tempflag;

}

catch(ClassNotFoundException IOe2)

{

repaint();

toolFlag = tempflag;

System.out.println("can not read object");

}

catch(IOException IOe)

{

repaint();

toolFlag = tempflag;

System.out.println("can not read file");

}

}

}

if(e.getSource()==savePic)//保存圖畫

{

savePicture.setVisible(true);

try{

File fileout = new File(savePicture.getDirectory(),savePicture.getFile());

picOut = new FileOutputStream(fileout);

VOut = new ObjectOutputStream(picOut);

VOut.writeObject(paintInfo);

VOut.close();

}

catch(IOException IOe)

{

System.out.println("can not write object");

}

}

}

}//end paintboard

public class PaintJava

{

public static void main(String args[])

{ new paintboard("畫圖程序"); }

}

累啊..給分吧...!!

用java編寫畫圖工具

要求比較多阿 給你個簡單的供參考

import java.awt.*;

import java.awt.event.*;

class Mycanvas extends Canvas

{ int x,y,r;

Mycanvas()

{ setBackground(Color.cyan);

}

public void setX(int x)

{ this.x=x;

}

public void setY(int y)

{ this.y=y;

}

public void setR(int r)

{ this.r=r;

}

public void paint(Graphics g)

{ g.drawOval(x,y,2*r,2*r); //通過Graphics對象畫圓

}

}

class WindowCanvas extends Frame implements ActionListener

{ Mycanvas canvas;

TextField inputR,inputX,inputY;

Button b;

WindowCanvas()

{ canvas=new Mycanvas();//創(chuàng)建畫布對象

inputR=new TextField(5);

inputX=new TextField(4);

inputY=new TextField(4);

Panel pNorth=new Panel(), pSouth=new Panel();//創(chuàng)建兩個面板

pNorth.add(new Label("圓的位置坐標:"));

pNorth.add(inputX);

pNorth.add(inputY);

pSouth.add(new Label("圓的半徑:"));

pSouth.add(inputR);

b=new Button("確定");

b.addActionListener(this);

pSouth.add(b);

add(canvas,BorderLayout.CENTER); //添加畫布對象到中央?yún)^(qū)域

add(pNorth,BorderLayout.NORTH);

add(pSouth,BorderLayout.SOUTH);

setBounds(100,100,300,200);

setVisible(true);

}

public void actionPerformed(ActionEvent e)

{ int x,y,r;

try { x=Integer.parseInt(inputX.getText());

y=Integer.parseInt(inputY.getText());

r=Integer.parseInt(inputR.getText());

canvas.setX(x); //設(shè)置自定義畫布對象的實例變量x

canvas.setY(y);//設(shè)置自定義畫布對象的實例變量y

canvas.setR(r);//設(shè)置自定義畫布對象的實例變量r

canvas.repaint();//重畫自定義畫布對象

}

catch(NumberFormatException ee)

{ x=0;y=0;r=0;

}

}

}

public class Example18

{ public static void main(String args[])

{ new WindowCanvas();

}

}

請問如何用java編寫一個軟件,可以在上面畫一些圖形(比如矩形),然后可以選中,并移動甚至放大或者縮小它

給你說下思想

第一種:

用到2個簡單面板

第一個面板放到內(nèi)容面板的中心區(qū)域(設(shè)置成流式布局)

第二個面板放到第一個面板里面(畫矩形)

給面板2注冊監(jiān)聽器(鼠標)

后面的自己構(gòu)思吧

放大或者縮小 根據(jù)面板的中心

第二種思想就是直接利用 多文檔技術(shù)

求一個java程序:繪圖程序包括畫圓,橢圓,線,矩形,自定義。并且可以調(diào)圖形顏色!

public?enum?ShapeTypes?{

LINE,?CIRCLE,?RECTANGLE

}

public?interface?Shape?{

void?paint(Graphics?g);

}

public?class?Rectangle?implements?Shape?{

//?矩形左上角的坐標

private?int?x,?y;

//?矩形的寬度和高度

private?int?width,?height;

private?Color?rectangleColor;

public?Rectangle()?{

super();

}

public?Rectangle(int?x,?int?y,?int?width,?int?height,?Color?rectangleColor)?{

super();

this.x?=?x;

this.y?=?y;

this.width?=?width;

this.height?=?height;

this.rectangleColor?=?rectangleColor;

}

@Override

public?void?paint(Graphics?g)?{

g.setColor(rectangleColor);

g.drawRect(x,?y,?width,?height);

}

}

public?class?Line?implements?Shape?{

//?直線的起始位置

private?int?x1,?y1;

//?直線的終止位置

private?int?x2,?y2;

private?Color?lineColor;

public?Line(int?x1,?int?y1,?int?x2,?int?y2,?Color?lineColor)?{

super();

this.x1?=?x1;

this.y1?=?y1;

this.x2?=?x2;

this.y2?=?y2;

this.lineColor?=?lineColor;

}

public?Line()?{

super();

}

@Override

public?void?paint(Graphics?g)?{

g.setColor(lineColor);

g.drawLine(x1,?y1,?x2,?y2);

}

}

public?class?Circle?implements?Shape?{

//?圓的顏色

private?Color?circleColor;

//?圓心的坐標

private?int?x,?y;

//?圓的半徑

private?int?radius;

public?Circle()?{

super();

}

public?Circle(int?x,?int?y,?int?radius,?Color?circleColor)?{

super();

this.circleColor?=?circleColor;

this.x?=?x;

this.y?=?y;

this.radius?=?radius;

}

@Override

public?void?paint(Graphics?g)?{

g.setColor(circleColor);

//?畫弧,?當弧的寬度和高度一致且從0~360度時就是原形了

g.drawArc(x,?y,?radius,?radius,?0,?360);

}

}

public?class?SketchpadPanel?extends?Canvas?implements?MouseListener,?MouseMotionListener?{

private?static?final?long?serialVersionUID?=?-5229161042153132522L;

//?鼠標點擊起始坐標和當前坐標

private?int?beginX?=?0,?beginY?=?0,?currentX?=?0,?currentY?=?0;

//?判斷鼠標是否被按下

private?boolean?isMousePressing?=?false;

//?保存當前的圖形,?在撤銷和恢復時使用

private?final?StackShape?currentShapes?=?new?StackShape();

//?保存已經(jīng)刪除過的圖形

private?final?StackShape?deletedShapes?=?new?StackShape();

private?ShapeTypes?type;

private?Color?color;

public?SketchpadPanel()?{

addMouseListener(this);

addMouseMotionListener(this);

}

/**

?*?撤銷方法

?*/

public?void?undo()?{

if?(currentShapes.size()??0)?{

//?從所有保存過的圖形中取出最后一個,?放入到已刪除的圖形中去

Shape?shape?=?currentShapes.pop();

deletedShapes.push(shape);

repaint();

}

}

/**

?*?恢復撤銷方法

?*/

public?void?redo()?{

if?(deletedShapes.size()??0)?{

//?從所有刪除的圖形中取出最后一個,?放入保存的圖形中

Shape?shape?=?deletedShapes.pop();

currentShapes.push(shape);

repaint();

}

}

/**

?*?設(shè)置命令

?*?

?*?@param?type

?*/

public?void?setShapeType(ShapeTypes?type)?{

this.type?=?type;

}

/**

?*?設(shè)置顏色

?*?

?*?@param?color

?*/

public?void?setColor(Color?color)?{

this.color?=?color;

}

public?void?updete(Graphics?g)?{

paint(g);

}

/**

?*?繪制畫板

?*/

@Override

public?void?paint(Graphics?g)?{

//?繪制畫板

Dimension?size?=?getSize();

int?width?=?size.width;

int?height?=?size.height;

g.setColor(Color.WHITE);

g.fillRect(0,?0,?width,?height);

//?繪制所有圖形

Shape?shape?=?null;

EnumerationShape?e?=?currentShapes.elements();

while?(e.hasMoreElements())?{

shape?=?e.nextElement();

shape.paint(g);

}

//?如果當前鼠標沒有釋放

if?(isMousePressing)?{

g.setColor(color);

switch?(type)?{

//?繪制直線

case?LINE:

g.drawLine(beginX,?beginY,?currentX,?currentY);

break;

//?繪制矩形

case?RECTANGLE:

if?(currentX??beginX)?{

if?(currentY??beginY)?{

//?如果當前位置在起始位置的左上方,?則以鼠標當前位置為矩形的左上角位置

g.drawRect(currentX,?currentY,?beginX?-?currentX,?beginY?-?currentY);

}?else?{

//?如果當前位置在起始位置的左下方,?則以鼠標當前位置的橫坐標和起始位置的縱坐標作為矩形的左上角位置

g.drawRect(currentX,?beginY,?beginX?-?currentX,?currentY?-?beginY);

}

}?else?{

if?(currentY??beginY)?{

//?如果當前位置在起始位置的右上方,?則以鼠標起始位置的很坐標和當前位置的縱坐標作為矩形的左上角位置

g.drawRect(beginX,?currentY,?currentX?-?beginX,?beginY?-?currentY);

}?else?{

//?如果當前位置在起始位置的右下方,?則已起始位置作為矩形的左上叫位置

g.drawRect(beginX,?beginY,?currentX?-?beginX,?currentY?-?beginY);

}

}

break;

//?繪制圓形

case?CIRCLE:

//?半徑為a*a?+?b*b的平方根

int?radius?=?(int)?Math

.sqrt((beginX?-?currentX)?*?(beginX?-?currentX)?+?(beginY?-?currentY)?*?(beginY?-?currentY));

g.drawArc(beginX?-?radius?/?2,?beginY?-?radius?/?2,?radius,?radius,?0,?360);

break;

}

}

}

@Override

public?void?mouseClicked(MouseEvent?e)?{

}

@Override

public?void?mouseEntered(MouseEvent?e)?{

}

@Override

public?void?mouseExited(MouseEvent?e)?{

}

/**

?*?當鼠標按下的時候獲得起始坐標

?*/

@Override

public?void?mousePressed(MouseEvent?e)?{

beginX?=?e.getX();

beginY?=?e.getY();

isMousePressing?=?true;

}

/**

?*?當鼠標釋放時獲得當前坐標

?*/

@Override

public?void?mouseReleased(MouseEvent?e)?{

currentX?=?e.getX();

currentY?=?e.getY();

isMousePressing?=?false;

//?當釋放鼠標時,?將繪制的圖形保存到shapes中

switch?(type)?{

//?繪制直線

case?LINE:

Line?line?=?new?Line(beginX,?beginY,?currentX,?currentY,?color);

currentShapes.push(line);

break;

//?繪制圓形

case?CIRCLE:

//?半徑為a*a?+?b*b的平方根

int?radius?=?(int)?Math

.sqrt((beginX?-?currentX)?*?(beginX?-?currentX)?+?(beginY?-?currentY)?*?(beginY?-?currentY));

Circle?circle?=?new?Circle(beginX?-?radius?/?2,?beginY?-?radius?/?2,?radius,?color);

currentShapes.push(circle);

break;

//?繪制矩形

case?RECTANGLE:

Rectangle?rectangle?=?null;

if?(currentX??beginX)?{

if?(currentY??beginY)?{

rectangle?=?new?Rectangle(currentX,?currentY,?beginX?-?currentX,?beginY?-?currentY,?color);

}?else?{

rectangle?=?new?Rectangle(currentX,?beginY,?beginX?-?currentX,?currentY?-?beginY,?color);

}

}?else?{

if?(currentY??beginY)?{

rectangle?=?new?Rectangle(beginX,?currentY,?currentX?-?beginX,?beginY?-?currentY,?color);

}?else?{

rectangle?=?new?Rectangle(beginX,?beginY,?currentX?-?beginX,?currentY?-?beginY,?color);

}

}

currentShapes.push(rectangle);

break;

}

repaint();

}

@Override

public?void?mouseDragged(MouseEvent?e)?{

currentX?=?e.getX();

currentY?=?e.getY();

this.repaint();

}

@Override

public?void?mouseMoved(MouseEvent?e)?{

}

}

public?class?SketchpadFrame?extends?JFrame?{

private?static?final?long?serialVersionUID?=?-7080053971741609904L;

private?final?JPanel?commandPanel?=?new?JPanel();?//?存放命令的面板

private?final?JPanel?colorPanel?=?new?JPanel();?//?存放顏色的面板

private?final?JPanel?mainPanel?=?new?JPanel();?//?主面板

private?final?JButton?redButton?=?new?JButton("紅色");

private?final?JButton?blueButton?=?new?JButton("藍色");

private?final?JButton?greenButton?=?new?JButton("綠色");

private?final?JButton?lineButton?=?new?JButton("直線");

private?final?JButton?circleButton?=?new?JButton("圓");

private?final?JButton?rectangleButton?=?new?JButton("矩形");

private?final?JButton?undoButton?=?new?JButton("撤銷");

private?final?JButton?redoButton?=?new?JButton("恢復撤銷");

private?final?JButton?exitButton?=?new?JButton("退出");

SketchpadPanel?sketchPanel?=?new?SketchpadPanel();

private?void?initFrame()?{

commandPanel.setLayout(new?FlowLayout());

commandPanel.add(lineButton);

commandPanel.add(circleButton);

commandPanel.add(rectangleButton);

commandPanel.add(undoButton);

commandPanel.add(redoButton);

commandPanel.add(exitButton);

colorPanel.setLayout(new?FlowLayout());

colorPanel.add(redButton);

colorPanel.add(blueButton);

colorPanel.add(greenButton);

mainPanel.setLayout(new?BorderLayout());

mainPanel.add(commandPanel,?BorderLayout.NORTH);

mainPanel.add(colorPanel,?BorderLayout.CENTER);

getContentPane().add("South",?mainPanel);

getContentPane().add("Center",?sketchPanel);

//?初始化設(shè)置:顏色和命令

lineButton.setForeground(Color.RED);

sketchPanel.setColor(Color.RED);

redButton.setForeground(Color.RED);

sketchPanel.setShapeType(ShapeTypes.LINE);

}

private?void?initListener()?{

redButton.addActionListener(new?ActionListener()?{

@Override

public?void?actionPerformed(ActionEvent?e)?{

redAction(e);

}

});

blueButton.addActionListener(new?ActionListener()?{

@Override

public?void?actionPerformed(ActionEvent?e)?{

blueAction(e);

}

});

greenButton.addActionListener(new?ActionListener()?{

@Override

public?void?actionPerformed(ActionEvent?e)?{

greenAction(e);

}

});

undoButton.addActionListener(new?ActionListener()?{

@Override

public?void?actionPerformed(ActionEvent?e)?{

undoAction(e);

}

});

redoButton.addActionListener(new?ActionListener()?{

@Override

public?void?actionPerformed(ActionEvent?e)?{

redoAction(e);

}

});

exitButton.addActionListener(new?ActionListener()?{

@Override

public?void?actionPerformed(ActionEvent?e)?{

exitAction(e);

}

});

lineButton.addActionListener(new?ActionListener()?{

@Override

public?void?actionPerformed(ActionEvent?e)?{

lineAction(e);

}

});

circleButton.addActionListener(new?ActionListener()?{

@Override

public?void?actionPerformed(ActionEvent?e)?{

circleAction(e);

}

});

rectangleButton.addActionListener(new?ActionListener()?{

@Override

public?void?actionPerformed(ActionEvent?e)?{

rectangleAction(e);

}

});

}

public?SketchpadFrame()?{

initFrame();

initListener();

this.setSize(500,?600);

setLocationByPlatform(true);

setResizable(true);

}

/*?********************處理事件*********************?*/

private?void?undoAction(ActionEvent?e)?{

sketchPanel.undo();

}

private?void?redoAction(ActionEvent?e)?{

sketchPanel.redo();

}

private?void?exitAction(ActionEvent?e)?{

System.exit(0);

}

private?void?lineAction(ActionEvent?e)?{

//?選中按鈕為紅色,?其余為黑色

lineButton.setForeground(Color.RED);

circleButton.setForeground(Color.BLACK);

rectangleButton.setForeground(Color.BLACK);

sketchPanel.setShapeType(ShapeTypes.LINE);

}

private?void?circleAction(ActionEvent?e)?{

circleButton.setForeground(Color.RED);

lineButton.setForeground(Color.BLACK);

rectangleButton.setForeground(Color.BLACK);

sketchPanel.setShapeType(ShapeTypes.CIRCLE);

}

private?void?rectangleAction(ActionEvent?e)?{

rectangleButton.setForeground(Color.RED);

lineButton.setForeground(Color.BLACK);

circleButton.setForeground(Color.BLACK);

sketchPanel.setShapeType(ShapeTypes.RECTANGLE);

}

private?void?redAction(ActionEvent?e)?{

redButton.setForeground(Color.RED);

blueButton.setForeground(Color.BLACK);

greenButton.setForeground(Color.BLACK);

sketchPanel.setColor(Color.RED);

}

private?void?blueAction(ActionEvent?e)?{

blueButton.setForeground(Color.RED);

redButton.setForeground(Color.BLACK);

greenButton.setForeground(Color.BLACK);

sketchPanel.setColor(Color.BLUE);

}

private?void?greenAction(ActionEvent?e)?{

greenButton.setForeground(Color.RED);

redButton.setForeground(Color.BLACK);

blueButton.setForeground(Color.BLACK);

sketchPanel.setColor(Color.GREEN);

}

}

/**

*?

*?@author?不落的太陽(Sean?Yang)

*?@version?1.0

*?@since?JDK?1.8

*?

*/

public?class?SketchpadMain?{

/**

?*?測試方法

?*?

?*?@param?args命令行參數(shù)

?*/

public?static?void?main(String[]?args)?{

EventQueue.invokeLater(new?Runnable()?{

@Override

public?void?run()?{

JFrame?frame?=?new?SketchpadFrame();

frame.setVisible(true);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

});

}

}

標題名稱:用java代碼畫畫軟件 用java代碼畫畫軟件教程
文章URL:http://bm7419.com/article48/ddeghhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、微信小程序、App開發(fā)、網(wǎng)站設(shè)計公司、搜索引擎優(yōu)化動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管