當前位置 : IT培訓網 > Java開發 > Java教程 > Java編程開發之對話框

Java編程開發之對話框

時間:2016-09-02 14:54:01??來源:Java培訓網??作者:IT培訓網??已有:名學員訪問該課程
標簽(Tag):?? Java編程(679)
對話框分為強制和非強制兩種。強制型對話框不能中斷對話過程,直至對話框結束,才讓程序響應對話框以外的事件。非強制型對話框可以中斷對話過程,去響應對話框以外的事件。強制型也稱有模式對話框,非強制對話框也稱非

原文標題:Java對話框(JDialog類和JOptionPane類),關于這方面該如何學習呢,Java對話框知識點難度如何呢,就讓我們一起來學習吧。

對話框是為了人機對話過程提供交互模式的工具。應用程序通過對話框,或給用戶提供信息,或從用戶獲得信息。對話框是一個臨時窗口,可以在其中放置用于得到用戶輸入的控件。在Swing中,有兩個對話框類,它們是JDialog類和JOptionPane類。JDialog類提供構造并管理通用對話框;JOptionPane類給一些常見的對話框提供許多便于使用的選項,例如,簡單的“yes-no”對話框等。

JDialog

JDialog類作作對話框的基類。對話框與一般窗口不同,對話框依賴其他窗口,當它所依賴的窗口消失或最小化時,對話框也將消失;窗口還原時,對話框又會自動恢復。

對話框分為強制和非強制兩種。強制型對話框不能中斷對話過程,直至對話框結束,才讓程序響應對話框以外的事件。非強制型對話框可以中斷對話過程,去響應對話框以外的事件。強制型也稱有模式對話框,非強制對話框也稱非模式對話框。

JDialog對象也是一種容器,因此也可以給JDialog對話框指派布局管理器,對話框的默認布局為BoarderLayout布局。但組件不能直接加到對話框中,對話框也包含一個內容面板,應當把組件加到JDialog對象的內容面板中。由于對話框依賴窗口,因此要建立對話框,必須先要創建一個窗口。

JDialog類常用的構造方法有3個:

•       JDialog(),構造一個初始化不可見的非強制型對話框。

•       JDialog(JFramef,String s),構造一個初始化不可見的非強制型對話框,參數f設置對話框所依賴的窗口,參數s用于設置標題。通常先聲明一個JDialog類的子類,然后創建這個子類的一個對象,就建立了一個對話框。

•       JDialog(JFrame f,String s,boolean b),構造一個標題為s,初始化不可見的對話框。參數f設置對話框所依賴的窗口,參數b決定對話框是否強制或非強制型。

JDialog類的其他常用方法有以下幾個:

•       getTitle(),獲取對話框的標題。

•       setTitle(String s),設置對話框的標題。

•       setModal(boolean b),設置對話框的模式。

•       setSize(),設置框的大小。

•       setVisible(boolean b),顯示或隱藏對話框。

【例 11-16】小應用程序聲明一個用戶窗口類和對話框類,用戶窗口有兩個按鈕和兩個文本框,當點擊某個按鈕時,對應的對話框被激活。在對話框中輸入相應信息,按對話框的確定按鈕。確定按鈕的監視方法,將對話框中輸入的信息傳送給用戶窗口,并在用戶窗口的相應文本框中顯示選擇信息。

import java.applet.*

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

class MyWindow extends JFrame implements ActionListener{

    private JButton button1,button2;

    private static int flg=0;

    private static JTextField text1,text2;

    Mywindow(String s){

        super(s);

        Container con = this.getContentPane();

        con.setLayout(new GridLayout(2,2));

        this.setSize(200,100);

        this setLocation(100,100);

        button1 = new JButton("選擇水果");

        button2 = new JButton("選擇食品");

        button1.addActionListener(this);

        button2.addActionListener(this);

        text1 = new JTextField(20);

        text2 = new JTextField(20);

        con.add(button1);

        con.add(button2);

        con.add(text1);

        con.add(text2);

        this.setVisible(true);

        this.pack();

    }

    public static void returnName(String s){

        if(flg ==1)

            text1.setText("選擇的水果是:"+s);

        else if(flg == 2)

            text2.setText("選擇的食品是:"+s);

    }

    public void actionPerformed(ActionEvent e){

        MyDialog dialog;

        if(e.getSource()==button1){

            dialog = new MyDialog(this,"水果");

            dialog.setVisible(true);

            flg =1;

        }

        else if(e.getSource()==button2){

            dialog =new MyDialog(this,"食品");

            dialog.setVisible(true);

            flg=2;

        }

    }

}

class MyDialog extends JDialog implements ActionListener{

    JLabel title;

    JTextField text;

    JButton done;

    Mydialog(JFrame F,String s){

        super(F,s,true);//模態

        Container con = this.getContentPane();

        title = new JLabel("輸入"+s+"名稱");

        text = new JTextField(10);

        text.setEditable(true);

        con.setLayout(new FlowLayout());

        con.setSize(200,100);

        setModal(false);

        done = new JButton("確定");

        done.addActionListener(this);

        con.setVisible(true);

        this.pack();

    }

    public void actionPerformed(ActionEvent e){

        MyWindow.returnName(text.getText());

        setVisible(false);

        dispose();

    }

}

public class Example6_6 extends Applet{

    MyWindow window;

    MyDialog dialog;

    public void init(){

        window = new MyWindow("帶對話框窗口");

    }

}

上述例子創建的是強制型對話框,改為非強制型對話框就允許用戶在對話過程中暫停,與程序的其他部分進行交互。這樣,在界面中可以看到部分對話的效果。

將上述例子改為非強制型對話框只要作少量的改動即可。首先是將對話框構造方法中的代碼“super(F,s,true);”改為 “super(F,s,false);”。

第二個變化:原來是響應確定按鈕事件時,才調用方法returnName(),將對話框得到的字符串返回給程序。現在當文本框輸入選擇字符串結束后,就應該立即調用該方法。為此,需要對文本框的輸入事件作監視,為文本注冊監視器:

public void actionPerformed(ActionEvent e){

if(e.getSource()==text){

MyWindow.returnName(text.getText());

}

else if(e.getSource()==done){

MyWindow.returnName(text.getText());

setVisible(false);

dispose();//清除資源

}

}

JOptionPane

經常遇到非常簡單的對話情況,為了簡化常見對話框的編程,JOptionPane類定義了四個簡單對話框類型,參見表11-4。JOptionPane類提供一組靜態方法,讓用戶選用某種類型的對話框。下面的代碼是選用確認對話框:

int result = JOptionPane.showConfirmDialog(parent,“確實要退出嗎”, “退出確認“,JOptionPane.YES_NO_CANCEL_OPTION);

其中方法名的中間部分文字“Confirm”是創建對話框的類型,文字Confirm指明是選用確認對話框。將文字Confirm改為另外三種類型的某一個,就成為相應類型的對話框。上述代碼的四個參數的意義是:第一個參數指定這個對話框的父窗口;第二個參數是對話框顯示的文字;第三個參數是對話框的標題;最后一個參數指明對話框有三個按鈕,分別為“是(Y)”,“否(N)”,和“撤銷”。方法的返回結果是用戶響應了這個對話框后的結果,參見表 11-5 給出的可能答案。

輸入對話框以列表或文本框形式請求用戶輸入選擇信息,用戶可以從列表中選擇選項或從文本框中輸入信息。以下是一個從列表中選擇運行項目的輸入對話框的示意代碼:

String result = (String)JOptionPane.showInputDialog(parent,

“請選擇一項運動項目”, “這是運動項目選擇對話框”,

JOptionPane.QUESTION_MESSAGE,null,

new Object[]{“踢足球“,“打籃球”,“跑步”,“跳繩”},“跑步”);

第四個參數是信息類型,參見11-6,第五個參數在這里沒有特別的作用,總是用null;第六個參數定義了一個供選擇的字符串數組,第七個參數是選擇的默認值。對話框還包括“確定”和“撤銷”按鈕。

表11-4 JOptionPane對話框類型

輸入

通過文本框、列表或其他手段輸入,另有“確定”和“撤銷”按鈕

確認

提出一個問題,待用戶確認,另有“是(Y)”、“否(N)”和“撤銷”按鈕

信息

顯示一條簡單的信息,另有“確定”和“撤銷”按鈕

選項

顯示一列供用戶選擇的選項

 

 

表 11-5  由 JOptionPane 對話框返回的結果

YES_OPTION

用戶按了“是(Y)”按鈕

NO_OPTION

用戶按了“否(N)”按鈕

CANCEL_OPTION

用戶按了“撤銷”按鈕

OK_OPTION

用戶按了“確定”按鈕

CLOSED_OPTION

用戶沒按任何按鈕,關閉對話框窗口

 

 

表 11-6 JOptionPane 對話框的信息類型選項

PLAIN_MESSAGE

不包括任何圖標

WARNING_MESSAGE

包括一個警告圖標

QUESTION_MESSAGE

包括一個問題圖標

INFORMATIN_MESSAGE

包括一個信息圖標

ERROR_MESSAGE

包括一個出錯圖標

 

有時,程序只是簡單地輸出一些信息,并不要求用戶有反饋。這樣的對話框可用以下形式的代碼創建:

    JOptionPane.showMessageDialog(parent, “這是一個Java程序”,

        “我是輸出信息對話框”,JOptionPane.PLAIN_MESSAGE);

上述代碼中前三參數的意義與前面所述相同,最后參數是指定信息類型為不包括任何圖標,參見表11-6。

頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
------分隔線----------------------------
Java教程
1、Java 概述
1.1 Java語言概述
1.2 Java虛擬機以及跨平臺原理
1.3 Java的主要就業方向
1.4 Java的不同版本
1.5 Java開發環境搭建
1.6 第一個Java程序示例
1.7 Java類和對象的概念
1.8 Java類庫及其組織結構
1.9 Java import
2、Java 語法基礎
2.1 Java數據類型以及變量的定義
2.2 Java數據類型轉換
2.3 Java運算符
2.4 Java流程控制
2.5 Java數組的定義和使用
2.6 Java字符串(String)
2.7 Java StringBuffer與StringBuider
2.8 強調一下編程風格
3、Java 類與對象
3.1 Java類的定義及其實例化
3.2 Java訪問修飾符
3.3 Java變量的作用域
3.4 Java this關鍵字詳解
3.5 Java方法重載
3.6 Java類的基本運行順序
3.7 Java包裝類、拆箱和裝箱詳解
3.8 再談Java包
3.9 源文件的聲明規則
4、Java 繼承和多態
4.1 繼承的概念與實現
4.2 Java super關鍵字
4.3 繼承中的方法的覆蓋和重載
4.4 多態和動態綁定
4.5 instanceof 運算符
4.6 多態對象的類型轉換
4.7 Java static關鍵字
4.8 Java final關鍵字
4.9 Java Object類
5、面向對象高級特性
5.1 Java內部類及其實例化
5.2 內部類的分類
5.3 抽象類的概念和使用
5.4 接口的概念和使用
5.5 接口和抽象類的區別
5.6 Java 泛型
5.7 泛型通配符和類型參數的范圍
6、異常處理
6.1 異常處理基礎
6.2 異常類型Java語言中常見的異常類型有哪些
6.3 未被捕獲的異常
6.4 try和catch的使用
6.5 多重catch語句的使用
6.6 try語句的嵌套
6.7 throw:異常的拋出
6.8 throws子句
6.9 finally塊
6.10 Java的內置異常
6.11 創建自己的異常子類
6.12 斷言
7、線程編程
7.1 線程的概念
7.2 Java線程模型
7.3 主線程
7.4 創建線程
7.5 創建多線程
7.6 isAlive()和join()的使用
7.7 線程優先級
7.8 線程同步
7.9 線程間通信
7.10 線程死鎖
7.11 線程的掛起、恢復和終止
8、輸入輸出(IO)操作
8.1 輸入輸出基本概念
8.2 面向字符的輸入流
8.3 面向字符的輸出流
8.4 面向字節的輸入輸出流
8.5 面向字節流的應用
8.6 文件與目錄管理
8.7 文件的隨機讀寫
8.8 文件的壓縮處理
9、常用類庫、向量與哈希
9.1 Java基礎類庫
9.2 Object類
9.3 Java語言包(java.lang)簡介
9.4 日期和時間類
9.5 向量及其應用
9.6 哈希表及其應用
10、圖形界面(GUI)設計
10.1 圖形界面設計基礎
10.2 框架窗口
10.3 標簽、按鈕和按鈕事件
10.4 面板
10.5 布局設計
10.6 文本框和文本區
10.7 文本框和文本區的輸入輸出
10.8 選擇框和單選按鈕
10.9 列表和組合框
10.10 菜單
10.11 對話框
10.12 滾動條
10.13 鼠標事件
10.14 鍵盤事件
11、圖形、圖像與多媒體
11.1 繪圖基礎
11.2 設置字型和顏色
11.3 繪圖模式
11.4 Graphics類的繪圖方法
11.5 Graphics2D類的繪圖方法
11.6 圖像處理基礎
11.7 圖像緩沖技術
11.8 多媒體基礎
12、網絡與數據庫編程
12.1 IP地址和InetAddress類
12.2 統一資源定位符
12.3 套接字(Socket)
12.4 數據庫連接
12.5 幾個重要的類和接口
12.6 數據庫查詢
12.7 數據庫更新
12.8 插入記錄
12.9 修改記錄
12.10 刪除記錄
五月情天