亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

使用Java編寫GUI對話框的教程

2019-11-26 14:56:36
字體:
來源:轉載
供稿:網友

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

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

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

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

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

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

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

  • getTitle(),獲取對話框的標題。
  • setTitle(String s),設置對話框的標題。
  • setModal(boolean b),設置對話框的模式。
  • setSize(),設置框的大小。
  • setVisible(boolean b),顯示或隱藏對話框。

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

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[]{“踢足球“,“打籃球”,“跑步”,“跳繩”},“跑步”);

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

由 JOptionPane 對話框返回的結果

JOptionPane 對話框的信息類型選項

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

  JOptionPane.showMessageDialog(parent, “這是一個Java程序”,    “我是輸出信息對話框”,JOptionPane.PLAIN_MESSAGE);


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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩一区二区在线视频| 7777免费精品视频| 亚洲一级一级97网| 国产精品第一视频| 久久人人爽亚洲精品天堂| 色偷偷噜噜噜亚洲男人的天堂| 91视频国产一区| 欧美久久精品午夜青青大伊人| 日韩a**站在线观看| 欧美视频在线免费看| 久久天天躁狠狠躁夜夜躁| 大伊人狠狠躁夜夜躁av一区| 91九色蝌蚪国产| 国产免费观看久久黄| 国外成人在线直播| 欧美性jizz18性欧美| 97成人精品视频在线观看| 欧美老女人在线视频| 97超碰蝌蚪网人人做人人爽| 欧美精品久久久久久久久久| 成人国产精品色哟哟| 欧美一级电影在线| 欧美性xxxx极品hd欧美风情| 国产女同一区二区| 色一区av在线| 日韩在线免费高清视频| 欧美电影院免费观看| 91免费人成网站在线观看18| 欧美日本高清一区| 久久久久久久亚洲精品| 亚洲美女性生活视频| 欧美极品少妇xxxxⅹ裸体艺术| 国产精品夜色7777狼人| 91中文精品字幕在线视频| 精品一区二区亚洲| 欧美精品18videos性欧| 精品久久久久久久久久久久久久| 色视频www在线播放国产成人| 欧美日韩国产精品一区二区三区四区| 午夜精品99久久免费| 成人h视频在线| 国产91免费看片| 中文字幕日韩在线视频| 久久91亚洲精品中文字幕奶水| www.久久色.com| 色婷婷久久一区二区| 国产精品吊钟奶在线| 91九色视频在线| 91在线精品视频| 国产精品专区第二| 亚洲美女性生活视频| 亚洲男人的天堂网站| 亚洲第一精品夜夜躁人人躁| 日韩在线观看视频免费| 亚洲高清在线观看| 欧美富婆性猛交| 色无极影院亚洲| 精品国产一区二区三区四区在线观看| xvideos亚洲| 日韩免费观看高清| 国产精品激情自拍| 欧美精品在线播放| 黄色成人av网| 国产乱人伦真实精品视频| 国产精品电影一区| 一本色道久久88综合亚洲精品ⅰ| 清纯唯美亚洲综合| 欧美高清在线播放| 久久久久久久成人| 国产午夜精品全部视频在线播放| 91精品综合视频| 97成人精品区在线播放| 欧美日韩亚洲一区二| 国产一区二区三区高清在线观看| 亚洲人成在线观| 欧美主播福利视频| 国产精品www网站| 久久91亚洲精品中文字幕奶水| 日韩欧美在线播放| 国产精品色视频| 亚洲成成品网站| 欧美日韩亚洲网| 国产精品久久久久久久久久东京| 久久久久久91| 久久国产精品偷| 日本在线精品视频| 亚洲性生活视频在线观看| 亚洲精品电影网站| 欧美专区中文字幕| 欧美亚洲日本黄色| 欧美激情2020午夜免费观看| 久久久久久久久久久久久久久久久久av| 国内精品视频一区| 日韩av在线免费播放| 在线免费看av不卡| 一区二区欧美激情| 亚洲综合小说区| 欧美午夜激情小视频| 欧美影院在线播放| 精品亚洲aⅴ在线观看| 一区二区三区四区精品| 中文字幕国产精品久久| 奇门遁甲1982国语版免费观看高清| 欧美激情中文网| 一区二区三区四区视频| 国产精品亚洲аv天堂网| 欧美日韩高清在线观看| 亚洲视频在线免费观看| 欧美在线影院在线视频| 久久九九国产精品怡红院| 欧美日韩在线第一页| 日韩在线中文视频| 另类色图亚洲色图| 亚洲综合最新在线| 精品亚洲一区二区三区四区五区| 色婷婷亚洲mv天堂mv在影片| 欧美日本国产在线| 日韩电影在线观看免费| 亚洲美女福利视频网站| 欧美猛交ⅹxxx乱大交视频| 亚洲第一视频在线观看| 国产原创欧美精品| 日韩欧亚中文在线| 欧美激情免费视频| 色噜噜国产精品视频一区二区| 亚洲午夜精品久久久久久久久久久久| 亚洲一区二区日本| 欧美视频中文在线看| 欧美在线观看网址综合| 久久久中精品2020中文| 黑人欧美xxxx| 亚洲国产精品成人va在线观看| 97视频在线观看免费高清完整版在线观看| 成人福利网站在线观看11| 日韩av资源在线播放| 亚洲人成电影在线观看天堂色| 欧美日韩亚洲精品内裤| 91精品久久久久久久久久入口| 欧美性高潮在线| 另类美女黄大片| 在线视频欧美日韩精品| 精品欧美国产一区二区三区| 国产精品欧美亚洲777777| 国产99视频精品免视看7| 91亚洲国产成人久久精品网站| 97成人在线视频| 国产日韩欧美在线播放| 久久99久久亚洲国产| 午夜精品三级视频福利| 久久久伊人日本| 国产一区二区三区欧美| 欧美在线视频观看| 日本韩国欧美精品大片卡二| 91九色在线视频| 国产精品第一第二| 久久精品国产清自在天天线| 亚洲欧美综合区自拍另类| 成人在线精品视频| 69**夜色精品国产69乱| 精品久久久久久久久久| 国产精品白嫩初高中害羞小美女| 欧美老少做受xxxx高潮| 亚洲天堂视频在线观看| 热re91久久精品国99热蜜臀|