Swing入門基礎 (轉)
基礎
1.前言:
當我們學習過了中的基本語法,並且熟悉java的面向基礎以後,我們就可以開始簡單的Swing的設計,
用過Vb的朋友可能會被它的簡單的設計介面方法所吸引,只需要拖幾個到窗體上,為每個空件編寫event就可以簡單的
實現介面設計.但是強大的java也不比vb遜色.同樣可以設計出精美的介面.
2.Swing概述:
當java1.0剛剛出現時還沒有swing,當時的GUI基本庫,sun取名叫AWT(Abstract Window Tookit),基本AWT庫處理使用者介面
的方法是將這些元素的建立行為交給,底層操作的GUI工具箱進行處理,來實現WORA的目的.而因為種種原因,不同的OS之間
存在差異,使得AWT介面庫存在許多.1996年sun同scape通力合作建立了新的庫取名Swing.
------如果,沒有Swing,java的圖形就面就不名一文.------
swing是java的基礎類,是JFC的一部分,完整的JFC是很巨大的.包括的也很多.
3.為什麼要選擇Swing: Swing具有更豐富而且更加方便的使用者介面元素集合,
Swing對於底層平臺的依賴更少,因此,特殊平臺上的bug會很少
Swing會帶來交叉平臺上的統一的視覺體驗
4.許多初學java的朋友們在學完java的基礎部分後就會感到很茫然,還是對java能幹什麼不是很瞭解,所以在初步掌握基本的概念後就可以
近一步的研究Swing,可以對初學者有一定的提高.
下面我們就來初步的研究一個程式,個人覺得是入門Swing的很好的程式碼.
// a simple exmple that can show the basis of swing
-------------------------------------------------------------------------------------------------------------------------
// import pakages which we need
import javax.swing.*;
import java.awt.*;
public class HelloCsdn
{
public static void main(String[] args)
{
HelloCsdnFrame frame=new HelloCsdnFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
/** this part we construct a new frame HelloCsdnFrame
*/
---------------------------------------------------------------------------------------------------------------------------
class HelloCsdnFrame extends JFrame{
public HelloCsdnFrame()
{
setTitle("Hello CSDN.NET");
setSize(WIDTH,HEIGHT);
HelloCsdnPanel panel=new HelloCsdnPanel();
Container c=getContentPane();
c.add(panel);
}
public static final int WIDTH=300;
public static final int HEIGHT=200;
}
/**this part we extend our HelloCsdnFram to JFrame and construct a new HelloCsdnPanel and add it on the frame
/*
----------------------------------------------------------------------------------------------------------------------------
class HelloCsdnPanel extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawString("Hello CSDN.NET",MESSAGE_X,MESSAGE_Y);
}
public static final int MESSAGE_X=100;
public static final int MESSAGE_Y=100;
}
/** A panel that display a message
*/
---------------------------------------------------------------------------------------------------------------------------
我把此程式分為3part.每一部分都有註釋,這一段程式碼是做什麼用的.
一起來分析此程式: 在第一部分
// import pakages which we need
import javax.swing.*;
import java.awt.*;
public class HelloCsdn
{
public static void main(String[] args)
{
HelloCsdnFrame frame=new HelloCsdnFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
/** this part we construct a new frame HelloCsdnFrame
*/
可以看到我們首先匯入了2個包 swing 和 awt,建立了一個object對這個object我們進行例項化, 然後用程式碼
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show(); 來實現關閉Frame,但不是結束程式,其中止的只是程式的主執行緒,
第二部分:
class HelloCsdnFrame extends JFrame{
public HelloCsdnFrame()
{
setTitle("Hello CSDN.NET");
setSize(WIDTH,HEIGHT);
HelloCsdnPanel panel=new HelloCsdnPanel();
Container c=getContentPane();
c.add(panel);
}
public static final int WIDTH=300;
public static final int HEIGHT=200;
}
/**this part we extend our HelloCsdnFram to JFrame and construct a new object HelloCsdnPanel and add it on the frame
/*
在此我們把我們建立的object繼承java的JFrame類,使他有JFrame的屬性.行為.然後設定標題和大小,再次建立一個新的object
HelloCsdnPanel 這是因為是在JFrame中實現的所以要建立容器c .把我們建立的panel物件放入container c中.
第三部分
class HelloCsdnPanel extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawString("Hello CSDN.NET",MESSAGE_X,MESSAGE_Y);
}
public static final int MESSAGE_X=100;
public static final int MESSAGE_Y=100;
}
/** A panel that display a message
*/ 繼續我們繼承剛建立的HelloCsdnPanel 到JPanel使我們的物件有JPanel的屬性,然後我們才能在frame上輸出字元的方法
g.drawString
由此程式我們一方面可以很好的看出java的核心思想----繼承關係,另一方面可以看出swing的基本構架是什麼.
他有幾個層,每個層實現自己的什麼功能.
5.自此我們可以看出frame的內部結構:
------JFrame(底層)
|
---------J
|
---------JLayeredPane
|
-----------選單條
|
-----------內容窗格
|
-----------透明窗格(頂層)
而在這6個層中我們最關係的是選單條和內容窗格.因為它覺定我們的frame是什麼樣的.
總結:可以看出Swing是java很好的表現,怪不得關於Swing的書可以寫成很厚的一本,本章只是教那些初學者,對於java有一個更好的認識,不近近是停留在控制檯上的程式設計.
swing世界是很奇妙的,有待大家一起去探索
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-963031/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle基礎入門(轉)Oracle
- bash入門基礎(轉)
- shell入門基礎必備(轉)
- Squid Proxy Server基礎入門(轉)UIServer
- RabbitMQ基礎入門MQ
- mongodb基礎入門MongoDB
- MySQL 基礎入門MySql
- ZooKeeper 基礎入門
- Elasticsearch 基礎入門Elasticsearch
- Vim 入門:基礎
- Bootstrap基礎入門boot
- Html基礎入門HTML
- ElasticSearch基礎入門Elasticsearch
- HTML 基礎入門HTML
- Dart 基礎入門Dart
- SQL入門基礎SQL
- Nginx 基礎入門Nginx
- Kafka基礎入門Kafka
- Redis入門基礎Redis
- Java 入門基礎Java
- Maven入門基礎Maven
- JavaScript入門基礎JavaScript
- SQL基礎入門SQL
- Zookeeper基礎入門
- goalng 基礎入門Go
- TypeScript 基礎入門TypeScript
- Mongoose基礎入門Go
- systemtap基礎入門
- sqlServer 基礎入門SQLServer
- 【FastAPI】入門基礎ASTAPI
- shell入門基礎
- go基礎入門Go
- 前端基礎入門四(JavaScript基礎)前端JavaScript
- Dreamweaver MX 2004 入門基礎教程(轉)
- 新手入門之——Linux學習基礎(轉)Linux
- java Swing程式設計入門Java程式設計
- React Hooks入門: 基礎ReactHook
- Docker | 入門 & 基礎操作Docker