欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Java編寫GUI對(duì)話框的教程

 更新時(shí)間:2015年10月08日 16:00:19   投稿:goldensun  
這篇文章主要介紹了使用Java編寫GUI對(duì)話框的教程,是Java圖形化編程中的基礎(chǔ)知識(shí),需要的朋友可以參考下

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

JDialog類作作對(duì)話框的基類。對(duì)話框與一般窗口不同,對(duì)話框依賴其他窗口,當(dāng)它所依賴的窗口消失或最小化時(shí),對(duì)話框也將消失;窗口還原時(shí),對(duì)話框又會(huì)自動(dòng)恢復(fù)。

對(duì)話框分為強(qiáng)制和非強(qiáng)制兩種。強(qiáng)制型對(duì)話框不能中斷對(duì)話過程,直至對(duì)話框結(jié)束,才讓程序響應(yīng)對(duì)話框以外的事件。非強(qiáng)制型對(duì)話框可以中斷對(duì)話過程,去響應(yīng)對(duì)話框以外的事件。強(qiáng)制型也稱有模式對(duì)話框,非強(qiáng)制對(duì)話框也稱非模式對(duì)話框。

JDialog對(duì)象也是一種容器,因此也可以給JDialog對(duì)話框指派布局管理器,對(duì)話框的默認(rèn)布局為BoarderLayout布局。但組件不能直接加到對(duì)話框中,對(duì)話框也包含一個(gè)內(nèi)容面板,應(yīng)當(dāng)把組件加到JDialog對(duì)象的內(nèi)容面板中。由于對(duì)話框依賴窗口,因此要建立對(duì)話框,必須先要?jiǎng)?chuàng)建一個(gè)窗口。

JDialog類常用的構(gòu)造方法有3個(gè):

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

JDialog類的其他常用方法有以下幾個(gè):

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

【例】小應(yīng)用程序聲明一個(gè)用戶窗口類和對(duì)話框類,用戶窗口有兩個(gè)按鈕和兩個(gè)文本框,當(dāng)點(diǎn)擊某個(gè)按鈕時(shí),對(duì)應(yīng)的對(duì)話框被激活。在對(duì)話框中輸入相應(yīng)信息,按對(duì)話框的確定按鈕。確定按鈕的監(jiān)視方法,將對(duì)話框中輸入的信息傳送給用戶窗口,并在用戶窗口的相應(yīng)文本框中顯示選擇信息。

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);//模態(tài)
    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("帶對(duì)話框窗口");
  }
}

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

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

第二個(gè)變化:原來是響應(yīng)確定按鈕事件時(shí),才調(diào)用方法returnName(),將對(duì)話框得到的字符串返回給程序?,F(xiàn)在當(dāng)文本框輸入選擇字符串結(jié)束后,就應(yīng)該立即調(diào)用該方法。為此,需要對(duì)文本框的輸入事件作監(jiān)視,為文本注冊(cè)監(jiān)視器:

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類

經(jīng)常遇到非常簡(jiǎn)單的對(duì)話情況,為了簡(jiǎn)化常見對(duì)話框的編程,JOptionPane類定義了四個(gè)簡(jiǎn)單對(duì)話框類型,參見表11-4。JOptionPane類提供一組靜態(tài)方法,讓用戶選用某種類型的對(duì)話框。下面的代碼是選用確認(rèn)對(duì)話框:

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


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

輸入對(duì)話框以列表或文本框形式請(qǐng)求用戶輸入選擇信息,用戶可以從列表中選擇選項(xiàng)或從文本框中輸入信息。以下是一個(gè)從列表中選擇運(yùn)行項(xiàng)目的輸入對(duì)話框的示意代碼:

  String result = (String)JOptionPane.showInputDialog(parent,
    “請(qǐng)選擇一項(xiàng)運(yùn)動(dòng)項(xiàng)目”, “這是運(yùn)動(dòng)項(xiàng)目選擇對(duì)話框”,
    JOptionPane.QUESTION_MESSAGE,null,
    new Object[]{“踢足球“,“打籃球”,“跑步”,“跳繩”},“跑步”);

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

由 JOptionPane 對(duì)話框返回的結(jié)果

JOptionPane 對(duì)話框的信息類型選項(xiàng)

有時(shí),程序只是簡(jiǎn)單地輸出一些信息,并不要求用戶有反饋。這樣的對(duì)話框可用以下形式的代碼創(chuàng)建:

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


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

相關(guān)文章

  • Java設(shè)計(jì)圖形與多媒體處理

    Java設(shè)計(jì)圖形與多媒體處理

    本文主要介紹了Java的圖形設(shè)計(jì)以及多媒體處理,源碼也做了詳細(xì)的注釋,對(duì)于初學(xué)者應(yīng)該不難。詳細(xì)請(qǐng)看下文
    2015-09-09
  • SpringBoot中讀取application.properties配置文件的方法

    SpringBoot中讀取application.properties配置文件的方法

    這篇文章主要介紹了SpringBoot中讀取application.properties配置文件的三種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • Spring+MongoDB實(shí)現(xiàn)登錄注冊(cè)功能

    Spring+MongoDB實(shí)現(xiàn)登錄注冊(cè)功能

    這篇文章主要為大家詳細(xì)介紹了Spring+MongoDB實(shí)現(xiàn)登錄注冊(cè)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 如何使用Java給您的圖片瘦身之Thumbnailator技術(shù)

    如何使用Java給您的圖片瘦身之Thumbnailator技術(shù)

    在java日常開發(fā)中經(jīng)常遇到對(duì)圖片資源的操作需求,如壓縮、縮放、旋轉(zhuǎn),下面這篇文章主要給大家介紹了關(guān)于如何使用Java給您的圖片瘦身之Thumbnailator技術(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • SpringBoot源碼 PropertySource解析

    SpringBoot源碼 PropertySource解析

    PropertySource是spring中對(duì)于鍵值屬性的一種抽象,主要是name和sourcePropertyResolver是對(duì)PropertySource提供對(duì)外的統(tǒng)一數(shù)據(jù)處理,對(duì)于占位符的處理委托于PropertyPlaceholderHelper,對(duì)Springboot?源碼 PropertySource相關(guān)知識(shí)感興趣的朋友一起看看吧
    2023-01-01
  • Netty4之如何實(shí)現(xiàn)HTTP請(qǐng)求、響應(yīng)

    Netty4之如何實(shí)現(xiàn)HTTP請(qǐng)求、響應(yīng)

    這篇文章主要介紹了Netty4之如何實(shí)現(xiàn)HTTP請(qǐng)求、響應(yīng)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • logback 配置詳解(推薦)

    logback 配置詳解(推薦)

    這篇文章主要介紹了logback 配置詳解(推薦),詳細(xì)的介紹了logback的組成使用和配置,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • java金額數(shù)字轉(zhuǎn)中文工具類詳解

    java金額數(shù)字轉(zhuǎn)中文工具類詳解

    這篇文章主要為大家詳細(xì)介紹了java金額數(shù)字轉(zhuǎn)中文工具類的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Java應(yīng)用服務(wù)器之tomcat會(huì)話復(fù)制集群配置的示例詳解

    Java應(yīng)用服務(wù)器之tomcat會(huì)話復(fù)制集群配置的示例詳解

    這篇文章主要介紹了Java應(yīng)用服務(wù)器之tomcat會(huì)話復(fù)制集群配置的相關(guān)知識(shí),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Spring boot 跳轉(zhuǎn)到j(luò)sp頁面的實(shí)現(xiàn)方法

    Spring boot 跳轉(zhuǎn)到j(luò)sp頁面的實(shí)現(xiàn)方法

    本篇文章主要介紹了Spring boot 跳轉(zhuǎn)到j(luò)sp頁面的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04

最新評(píng)論