「java画画教学」java编写画图程序

博主:adminadmin 2022-11-25 04:58:05 61

今天给各位分享java画画教学的知识,其中也会对java编写画图程序进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

在Java中如何用程序画一个圆

使用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编程工具,运行效果如下:

如何用java实现画图

使用Java的Graphics类进行绘图

Graphics类提供基本的几何图形绘制方法,主要有:画线段、画矩形、画圆、画带颜色的图形、画椭圆、画圆弧、画多边形等

关于java中画图形的paint方法

代码如下:

/**分析下例:我们只是new了一个对象并没有调用Paint()方法那为什么会画出图呢?

* Graphics这个类的对象就是一只画笔,当某容器调用paint()时就会在该容器中画图。

* 当窗口产生时本身就存在一只画笔,我们只需要拿到画笔重写Paint()便可以随心作画。

*每次需要重画的时候就会自动调用paint(Graphics g)(什么时候需要重画呢?如当窗口被覆盖又重新置顶时,当窗口最小化又最大化时等等)

*/

总结:我们想要在容器中画图时只需要做的就是:  在该容器中重写Paint() 系统会自动传给我们画笔,自动调用paint方法按照我们的意愿进行作画。

public class TestGraphics extends Frame. {

public static void main(String []args) {

new TestGraphics("画图",100,100,200,200,Color.white);

}

public TestGraphics(String s,int x,int y,int w,int h,Color c) {

super(s);

this.setBounds(x, y, w, h);

this.setBackground(c);

this.setVisible(true);

}

public void paint(Graphics g) {

Color c = g.getColor();

g.setColor(Color.magenta);

g.fillOval(100, 100, 50, 50);

g.setColor(Color.green);

g.fill3DRect(60, 100, 50, 50, false);

g.setColor(c);

}

}

小例子2:

import java.awt.*;

import java.awt.event.*;

import java.util.*;

/**

原理是:在Frame中增加成员变量-容器ArrayList,用它来容纳点,每次点击鼠标就触发了事件:往容器中添加一个点,然后立即调用repaint方法强制画出容器中所有的点来

所以我们利用容器来"装"点,然后通过iterator来遍历画出所有的点。

适配器类:使用适配器类可以只重写我们需要的方法

因为这些适配器类都已经实现了相应的接口即把所有的方法都空实现了一遍 我们只需要重写我们需要的方法即可

repaint -调用- update() - 调用 - paint();

*/

public class MyFrame. extends Frame. {

ArrayListPointal ;//泛型指定容器中只能放入Point

public MyFrame(String s) {

super(s);

al =new ArrayListPoint();

this.setBounds(100, 100, 200, 200);

this.setBackground(Color.darkGray);

this.setVisible(true);

this.addMouseListener(new MouseAdapter(){//匿名类

@Override

public void mousePressed(MouseEvent e) {

MyFrame. f = (MyFrame)e.getSource();//e是事件,e.getSource()是获取事件源即窗口 f

f.al.add(new Point(e.getX(),e.getY())); //而e.getX(),e.getY()则是获取事件发生的x,y坐标

repaint();//每次点击鼠标触发事件时都有了新的点,所以强制要求重画,才能立刻显示出该点否则只有窗口被最小化又最大化后才能看到刚才的点

}

});

//匿名类:在参数处我们传递的是new WindowAdapter()  {匿名类体} );他没有名字,我们把它当成WindowAdapter来用,为什么可以这样呢?因为语法上规定了匿名类要么是实现了前面的接口,要么是从前面的类继承,就着前面父类的名字来写类体。当此类与其他类关系不大时可以用匿名类

this.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e){

System.exit(0);

}

});

}

public void paint(Graphics g) {

Iterator Pointit= al.iterator();//泛型指定取出元素时只能是point

while(it.hasNext()) {

Point p = it.next();//由于使用泛型这时候就不用强制转换了

Color c = g.getColor();//保护原有颜色

g.setColor(Color.pink);

g.fillOval(p.x-6, p.y-6, 12, 12);

g.setColor(c);

}

}

public static void main(String []args) {

new MyFrame("点击");

}

}

java画画教学的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java编写画图程序、java画画教学的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。