教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Swing JDialog容器和JFrame容器使用教程

更新時間:2020年08月20日17時42分 來源:傳智播客 瀏覽次數(shù):

JFrame

在Swing組件中,最常見的一個容器就是JFrame,它是一個獨(dú)立存在的頂級容器(也叫窗口),不能放置在其他容器之中,JFrame支持通用窗口所有的基本功能,例如窗口最小化、設(shè)定窗口大小等。接下來通過一個案例來演示一下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)閉窗口時的默認(rèn)操作
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 設(shè)置窗口尺寸
        frame.setSize(250150);
         // 展示JFrame容器窗口
         frame.setVisible(true);
    }
     public static void main(String[] args) {
         //使用SwingUtilities工具類調(diào)用createAndShowGUI()方法顯示GUI程序
         SwingUtilities.invokeLater(Example01::createAndShowGUI);
    }
}

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

1597912947669_QQ截圖20200820163152.png

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

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

JDialog

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

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

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

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

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

接下來通過一個案例來學(xué)習(xí)如何使用JDialog對話框,如文件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(350150);
        frame.setVisible(true);
        // 在JFrame容器窗口基礎(chǔ)上創(chuàng)建并設(shè)置JDialog容器窗口
         JDialog dialog = new JDialog(frame, "JDialog對話框",true);
         dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
         dialog.setSize(200100);
         dialog.setVisible(true);
    }
     public static void main(String[] args) {
         // 使用SwingUtilities工具類調(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兩個容器對象,從文件代碼可以看出兩種頂級容器的創(chuàng)建方式基本相同,但從圖1的結(jié)果顯示看出,雖然JFrame和JDialog都可以創(chuàng)建頂級容器窗口,但JDialog創(chuàng)建的窗口右上角沒有放大和縮小功能。另外,由于創(chuàng)建JDialog容器對象時,設(shè)置的模態(tài)參數(shù)modal為true,所以在操作時,必須先關(guān)閉JDialog對話框后才可以與JFrame窗口進(jìn)行交互。


猜你喜歡:

realm中如何使用散列算法?

Java面試之樂觀鎖和悲觀鎖的區(qū)別

Java算法之冒泡排序

Java高級軟件工程師課程

0 分享到:
和我們在線交談!