关于用javapaint的信息
今天给各位分享用javapaint的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java的paint方法是怎么调用的,是自动调用的吗?
- 2、java的paint()是哪个类中定义的方法?
- 3、关于java中画图形的paint方法
- 4、java paint方法一执行就黑屏
- 5、java中paint()的具体用法是什么?
java的paint方法是怎么调用的,是自动调用的吗?
Java的paint方法是事件分发线程调用的,并不在编程者的控制范围之内。
参考:网页链接
java的paint()是哪个类中定义的方法?
首次出现在java.awt.Component类中,原型是:
public void paint(Graphics g)。
关于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 paint方法一执行就黑屏
解释原因: 为什么黑屏 ?
答: setVisible(true) 窗口可见. 这个时候已经自动调用了paint函数,setSize()改变了窗口的大小,. 又回自动调用paint函数, paint函数会默认清空之前的绘制. 所以全黑了
解决办法:
public void paint(Graphics g) {
super.paint(g); // 添加上这行代码, 表示再原有基础上重绘.
g.drawLine(100, 50, 400, 400);
g.drawRect(100, 50, 300, 300);
g.drawOval(100, 50, 300, 300);
}
其他建议:
setSize(500, 500);
setLocation(300, 300);
setVisible(true); // 把可视化,移动到设置大小和位置的后面
java中paint()的具体用法是什么?
这个方法需要注意的地方不多,也就是重写时,先调用 super.paint(g) 方法
paint方法不需要编写代码调用,只需要重写。
其他看jdk帮助中就行了。
public void paint(Graphics g) {
super.paint(g);// 调用父类的paint方法或调用下面的方法直接绘制组件
g.drawImage(image, 0, 0, null);
g.setFont(new Font("", Font.BOLD, 13));
g.setColor(Color.WHITE);
}
paint
public void paint(Graphics g)绘制容器。该方法将 paint 转发给任意一个此容器子组件的轻量级组件。如果重新实现此方法,那么应该调用 super.paint(g) 方法,从而可以正确地呈现轻量级组件。如果通过 g 中的当前剪切设置完全剪切某个子组件,则不会将 paint() 转发给这个子组件。
覆盖:
类 Component 中的 paint
参数:
g - 指定的 Graphics 窗口
另请参见:
Component.update(Graphics)
用javapaint的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、用javapaint的信息别忘了在本站进行查找喔。
发布于:2022-11-28,除非注明,否则均为
原创文章,转载请注明出处。