首页 > 编程 > Java > 正文

java画图总结之二(常用类Graphics,JFrame,JPanel)

2019-11-10 20:13:23
字体:
来源:转载
供稿:网友

二,常用类 Graphics,JFrame,JPanel

   

    javax.swing.JFrame;

    javax.swing.JPanel;

-------------------------------------------------------------------------------------------------------------public class JPanel extends JComponent public abstract class JComponent extends Containerpublic class Container extends Componentpublic class JFrame  extends Framepublic class Frame extends Window implements MenuContainerpublic class Window extends Container由以上声明可以看出,多层的继承关系。JFrame  ---> Frame ---> Window--->Container--->Component;JPanel  --->  JComponent ---> Container --->Component;

Swing的一些底层类是借用了AWT的Component、Container、Window等少数几个基础类。估计的原因是为了保持与AWT的兼容,方便大家将代码移植到Swing上。

Swing是一个高层的GUI系统,而不像AWT那样与运行平台技术更加靠近的系统。Swing的类继续关系比AWT要复杂的多,而且Swing类大多都经过了中间的转接类-JComponent。而我们常用的JFrame则另辟蹊径,从awt的window继续了下来。这种结构关系决定了Swing的庞大与复杂性。很多初学者都难以理解Swing的模式和结构。   Swing 中的控件都是利用Java图形功能绘制出来的,而不是对应到平台的一个具体控件实现。我们所用的所有Swing控件都是直接或者间接用Graphics绘制出来的,这种实现方式最大的好处是很灵活,我们想要什么样的控件,就直接用Graphics绘制出来就是了。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上跑的时候才会创建。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表