首页 > 编程知识 正文

用java画图时,java画图函数

时间:2023-12-29 20:31:45 阅读:330620 作者:YICJ

本文目录一览:

关于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画图时,出现“DrawPanel 无法解析为类型"这个问题怎么解决?已经导入了java.awt.geom包。

找不到类,如果你用Eclipse的话,点开你的ReferenceLibrary,找到geom这个包,看看里面有没有DrawPanel这个类。如果有的话,重新编译一下你的Project,点击project - clean -选中你的Project 重编译一下看看!

java画图怎么解决

java创建图形 用的是

java.awt.Grahpic

这个类完成的 包括 自己绘制 使用现成的 .jpg格式的文件什么的.

具体内容太多了..自己看帮助把

----------------------------------------------------

继承

JPanel 类 并且从写 paintComponent 方法 里边有画图的方法

注意这个 Graphics 的对象 画图主要就用这个 需要程序自己去调用自己不能调用 具体的画法 也都是这个类里的方法你自己去看看把

Graphics 是 java.awt包里的类

class A

{

JFrame frame;

public static void main(String[] args)

{

A a=new A();

a.go();

}

public void go()

{

frame =new JFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

MyDrawPanel drawPanel =new MyDrawPanel();

frame.getContentPane().add(BorderLayout.CENTER,drawPanel);

frame.setSize(300,300);

frame.setVisible(true);

}

class MyDrawPanel extends JPanel

{

public void paintComponent(Graphics g)

{

g.setColor(Color.red);

g.fillOval(0,0,this.getWidth(),this.getHeight());

}

}

}

用Java一个简单的画图程序

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

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=0;i=row;i++){

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=0;j=cul;j++){

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

x+=lieju;

}

x=csx;

for(int z=0;zcul;z++){

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

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

if(z3)

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=0;v=9;v++){

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=0;n9;n++){

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=0;i=1;i++){

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

yy+=hangju;

}

yy=hangju*row+y;

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

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

if(j0){

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()做了一个记账凭证。

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

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

如何用java实现画图

使用Java的Graphics类进行绘图

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

用java画图 出现了43个错误

public TankWar{

----

public TankWar(){

这个类,

class MyTank extends Tank {

public MyTank {

super(x,y);

}

}

创建得太过牵强,没有别的属性方法,创建来干嘛

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。