在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中绘画的主要内容,如果未能解决你的问题,请参考以下文章