java 轻量级组件和重量级组件的区别
2014-06-04 15:05
435 查看
最近工作中遇到 需要把JLabel加到Canvas上去,整了半天,到最后发现JLabel总是在Canvas之下;
后问同事,原来JLabel属于轻量级组件,而Canvas属于重量级组件;于是乎就出现了上述情况。
轻量级组件 是用JAVA代码画出来的,这样具有平台移植性
重量级组件 是调用操作系统的函数画出来的组件,比如主窗体
一般来说尽量用轻量级的组件,这样对程序的移植性很好,一般javax.swing包里的组件大部分是轻量级的java.awt里面的是重量级的。
Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级( light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。由于AWT组件通过与具体平台相关的对等类(Peer)实现,因此Swing比AWT组件具有更强的实用性。Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。
把百度知道上搜到的内容拷过来~哈哈
后问同事,原来JLabel属于轻量级组件,而Canvas属于重量级组件;于是乎就出现了上述情况。
轻量级组件 是用JAVA代码画出来的,这样具有平台移植性
重量级组件 是调用操作系统的函数画出来的组件,比如主窗体
一般来说尽量用轻量级的组件,这样对程序的移植性很好,一般javax.swing包里的组件大部分是轻量级的java.awt里面的是重量级的。
Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级( light-weight)组件,没有本地代码,不依赖操作系统的支持,这是它与AWT组件的最大区别。由于AWT组件通过与具体平台相关的对等类(Peer)实现,因此Swing比AWT组件具有更强的实用性。Swing在不同的平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。
把百度知道上搜到的内容拷过来~哈哈
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,然后分别添加 组件 和绘画,不会重叠。。
相关文章推荐
- java组件之重量级与轻量级区别
- java 轻量级组件与重量级组件的区别
- 调用repaint() 在重量级和轻量级组件区别
- 轻量级组件和重量级组件的区别
- 双缓冲消除闪烁在重量级Frame和轻量级组件Jframe中的区别
- 轻量级组件与重量级组件的区别
- java中重量级和轻量级的区别
- Java轻量级组件和重量级组件
- JAVA中的重量级组件和轻量级组件
- 重量级组件和轻量级组建区别
- JAVA重量级组件和轻量级组件 文摘
- 轻量级框架跟重量级框架有何区别?
- java重量级与轻量级
- java中的重量级与轻量级概念
- 【转载】Java中的锁机制 synchronized & 偏向锁 & 轻量级锁 & 重量级锁 & 各自优缺点及场景 & AtomicReference
- 重量级(awt)和轻量级(swing)组件的repaint()
- [置顶] Java的EE框架的轻量级和重量级
- 【JAVA学习】轻量级与重量级
- 测试java.swing包提供的轻量级组件的例子
- Java的EE框架的轻量级和重量级