日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java进阶篇(六)——Swing程序设计(上)

發布時間:2025/3/18 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java进阶篇(六)——Swing程序设计(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  Swing是GUI(圖形用戶界面)開發工具包,內容有很多,這里會分塊編寫,但在進階篇中只編寫Swing中的基本要素,包括容器、組件和布局等,更深入的內容這里就不介紹了。想深入學習的朋友們可查閱有關資料或圖書,比如《Java Swing圖形界面開發與案例詳解》——清華大學出版社。

  早期的AWT(抽象窗口工具包)組件開發的圖形用戶界面,要依賴本地系統,當把AWT組件開發的應用程序移植到其他平臺的系統上運行時,不能保證其外觀風格,因此AWT是依賴于本地系統平臺的。而使用Swing開發的Java應用程序,其界面是不受本地系統平臺限制的,也就是說Swing開發的Java應用程序移植到其他系統平臺上時,其界面外觀是不會改變的。但要注意的是,雖然Swing提供的組件可以方便開發Java應用程序,但是Swing并不能取代AWT,在開發Swing程序時通常要借助與AWT的一些對象來共同完成應用程序的設計。

一、常用窗體

  Swing窗體是Swing的一個組件,同時也是創建圖形化用戶界面的容器,可以將其它組件放置在窗體容器中。

  1. JFrame框架窗體

  JFrame窗體是一個容器,在Swing開發中我們經常要用到,它是Swing程序中各個組件的載體。語法格式如下:

JFrame jf = new JFrame(title);

  當然,在開發中更常用的方式是通過繼承java.swing.JFrame類創建一個窗體,可通過this關鍵字調用其方法。

  而在JFrame對象創建完成后,需要調用getContentPane()方法將窗體轉換為容器,然后在容器中添加組件或設置布局管理器,通常這個容器用來包含和顯示組件。如果需要將組件添加至容器,可以使用來自Container類的add()方法進行設置。至于JPanel容器會在后面提到。

  下面舉一個JFrame窗體的例子。

1 import javax.swing.JFrame; 2 import javax.swing.WindowConstants; 3 4 public class JFrameDemo { 5 6 public void CreateJFrame() { 7 JFrame jf = new JFrame("這是一個JFrame窗體"); // 實例化一個JFrame對象 8 jf.setVisible(true); // 設置窗體可視 9 jf.setSize(500, 350); // 設置窗體大小 10 jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 設置窗體關閉方式 11 } 12 13 public static void main(String[] args) { 14 new JFrameDemo().CreateJFrame(); // 調用CreateJFrame()方法 15 } 16 17 }

  運行結果如下:

  

  這就是一個500*350的窗體,用的是setSize()方法;標題為“這是一個JFrame窗體”,在實例化對象時就可以定義;窗體關閉方式見窗體右上角為“EXIT_ON_CLOSE”;窗體可視setVisible()方法中的參數為“false”或不寫setVisible()方法時,此窗體不可見。

  常用的窗體關閉方式有四種,分別為“DO_NOTHING_ON_CLOSE”、“DISPOSE_ON_CLOSE”、“HIDE_ON_CLOSE”、“EXIT_ON_CLOSE”。第一種表示什么也不做就將窗體關閉;第二種表示任何注冊監聽程序對象后會自動隱藏并釋放窗體;第三種表示隱藏窗口的默認窗口關閉;第四種表示退出應用程序默認窗口關閉。

  下面再舉一個用繼承JFrame的方式編寫的代碼,并加入Container容器及JLabel標簽(后面會提到),來看一下具體的流程。

1 import java.awt.Color; 2 import java.awt.Container; 3 4 import javax.swing.JFrame; 5 import javax.swing.JLabel; 6 import javax.swing.SwingConstants; 7 import javax.swing.WindowConstants; 8 9 public class JFrameDemo2 extends JFrame{ 10 11 public void init() { 12 this.setVisible(true); // 可視化 13 this.setSize(500, 350); // 大小 14 this.setTitle("博客園"); // 標題 15 this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // 關閉方式 16 17 JLabel jl = new JLabel("http://www.cnblogs.com/adamjwh/"); // 創建一個JLabel標簽 18 jl.setHorizontalAlignment(SwingConstants.CENTER); // 使標簽文字居中 19 20 Container container = this.getContentPane(); // 獲取一個容器 21 container.add(jl); // 將標簽添加至容器 22 container.setBackground(Color.YELLOW); // 設置容器背景顏色 23 } 24 25 public static void main(String[] args) { 26 new JFrameDemo2().init(); 27 } 28 29 }

  運行結果如下:

  

  這里繼承了JFrame類,所以方法中實現時用this關鍵字即可(或直接實現,不加this)。12~15行為創建JFrame框體;17、18行為JLabel標簽,用與添加一個標簽;20~22行為Container容器,用getContentPane()方法為JFrame窗體獲取容器,并用add()方法將JLabel標簽添加到容器上。

  2. JDialog窗體

  JDialog窗體是Swing組件中的對話框,繼承了AWT組件中的java.awt.Dialog類。功能是從一個窗體中彈出另一個窗體。

  下面來看一個實例:

1 import java.awt.Container; 2 import java.awt.event.ActionEvent; 3 import java.awt.event.ActionListener; 4 5 import javax.swing.JButton; 6 import javax.swing.JDialog; 7 import javax.swing.JFrame; 8 import javax.swing.JLabel; 9 import javax.swing.WindowConstants; 10 11 public class JDialogDemo extends JDialog { // 繼承JDialog類 12 13 public JDialogDemo() { 14 super(new MyJFrame(), "這是一個JDialog窗體", true); // 實例化一個JDialog類對象,指定其父窗體、窗口標題和類型 15 Container container = this.getContentPane(); 16 container.add(new JLabel("http://www.cnblogs.com/adamjwh/")); 17 this.setSize(500, 350); 18 } 19 20 21 public static void main(String[] args) { 22 new JDialogDemo(); 23 } 24 25 } 26 27 // 下面這部分內容包含監聽器,可自行查閱資料 28 class MyJFrame extends JFrame { 29 public MyJFrame() { 30 this.setVisible(true); 31 this.setSize(700, 500); 32 this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 33 34 Container container = this.getContentPane(); 35 container.setLayout(null); 36 37 JButton jb = new JButton("點擊彈出對話框"); // 創建按鈕 38 jb.setBounds(30, 30, 200, 50); // 按鈕位置及大小 39 jb.addActionListener(new ActionListener() { // 監聽器,用于監聽點擊事件 40 @Override 41 public void actionPerformed(ActionEvent e) { 42 new JDialogDemo().setVisible(true); 43 } 44 }); 45 container.add(jb); 46 } 47 }

  運行結果如下:

  

  當我們點擊按鈕時,觸發點擊事件,這時執行第42行的語句,創建一個JDialog的實例化對象,彈出一個窗口。這里出現了許多我們之前學過的知識,比如super關鍵字,在之前提到過,這里相當于使用了JDialog(Frame f, String title, boolean model)形式的構造方法;監聽器的實現就是一個匿名內部類,之前也提到過。

二、標簽組件

  在Swing中顯示文本或提示信息的方法是使用標簽,它支持文本字符串和圖標。上面我們提到的JLabel就是這里的內容。

  1.?標簽

  標簽由JLabel類定義,可以顯示一行只讀文本、一個圖像或帶圖像的文本。

  JLabel類提供了許多構造方法,可查看API選擇需要的使用,如顯示只有文本的標簽、只有圖標的標簽或包含文本與圖標的標簽等。因為上面已經出現過了,這里就不再舉例了。常用語法格式如下,創建的是一個不帶圖標和文本的JLabel對象:

JLabel jl = new JLabel();

  2.?圖標

  Swing中的圖標可以放置在按鈕、標簽等組件上,用于描述組件的用途。圖標可以用Java支持的圖片文件類型進行創建,也可以使用java.awt.Graphics類提供的功能方法來創建。

  在Swing中通過Icon接口來創建圖標,可以在創建時給定圖標的大小、顏色等特性。注意,Icon是接口,在使用Icon接口的時候,必須實現Icon接口的三個方法

public int getIconHeight() public int getIconWidth() public void paintIcon(Component arg0, Graphics arg1, int arg2, int arg3)

  前兩個方法用于獲取圖片的長寬,paintIcon()方法用于實現在指定坐標位置畫圖。

  下面看一個用Icon接口創建圖標的實例:

1 import java.awt.Component; 2 import java.awt.Container; 3 import java.awt.Graphics; 4 5 import javax.swing.Icon; 6 import javax.swing.JFrame; 7 import javax.swing.JLabel; 8 import javax.swing.SwingConstants; 9 import javax.swing.WindowConstants; 10 11 public class IconDemo extends JFrame implements Icon { 12 13 private int width; // 聲明圖標的寬 14 private int height; // 聲明圖標的長 15 16 public IconDemo() {} // 定義無參構造方法 17 18 public IconDemo(int width, int height) { // 定義有參構造方法 19 this.width = width; 20 this.height = height; 21 } 22 23 @Override 24 public int getIconHeight() { // 實現getIconHeight()方法 25 return this.height; 26 } 27 28 @Override 29 public int getIconWidth() { // 實現getIconWidth()方法 30 return this.width; 31 } 32 33 @Override 34 public void paintIcon(Component arg0, Graphics arg1, int arg2, int arg3) { // 實現paintIcon()方法 35 arg1.fillOval(arg2, arg3, width, height); // 繪制一個圓形 36 } 37 38 public void init() { // 定義一個方法用于實現界面 39 IconDemo iconDemo = new IconDemo(15, 15); // 定義圖標的長和寬 40 JLabel jb = new JLabel("icon測試", iconDemo, SwingConstants.CENTER); // 設置標簽上的文字在標簽正中間 41 42 Container container = getContentPane(); 43 container.add(jb); 44 45 this.setVisible(true); 46 this.setSize(500, 350); 47 this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 48 } 49 50 public static void main(String[] args) { 51 new IconDemo().init(); 52 } 53 54 }

  運行結果如下:

  

  這樣如果需要在窗體中使用圖標,就可以用第39行的如下代碼創建圖標:

IconDemo iconDemo = new IconDemo(15, 15);

?  3.?圖片圖標

  Swing中的圖標除了可以繪制之外,還可以使用某個特定的圖片創建。利用javax.swing.ImageIcon類根據現有圖片創建圖標。

  下面看一個實例,我們先在包下放一個圖片(注意放置位置,不同位置路徑不同),如下:

  下面是實現的代碼:

1 import java.awt.Container; 2 import java.net.URL; 3 4 import javax.swing.Icon; 5 import javax.swing.ImageIcon; 6 import javax.swing.JFrame; 7 import javax.swing.JLabel; 8 import javax.swing.SwingConstants; 9 import javax.swing.WindowConstants; 10 11 public class ImageIconDemo extends JFrame { 12 13 public ImageIconDemo() { 14 JLabel jl = new JLabel("這是一個JFrame窗體,旁邊是一個圖片"); 15 URL url = ImageIconDemo.class.getResource("pencil.jpg"); // 獲得圖片所在URL 16 Icon icon = new ImageIcon(url); // 實例化Icon對象 17 jl.setIcon(icon); // 為標簽設置圖片 18 jl.setHorizontalAlignment(SwingConstants.CENTER); 19 jl.setOpaque(true); // 設置標簽為不透明狀態 20 21 Container container = getContentPane(); 22 container.add(jl); 23 24 setVisible(true); 25 setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 26 setSize(500, 350); 27 } 28 29 public static void main(String[] args) { 30 new ImageIconDemo(); 31 } 32 33 }

?  運行結果如下:

  

  對于圖片標簽,我們經常將圖片放置在標簽上,用JLabel中的setIcon()方法即可,當然也可以在初始化JLabel對象時為標簽指定圖標,這是需要獲取一個Icon實例。

  而第15行的getResource()方法可以獲得資源文件的URL路徑,這里的路徑是相對于前面的那個類的,所以可將該圖片與該類放在同一個文件夾下;如果不在同一個文件夾下,需通過其它方法獲取路徑。

?

?  本篇先介紹到這里,內容比較多所以分篇編寫,下一篇為常用的布局管理器、Jpanel等內容。

轉載于:https://www.cnblogs.com/adamjwh/p/8392737.html

總結

以上是生活随笔為你收集整理的Java进阶篇(六)——Swing程序设计(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色噜噜综合 | 日韩色小说 | 亚洲av永久无码精品放毛片 | 伊人精品| 亚洲精品久久 | 少妇系列av | 91在线中文字幕 | 最新中文字幕免费 | 催眠调教艳妇成肉便小说 | 日韩av二区 | 国产欧美视频在线播放 | 免费黄网站在线 | 国产精品一区二区三区免费视频 | 一本色道久久综合亚洲精品 | 日韩片在线观看 | 人妻偷人精品一区二区三区 | 成人超碰 | 成人福利片 | 久久国产乱子伦免费精品 | 国产黄色av | 一级黄色a级片 | 小情侣高清国产在线播放 | 日韩a级在线观看 | 九色网址 | 日韩欧美一区二区三区久久婷婷 | 色噜噜成人 | 精品成人| 亚洲欧美日韩国产成人精品影院 | 韩国视频一区二区三区 | 色小说在线 | 九九热国产精品视频 | 抱着老师的嫩臀猛然挺进视频 | 777精品久无码人妻蜜桃 | 日韩一区欧美二区 | av国产片 | 亚洲国产果冻传媒av在线观看 | 99爱免费 | 亚洲综合资源 | 老地方在线观看免费动漫 | 永久在线观看 | 丰满熟妇人妻av无码区 | se欧美 | 国内av网 | 国产日韩三级 | 欧美一级大片 | 日韩精品视频在线 | av成人免费在线观看 | 男人添女人囗交视频 | 亚洲一区二区三区电影 | 国产色91| 精品少妇人妻AV无码专区在线 | 欧美另类极品videosbest使用方法 | 亚洲黄色影视 | 7799精品视频天天看 | 国产精品美乳在线观看 | 中文字幕第一页在线视频 | 中文字幕视频一区二区 | 黄色三级网络 | 黑人操日本女优 | 永久av| 日本视频在线观看免费 | 国产av精国产传媒 | 中文字幕免费在线看线人动作大片 | 在线观看免费视频黄 | 亚洲免费视频播放 | 久热精品在线视频 | av在线不卡网站 | 超碰在线进入 | 黄黄的网站 | 久草最新视频 | 欧美性猛交aaaa片黑人 | 免费精品视频 | 非洲黑寡妇性猛交视频 | 天天在线观看 | 日朝毛片 | 在线观看91 | 美女激情网 | aaa天堂| 自拍偷拍第5页 | 久草网站 | 久精品国产 | 一区二区网站 | 精品在线91| ww黄色| 激情小视频| xxx老太太 | 久久久久亚洲av无码专区 | 久久一区二区三区精品 | 天天综合网久久综合网 | 日本美女a级片 | 色视av| www.999av| 日韩欧美专区 | 亚洲黄色免费电影 | 欧美aaaaaaaaaa | 国内精久久久久久久久久人 | 中文字幕 自拍偷拍 | jizz毛片| 日本a v在线播放 |