全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

首頁(yè)技術(shù)文章正文

Swing頂級(jí)容器:JFrame和JDialog介紹

更新時(shí)間:2020-08-20 來(lái)源:黑馬程序員 瀏覽量:

JFrame

在Swing組件中,最常見(jiàn)的一個(gè)容器就是JFrame,它是一個(gè)獨(dú)立存在的頂級(jí)容器(也叫窗口),不能放置在其他容器之中,JFrame支持通用窗口所有的基本功能,例如窗口最小化、設(shè)定窗口大小等。接下來(lái)通過(guò)一個(gè)案例來(lái)演示一下JFrame的使用效果,如文件1所示。

文件1 Example01.java

import javax.swing.*;
 public class Example01 {
     private static void createAndShowGUI() {
         // 創(chuàng)建并設(shè)置JFrame容器窗口
         JFrame frame = new JFrame("JFrameTest");
         // 設(shè)置關(guān)閉窗口時(shí)的默認(rèn)操作
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         // 設(shè)置窗口尺寸
         frame.setSize(250, 150);
          // 展示JFrame容器窗口
          frame.setVisible(true);
      }
      public static void main(String[] args) {
          //使用SwingUtilities工具類(lèi)調(diào)用createAndShowGUI()方法顯示GUI程序
          SwingUtilities.invokeLater(Example01::createAndShowGUI);
      }
  }


運(yùn)行結(jié)果如圖1所示。

1597912947669_QQ截圖20200820163152.png

圖1 運(yùn)行結(jié)果


文件1中,通過(guò)JFrame類(lèi)創(chuàng)建了一個(gè)窗體對(duì)象,在創(chuàng)建窗體對(duì)象的同時(shí)指定了窗體對(duì)象的標(biāo)題為“JFrameTest”,然后通過(guò)JFrame類(lèi)的相關(guān)方法分別設(shè)置了窗體對(duì)象關(guān)閉時(shí)的操作、窗體尺寸大小以及窗體信息可見(jiàn)。另外,在main()方法中,使用了javax.swing包下中SwingUtilities(封裝有一系列操作Swing的方法集合工具類(lèi))工具類(lèi)的invokeLater()方法執(zhí)行了GUI程序,該方法需要傳入一個(gè)接口作為參數(shù),示例中使用到了方法引用進(jìn)行傳參。


JDialog

JDialog是Swing的另外一個(gè)頂級(jí)容器,通常用來(lái)表示對(duì)話(huà)框窗口。JDialog對(duì)話(huà)框可分為兩種:模態(tài)對(duì)話(huà)框和非模態(tài)對(duì)話(huà)框。所謂模態(tài)對(duì)話(huà)框是指用戶(hù)需要等到處理完對(duì)話(huà)框后才能繼續(xù)與其他窗口交互,而非模態(tài)對(duì)話(huà)框允許用戶(hù)在處理對(duì)話(huà)框的同時(shí)與其他窗口交互。

對(duì)話(huà)框是模態(tài)或者非模態(tài),可以在創(chuàng)建JDialog對(duì)象時(shí)為構(gòu)造方法傳入?yún)?shù)來(lái)設(shè)置,也可以在創(chuàng)建JDialog對(duì)象后調(diào)用它的setModal()方法來(lái)進(jìn)行設(shè)置,JDialog常用的構(gòu)造方法如表1所示。

表1 JDialog常用構(gòu)造方法


方法聲明功能描述
JDialog(Frame owner)構(gòu)造方法,用來(lái)創(chuàng)建一個(gè)非模態(tài)的對(duì)話(huà)框,owner為對(duì)話(huà)框所有者(頂級(jí)窗口JFrame)
JDialog(Frame owner,String title)構(gòu)造方法,創(chuàng)建一個(gè)具有指定標(biāo)題的非模態(tài)對(duì)話(huà)框
JDialog(Frame owner,boolean modal)創(chuàng)建一個(gè)有指定模式的無(wú)標(biāo)題對(duì)話(huà)框


表1中,列舉了JDialog三個(gè)常用的構(gòu)造方法,在這三個(gè)構(gòu)造方法中都需要接收一個(gè)Frame類(lèi)型的對(duì)象,表示對(duì)話(huà)框所有者。第三個(gè)構(gòu)造方法中,參數(shù)modal用來(lái)指定JDialog窗口是模態(tài)還是非模態(tài),如果modal值設(shè)置為true,對(duì)話(huà)框就是模態(tài)對(duì)話(huà)框,反之則是非模態(tài)對(duì)話(huà)框,如果不設(shè)置modal的值,其默認(rèn)值為false,也就是是非模態(tài)對(duì)話(huà)框。

接下來(lái)通過(guò)一個(gè)案例來(lái)學(xué)習(xí)如何使用JDialog對(duì)話(huà)框,如文件1所示。

文件1 Example02.java

import javax.swing.*;
 public class Example02 {
     private static void createAndShowGUI() {
         // 創(chuàng)建并設(shè)置JFrame容器窗口
         JFrame frame = new JFrame("JFrameTest");
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setSize(350, 150);
         frame.setVisible(true);
         // 在JFrame容器窗口基礎(chǔ)上創(chuàng)建并設(shè)置JDialog容器窗口
          JDialog dialog = new JDialog(frame, "JDialog對(duì)話(huà)框",true);
          dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
          dialog.setSize(200, 100);
          dialog.setVisible(true);
      }
      public static void main(String[] args) {
          // 使用SwingUtilities工具類(lèi)調(diào)用createAndShowGUI()方法執(zhí)行并顯示GUI程序
          SwingUtilities.invokeLater(Example02::createAndShowGUI);
      }
  }


編運(yùn)行結(jié)果如圖1所示。

1597912961421_QQ截圖20200820163439.png

圖1 運(yùn)行結(jié)果


在文件1中,先后創(chuàng)建并設(shè)置了JFrame和JDialog兩個(gè)容器對(duì)象,從文件代碼可以看出兩種頂級(jí)容器的創(chuàng)建方式基本相同,但從圖1的結(jié)果顯示看出,雖然JFrame和JDialog都可以創(chuàng)建頂級(jí)容器窗口,但JDialog創(chuàng)建的窗口右上角沒(méi)有放大和縮小功能。另外,由于創(chuàng)建JDialog容器對(duì)象時(shí),設(shè)置的模態(tài)參數(shù)modal為true,所以在操作時(shí),必須先關(guān)閉JDialog對(duì)話(huà)框后才可以與JFrame窗口進(jìn)行交互。


猜你喜歡:

Java swing是什么?有什么作用?

Shiro如何實(shí)現(xiàn)Realm接口?

Docker的底層技術(shù)介紹

Java高級(jí)軟件工程師課程

分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!