java畫圖總結之二(常用類Graphics,JFrame,JPanel)
二,常用類 Graphics,JFrame,JPanel
javax.swing.JFrame;
javax.swing.JPanel;
------------------------------------------------------------------------------------------------------------- public class JPanel extends JComponent public abstract class JComponent extends ContainerSwing的一些底層類是借用了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上跑的時候才會建立。