java做的绘图程序

java做的绘图程序,第1张

// 粗细,颜色都符合你的,你就不要不讲诚信了,我也跟你没有仇,你视而不见就没有必要了

import java.awt.BasicStroke

import java.awt.BorderLayout

import java.awt.FlowLayout

import java.awt.Frame

import java.awt.Graphics

import java.awt.Graphics2D

import java.awt.Label

import java.awt.Panel

import java.awt.event.MouseAdapter

import java.awt.event.MouseEvent

import java.awt.event.MouseMotionListener

import java.awt.event.WindowAdapter

import java.awt.event.WindowEvent

 

public class MouseDrawPanel extends Frame

{

    private static final long serialVersionUID = 1L

    MouseEvent e = null

    static int startX = -1

    static int startY = -1

    static int endX = -1

    static int endY = -1

 

    public MouseDrawPanel ( String title )

    {

        setTitle (title)

        setLayout (new BorderLayout ())

        setResizable (false)

        setSize (500, 400)

        setLocationRelativeTo (null)

        addWindowListener (new WindowAdapter ()

        {

            @Override

            public void windowClosing ( WindowEvent e )

            {

                System.exit (0)

            }

        })

    }

 

    @Override

    public void paintComponents ( Graphics g )

    {

        float lineWidth = 8.0f

        ((Graphics2D)g).setStroke(new BasicStroke(lineWidth))

        g.drawLine (startX, startY, endX, endY)

        g.dispose ()

    }

 

    public static void main ( String[] args )

    {

        final MouseDrawPanel mdp = new MouseDrawPanel ("Use Mouse Draw")

        Panel panel = new Panel ()

        panel.setLayout (new FlowLayout (FlowLayout.LEFT))

        Label startL = new Label ("start: ")

        Label endL = new Label ("end: ")

        final Label nowL = new Label ("now: ")

        final Label startR = new Label ("000,000")

        final Label endR = new Label ("000,000")

        final Label nowN = new Label ("000,000")

        panel.add (startL)

        panel.add (startR)

        panel.add (endL)

        panel.add (endR)

        panel.add (nowL)

        panel.add (nowN)

        mdp.add (panel, "South")

        mdp.addMouseMotionListener (new MouseMotionListener ()

        {

            @Override

            public void mouseMoved ( MouseEvent e )

            {

                nowN.setText (e.getX () + " , " + e.getY ())

            }

 

            @Override

            public void mouseDragged ( MouseEvent e )

            {

                endX = e.getX ()

                endY = e.getY ()

                mdp.paintComponents (mdp.getGraphics ())

                startX = endX

                startY = endY

                endR.setText (endX + " , " + endY)

            }

        })

        mdp.addMouseListener (new MouseAdapter ()

        {

            @Override

            public void mousePressed ( MouseEvent e )

            {

                startX = e.getX ()

                startY = e.getY ()

                startR.setText (startX + " , " + startY)

            }

 

            @Override

            public void mouseReleased ( MouseEvent e )

            {

                endR.setText (e.getX () + " , " + e.getY ())

            }

        })

        mdp.setVisible (true)

    }

}

我基于你原来画图的方法,添加了事件触发的命令b[j].setActionCommand("b" + j)否则你不能在事件响应处理的方法中使用e.getActionCommand(),而且字符串的比较用equals方法比较好。现在可以运行了,你可以看一下:

import java.applet.Applet

import java.awt.*

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

public class drawing extends Applet implements ActionListener {

Button b[] = new Button[5]

String fontname = "仿宋_GB2312"

int style = Font.PLAIN

int size = 24

int index = 0

Font myfont

public void init() {

setSize(700,700)

myfont = new Font(fontname, style, size)

b[0] = new Button("扇形")

b[1] = new Button("圆形")

b[2] = new Button("三角形")

b[3] = new Button("长方形")

b[4] = new Button("椭圆形")

for (int j = 0j <b.lengthj++) {

b[j].setBounds(10, 10, 50, 20)

b[j].addActionListener(this)

b[j].setActionCommand("b" + j)

add(b[j])

}

}

public void actionPerformed(ActionEvent e) {

if (e.getActionCommand().equals("b0")) {

index = 0

repaint()

}

if (e.getActionCommand().equals("b1")) {

index = 1

repaint()

}

if (e.getActionCommand().equals("b2")) {

index = 2

repaint()

}

if (e.getActionCommand().equals("b3")) {

index = 3

repaint()

}

if (e.getActionCommand().equals("b4")) {

index = 4

repaint()

}

}

public void paint(Graphics g) {

switch (index) {

case 0:

g.fillArc(0, 60, 80, 60, 30, 120)

break

case 1:

g.drawOval( 300, 50, 60, 60)

break

case 2:

Polygon filledPolygon = new Polygon()

filledPolygon.addPoint(380, 50)

filledPolygon.addPoint(380, 110)

filledPolygon.addPoint(450, 90)

g.drawPolygon(filledPolygon)

break

case 3:

g.drawRect( 200, 50, 80, 60)

break

case 4:

g.drawOval(100, 50, 80, 60)

break

default:

g.fillArc(0, 60, 80, 60, 30, 120)

break

}

}

/*

* public void paint(Graphics g) { g.fillArc( 0, 60, 80, 60, 30, 120)

* //绘制扇形 g.drawOval( 100, 50, 80, 60)g.drawRect( 200, 50, 80, 60)

* g.drawOval( 300, 50, 60, 60)Polygon filledPolygon=new Polygon()

* filledPolygon.addPoint(380,50)filledPolygon.addPoint(380,110)

* filledPolygon.addPoint(450,90)g.drawPolygon(filledPolygon)}

*/

}

下面是我以前做的小程序,希望能给你点帮助!

package menu

import java.awt.*

import java.awt.event.*

import javax.swing.*

public class DaYin extends JFrame implements ActionListener{

public DaYin() {

Container c=this.getContentPane()

c.setLayout(new BorderLayout())

JMenuBar jmb=new JMenuBar()

JMenu jm=null

jm=new JMenu("文件")

jmb.add(jm)

jm=new JMenu("编辑")

jmb.add(jm)

jm=new JMenu("打印")

JMenuItem jmi=new JMenuItem("打印预览")

jmi.addActionListener(this)

jm.add(jmi)

jmb.add(jm)

jm=new JMenu("帮助")

jmb.add(jm)

this.setJMenuBar(jmb)

this.setSize(1024,768)

this.setVisible(true)

this.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0)

}

})

}

public static void main(String[] args) {

new DaYin()

}

public void update(Graphics g){

g.setColor(Color.black)

String title[]={"摘要","科目","子目或户名","借方金额","贷方金额"}

String danwei[]={"千","百","十","万","千","百","十","元","角","分"}

int csx=200//打印x的初始坐标

int csy=200//打印y的初始坐标

int x=csx

int y=csy

int a=x+20//打印字体x的初始坐标

int b=y+20//打印字体y的初始坐标

int row=7//一共打印出几条横线

int cul=5//一共打印出几条竖线

int hangju=30//线与线之间的纵向间距

int lieju=100//线与线之间的横向间距

int yy=hangju*row+y

int c=yy+20

g.setFont(new Font("行楷",Font.TYPE1_FONT,24))

g.drawString("记 账 凭 证", x+160, y-40)//打印出记账凭证这几个字

g.drawLine(x+100, y-30, x+340, y-30)//打印出记账凭证下面的那条线

g.setFont(new Font("行楷",Font.TYPE1_FONT,13))

g.drawString("年 月 日 第_______号", x+260, y-10)

//g.drawLine(x+430, y-10, x+470, y-10)

for(int i=0i<=rowi++){

g.drawLine(x, y, cul*lieju+x+25, y)//此循环用于画出表格的行

if(i==0)

y+=hangju*2

else

y+=hangju

}

y=csy

g.drawLine(x+lieju*3, y+hangju, cul*lieju+x, y+hangju)//打印出第一行半的横线

for(int j=0j<=culj++){

g.drawLine(x, y, x, row*hangju+y)//此循环用于画出表格的列

x+=lieju

}

x=csx

for(int z=0z<culz++){

g.setColor(Color.red)//设置颜色

g.setFont(new Font("",Font.TYPE1_FONT,13))//设置表头字体

if(z<3)

g.drawString(title[z], a, b+hangju/2)

else

g.drawString(title[z], a, b)//为表格添加表头

a+=lieju

}//76-89打印出一个表格形状

int xx=lieju*3+x+10

for(int v=0v<=9v++){

g.drawLine(xx, y+hangju, xx, row*hangju+y+hangju)//此循环用于画出表格的列

g.setFont(new Font("",Font.TYPE1_FONT,11))

g.drawString(danwei[v], xx-10, y+hangju+20)//为表格添加表头

if(v%2==0)

g.setColor(Color.red)//设置颜色

else

g.setColor(Color.BLUE)//设置颜色

xx+=10

}

for(int n=0n<9n++){

g.drawLine(xx, y+hangju, xx, row*hangju+y+hangju)//此循环用于画出表格的列

g.drawString(danwei[n],xx-10, y+hangju+20)//为表格添加表头

if(n%2==0)

g.setColor(Color.red)//设置颜色

else

g.setColor(Color.BLUE)//设置颜色

xx+=10

}

g.drawString(danwei[9],xx-10, y+hangju+20)

g.setColor(Color.black)//设置颜色

for(int i=0i<=1i++){

g.drawLine(x,yy , cul*lieju+x, yy)//此循环用于画出表格的行

yy+=hangju

}

yy=hangju*row+y

for(int j=0j<=3j++){

g.drawLine(x, yy, x, (row+1)*hangju+y)//此循环用于画出表格的列

if(j>0){

x+=lieju

}else{

x+=lieju*3

}

}//112-128打印出表格的最后一行单元格

x=csx

g.setFont(new Font("",Font.TYPE1_FONT,13))

g.drawString("合 计",x+60, c)

g.drawString("会计主管 记账 出纳 审核 制证", x+30, yy+50)

g.drawLine(cul*lieju+x+25, y, cul*lieju+x+25, (row+1)*hangju+y)//打印出最后一列

g.drawString("记",cul*lieju+x+6, y+15)

g.drawString("账", cul*lieju+x+6, y+35)

g.drawString("√", cul*lieju+x+6, y+55)//134-136为最后一列写入字体

g.drawString("附",cul*lieju+x+35, y+75)

g.drawString("件", cul*lieju+x+35, y+95)

g.drawString("张", cul*lieju+x+35, y+175)//134-136为最后一列后写入字体

}

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(e.getActionCommand().equals("打印预览")){

this.repaint()

}

}

}

使用drawLine()做了一个记账凭证。

执行点击"打印"子菜单"打印预览"就可显示出我们所画的"记账凭证表"

希望这个小程序能够给你点灵感


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11642252.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存