在JFrame中绘画

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在JFrame中绘画相关的知识,希望对你有一定的参考价值。

参考技术A import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Painter extends JFrame

private int xValue=0,yValue=0;
public Painter()

super("A Simple paint program");

getContentPane().add(new JLabel("Drag the Mouse To Paint"),"South");
/*addMouseMotionListener(
new MouseMotionAdapter()
public void mouseDragged(MouseEvent e)

xValue=e.getX();
yValue=e.getY();
repaint();


);*/
setSize(300,300);
setVisible(true);

/*
public void paint(Graphics g)

g.fillOval(xValue,yValue,4,4);
*/
public static void main(String[] args)

Painter frame=new Painter();



这主要是paint(Griphics g)方法的问题
注意java.awt包和javax.swing包中的类的层次问题

java.lang.Object ->java.awt.Component ->java.awt.Label

java.lang.Object
-> java.awt.Component
-> java.awt.Container
-> javax.swing.JComponent
-> javax.swing.JLabel

而在java.awt.Component和javax.swing.JComponent都分别根据组件的清重量级定义了不同实现方式的paint方法
在你的程序中,你是在JFrame中直接进行绘画,而JFrame属于重量级组件,Label属于偏重量级JLabel属于偏轻(轻重的区别就是是否跟本地系统有太大关系)。。JFrame JWindow JDialog 等等。。并且你绘画的区域和你添加Label
的位置有重叠。。。诸多原因导致了无法显示

建议:将绘画的组件 改成JPanel。。可以多分级绘画,也可以并列多个JPanel,然后分别添加 组件 和绘画,不会重叠。。

以上是关于在JFrame中绘画的主要内容,如果未能解决你的问题,请参考以下文章

如何在图像上绘画并将该图像保存到 Android 中?

如何在网格上绘画UE4

在浏览器和电子平台上,绘画可以工作,但在android平台上试图在canvas上绘画却不行,这是为啥呢?

处理绘图/绘画/保存多个位图

在 Android 中删除绘画标志

绘画应用程序中的 UISwipeGestureRecognizer