// 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 object 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.每一部分都有註釋,這一段代碼是作什麼用的。 一塊兒來分析此程序:
做者:leeak出處:Java編程教學網責任編輯: 方舟 [ 2004-07-15 14:33 ]當咱們學習過了java中的基本語法,而且熟悉java的面向對象基礎之後java
在第一部分
// 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對象放入containerc中。
第三部分
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(底層)
|
---------JRoot
|
---------JLayeredPane
|
-----------菜單條
|
-----------內容窗格
|
-----------透明窗格(頂層)
而在這6個層中咱們最關係的是菜單條和內容窗格.由於它覺定咱們的frame是什麼樣的。
編程