java 绘图程序

java 绘图程序,第1张

我基于你皮宽原来画图的方法,添加了事件触发的命令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)}

*/

}

import java.awt.*

import java.awt.event.*

import java.awt.geom.*

import javax.swing.*

//不规则图形的绘制

public class IrregularShapeDemo extends JFrame {

GeneralPath gPath= new GeneralPath()//GeneralPath对象实例

Point aPoint

//构造函数

public IrregularShapeDemo() {

super("不规则图形的绘戚拦纤衡余制")//调用父类构造函数

enableEvents(AWTEvent.MOUSE_EVENT_MASK|AWTEvent.MOUSE_MOTION_EVENT_MASK)//允许事件

setSize(300, 200)//设置窗口尺寸

setVisible(true)//设置窗口可视

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)//关闭窗口时退出程序

}

public void paint(Graphics g) { //重载窗口组件的paint()方法

Graphics2D g2D = (Graphics2D)g//获取图形环境

g2D.draw(gPath)//绘制路径

}

public static void main(String[] args) {

new IrregularShapeDemo()

}

protected void processMouseEvent(MouseEvent e) { //鼠标事件处理

if(e.getID() == MouseEvent.MOUSE_PRESSED) {

aPoint = e.getPoint()//得到当前鼠标点

gPath = new GeneralPath()//重新实例化GeneralPath对象

gPath.moveTo(aPoint.x,aPoint.y)//设置路径点

}

}

protected void processMouseMotionEvent(MouseEvent e) { //鼠标运动事件处理

if(e.getID() == MouseEvent.MOUSE_DRAGGED) {

aPoint = e.getPoint()//得到当前鼠标点

gPath.lineTo(aPoint.x, aPoint.y)//设高仿置路径

gPath.moveTo(aPoint.x, aPoint.y)

repaint()//重绘组件

}

}

}

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

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)

    }

}


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

原文地址:https://54852.com/yw/12495178.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-25
下一篇2025-08-25

发表评论

登录后才能评论

评论列表(0条)

    保存