二,常用类 Graphics,JFrame,JPanel
javax.swing.JFrame;
javax.swing.JPanel;
Swing的一些底层类是借用了AWT的Component、Container、Window等少数几个基础类。估计的原因是为了保持与AWT的兼容,方便大家将代码移植到Swing上。
Swing是一个高层的GUI系统,而不像AWT那样与运行平台技术更加靠近的系统。Swing的类继续关系比AWT要复杂的多,而且Swing类大多都经过了中间的转接类-JComponent。而我们常用的JFrame则另辟蹊径,从awt的window继续了下来。
这种结构关系决定了Swing的庞大与复杂性。很多初学者都难以理解Swing的模式和结构。
Sun之所以用这种方式来实现,是为了在不牺牲移植性的基础上加入丰富的界面交互功能。
但是缺点也很明显:Swing的速度和效率是所有GUI(图形用户界面Graphical User Interface)系统中最慢的。
Graphics类是java提供的用于绘图和显示格式化文字的工具。绘图必须在一个窗口(容器)中进行。
java.awt.Graphics;
参考自: http://wenku.baidu.com/link?url=uXdbhvny1uvjCuWhyD-28cfrVg8I65gq3LOEQCP2Dh2d7rsX-7sEBJwdU0HtCHCh__9XtkhSpBiAhkLVfPpuWfR1F00GQTyIaL1NQZYf_X3
http://blog.csdn.net/iamluole/article/details/8142257
-----------------------------------------------------------------------------------------------------------------------------------
graphics是Java提供的用于绘图和显示格式化文字的工具。绘图必须在一个窗口(容器)中进行
Container类是java.awt.Component类的子类,JComponent类又继承自Container类。因此,JComponent类是AWT和Swing的联系之一。
除了Swing顶层容器类(top level containers)以外,其余所有的Swing组件类都继承自JComponent类(例如JPanel),如前所述,JComponent类是Container类的子类,因此,所有的Swing组件都可作为容器使用。
Swing顶层容器类包括了JFrame、JDialog、JApplet、JWindow,它们为其他的Swing组件提供了绘制自身的场所。
例如:
- JFrame frame = new JFrame();
- JPanel panel = new JPanel();
- panel.setLayout(new GridLayout());
- frame.add(panel);
最后,graphics是一个抽象类,其实现大都是平台相关的,所以不容易自己创建一个graphics实例。一般graphics的实例会由依照你所在的桌面环境给出。Graphics类及其子类Graphics2D提供的只是一些基本绘图方法,比如画直线、曲线什么的。所以做一个图形组件的基本思路可以总结为以下过程:
选择适合的基本图形组件->继承它->重写paint等方法->在需要刷新图形的时候调用repaint等方法!
至于Graphics,先假设它存在,因为真正的Graphics实例只有当程序在jvm上跑的时候才会创建。