java中awt类中画图方法,AWT绘图中有哪些封装方法

本文目录一览:

Java中,哪个类提供用于画图的方法?哪个方法可以画线,哪个显示矩形?

Graphics类是专门用来画图的,g.drawLine(int x,int y,int x1,int y1)用来画线,g.drawRetrangle(int x,int y,int x1,int y1)用来画矩形,具体的你可以参考帮助文档

Java awt包中Graphics类中drawChars怎么用

drawChars

public void drawChars(char[] data,

int offset,

int length,

int x,

int y)使用此图形上下文的当前字体和颜色绘制由指定字符数组给定的文本。首字符的基线位于此图形上下文坐标系的 (x, y) 位置处。

参数:

data – 要绘制的字符数组

offset – 数据的初始偏移量

length – 要绘制的字符数

x – 文本基线的 x 坐标

y – 文本基线的 y 坐标

你应该是问Graphics怎么用的吧

这是个虚类,所以需要被继承了以后重写里面的方法。

而在用的过程中一般会由comment传给你。

比如一个JFrame

你写一个新的类继承自JFrame。

然后重写他的paint(Graphics g)函数。

这样在这个函数体中,你就能收到从repaint发给你的Graphics对象。

然后使用g.drawChars函数传入相应的值就行。

java语言的awt 包的 graphics 类的抽象方法

实际传给paint方法的参数是抽象类Graphics的子类,这个子类实现了你提到的那些抽象方法,这个子类由Java语言自身提供,不需要使用者自己实现,当然你也可以自己写个子类去实现抽象类Graphics中的这些抽象方法,提供你自己的绘图功能。

在paint方法中加一句System.out.println(g.getClass());你就可以看到具体实现类的名字了。

用java实现一个方法 关于绘制走势图

我来讲下用Java编写一个绘制图形的小程序吧,你看下有没有用

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(); //重绘组件

}

}

这个也是我在远标java上学到的,分享给你!

关于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 swing编程 画图问题 paint()方法

super.paint()的作用是把当前的区域清空,每次resize的时候就会自动调用paint()方法,paint()方法里先调用了super.paint()清空当前区域,再画一个矩型筐,当然每次只有一个了。 另外你的算法也有漏洞,当你想从右上角拉到左下角画矩形的时候是没有反应的。 下面这个程序修改了只画一个的错误,改进了右上角拉到左下角的漏洞,还增加了拖动的中间过程。没时间给你写注释,自己看吧。 import java.awt.*; import java.awt.event.*; import java.util.Vector; import javax.swing.*; public class Hello extends JFrame implements MouseListener,MouseMotionListener{ int x一,y一; Vector rectangles=null; public Hello(){ this.setTitle(“画图小程序”); this.addMouseListener(this); this.addMouseMotionListener(this); this.setSize(四00,四00); rectangles=new Vector(); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void paint(Graphics g){ super.paint(g); g.setColor(Color.BLUE); for(int i=0;irectangles.size();i++){ Rectangle rec=rectangles.get(i); int tmp_x=rec.x; int tmp_y=rec.y; int tmp_w=rec.width; int tmp_h=rec.height; g.drawRect(tmp_x,tmp_y,tmp_w,tmp_h); } } public static void main(String[] args) { new Hello(); } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { x一=e.getX();y一=e.getY(); } public void mouseReleased(MouseEvent e) { int x二=e.getX(); int y二=e.getY(); int x=0; int y=0; Graphics g=this.getGraphics(); g.setColor(Color.BLUE); int tmp_w=0; int tmp_h=0; if(x一x二){ x=x二; tmp_w=x一-x二; } if(y一y二){ y=y二; tmp_h=y一-y二; } rectangles.add(new Rectangle(x,y,tmp_w,tmp_h)); this.repaint(); } public void mouseDragged(MouseEvent e) { int x二=e.getX(); int y二=e.getY(); int x=0; int y=0; Graphics g=this.getGraphics(); g.setColor(Color.BLUE); int tmp_w=0; int tmp_h=0; if(x一x二){ x=x二; tmp_w=x一-x二; } if(y一y二){ y=y二; tmp_h=y一-y二; } paint(g); g.drawRect(x,y,tmp_w,tmp_h); } public void mouseMoved(MouseEvent e) { }

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/185551.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-11-26 12:24
下一篇 2024-11-26 12:24

相关推荐

  • ArcGIS更改标注位置为中心的方法

    本篇文章将从多个方面详细阐述如何在ArcGIS中更改标注位置为中心。让我们一步步来看。 一、禁止标注智能调整 在ArcMap中设置标注智能调整可以自动将标注位置调整到最佳显示位置。…

    编程 2025-04-29
  • 解决.net 6.0运行闪退的方法

    如果你正在使用.net 6.0开发应用程序,可能会遇到程序闪退的情况。这篇文章将从多个方面为你解决这个问题。 一、代码问题 代码问题是导致.net 6.0程序闪退的主要原因之一。首…

    编程 2025-04-29
  • Python创建分配内存的方法

    在python中,我们常常需要创建并分配内存来存储数据。不同的类型和数据结构可能需要不同的方法来分配内存。本文将从多个方面介绍Python创建分配内存的方法,包括列表、元组、字典、…

    编程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一个类的构造函数,在创建对象时被调用。在本篇文章中,我们将从多个方面详细讨论init方法的作用,使用方法以及注意点。 一、定义init方法 在Pyth…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • 用不同的方法求素数

    素数是指只能被1和自身整除的正整数,如2、3、5、7、11、13等。素数在密码学、计算机科学、数学、物理等领域都有着广泛的应用。本文将介绍几种常见的求素数的方法,包括暴力枚举法、埃…

    编程 2025-04-29
  • Python学习笔记:去除字符串最后一个字符的方法

    本文将从多个方面详细阐述如何通过Python去除字符串最后一个字符,包括使用切片、pop()、删除、替换等方法来实现。 一、字符串切片 在Python中,可以通过字符串切片的方式来…

    编程 2025-04-29
  • 用法介绍Python集合update方法

    Python集合(set)update()方法是Python的一种集合操作方法,用于将多个集合合并为一个集合。本篇文章将从以下几个方面进行详细阐述: 一、参数的含义和用法 Pyth…

    编程 2025-04-29
  • Vb运行程序的三种方法

    VB是一种非常实用的编程工具,它可以被用于开发各种不同的应用程序,从简单的计算器到更复杂的商业软件。在VB中,有许多不同的方法可以运行程序,包括编译器、发布程序以及命令行。在本文中…

    编程 2025-04-29

发表回复

登录后才能评论