* java绘图原理
*/
package Yousphu
import java.awt.*
import javax.swing.*
public class Demo9_1 extends JFrame {
MyPanel mp=null
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo9_1 demo = new Demo9_1()
}
public Demo9_1()
{
mp=new MyPanel()
this.add(mp)
this.setSize(300, 400)
this.setDefaultCloseOperation(EXIT_ON_CLOSE)
this.setVisible(true)
}
}
//定义一个吗panel、用于绘制和实现图像
class MyPanel extends JPanel
{
//覆盖jpanel的paint方法
//Graphics是汇入的中药类,你可以吧他理解成画笔
public void paint(Graphics g)
{
//调用父类函数进行初始化,绝对不可少
super.paint(g)
//先画一个园
g.drawOval(10, 10, 30, 30)
/*
g.drawRect(30, 30, 40, 40)
g.setColor(Color.blue)
g.drawString("fdsf", 40, 40)*/
//Image im= Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/aaa.jpg"))
//g.drawImage(im, 20, 20, 200, 200,this)
}
}
使用java画圆要用到绘图类Graphics,下面是实例代码和运行效果:
package com.dikea.demo01
import java.awt.*
import javax.swing.*
// java绘图原理
public class demo_01 extends JFrame {
MyPanel mp = null
public static void main(String[] args) {
// TODO 自动生成的方法存根
demo_01 demo01 = new demo_01()
}
public demo_01(){
mp = new MyPanel()
this.add(mp)
this.setSize(400, 300)
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
this.setVisible(true)
}
}
// 定义一个MyPanel面板,用于绘图区域
class MyPanel extends JPanel{
//覆盖JPanel
// Graphics 是绘图的重要类,可以理解成一支画笔
public void paint(Graphics g){
// 1. 调用父类函数完成初始化任务
// 这句话不可以少
super.paint(g)
// 先画出一个圆圈
g.drawOval(100, 100, 30, 30)
}
}
代码复制进ide编程工具,运行效果如下:
我基于你原来画图的方法,添加了事件触发的命令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)}
*/
}