当前位置:首页 » 编程语言 » java画

java画

发布时间: 2025-02-12 08:01:00

Ⅰ 关于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);
}
}

import java.awt.*;
import java.awt.event.*;
import java.util.*;
/**
原理是:在Frame中增加成员变量-容器ArrayList,用它来容纳点,每次点击鼠标就触发了事件:往容器中添加一个点,然后立即调用repaint方法强制画出容器中所有的点来
所以我们利用容器来"装"点,然后通过iterator来遍历画出所有的点。

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

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

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

*/

public class MyFrame. extends Frame. {
ArrayList<Point>al ;//泛型指定容器中只能放入Point
public MyFrame(String s) {
super(s);
al =new ArrayList<Point>();
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 <Point>it= 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画出一个心形,其实并不像单纯打印几次那么简单。首先,你需要理解心形曲线的基本数学表达式,比如着名的“心形线”方程:x = 16 * sin(t) * sin(t); y = 16 * (cos(t) - sin(t) * sin(t))。这里t是一个参数,取值范围为0到2π。接下来,你需要用Java语言来实现这个方程,并在屏幕上画出心形曲线。

为了实现这个目标,你需要使用Java的绘图API,比如Java Swing或JavaFX。这里以Java Swing为例,首先创建一个JFrame窗口,然后在其中添加一个JPanel。接着,在JPanel中重写paintComponent方法,通过Graphics对象来绘制心形曲线。

具体步骤如下:

1. 创建一个JFrame窗口,并设置其标题和大小。

2. 在JFrame中添加一个JPanel。

3. 重写JPanel的paintComponent方法,用Graphics对象绘制心形曲线。

4. 在paintComponent方法中,使用for循环遍历t的取值范围,计算每个t对应的x和y坐标,然后通过Graphics对象的drawLine方法绘制线段。

5. 最后,调用JFrame的setVisible方法显示窗口,运行程序,就可以看到心形曲线了。

通过上述步骤,你就可以用Java画出一个心形。当然,这只是心形曲线的一种表现形式,你可以进一步探索其他更复杂的心形曲线方程,或者使用不同的绘图库来实现更复杂的效果。

值得注意的是,虽然这段代码可以画出心形,但它并不适合用于复杂的图形绘制。如果你需要绘制复杂的图形,建议使用更高级的图形库,如JavaFX或Processing等。

总之,用Java画出心形并不是一件简单的事情,它需要你掌握一定的数学知识和编程技巧。通过不断练习,你可以提高自己的编程能力,并创作出更多有趣的作品。

热点内容
唱歌主播机箱什么配置可以 发布:2025-05-09 13:51:12 浏览:895
切鱼解压 发布:2025-05-09 13:41:11 浏览:477
编译原理实验pl0 发布:2025-05-09 13:18:03 浏览:606
银行贷款ftp 发布:2025-05-09 13:10:56 浏览:462
思域后排有哪些配置 发布:2025-05-09 13:00:55 浏览:200
图像的二值化算法 发布:2025-05-09 12:55:29 浏览:757
解压刮面 发布:2025-05-09 12:30:35 浏览:642
易语言脚本教程视频 发布:2025-05-09 12:10:54 浏览:560
sql中变量查询 发布:2025-05-09 12:05:32 浏览:182
phpajax表格数据 发布:2025-05-09 12:04:46 浏览:826