最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

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

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

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

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

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("帶對話框窗口");
  }
}

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

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

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

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

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


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

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

  String result = (String)JOptionPane.showInputDialog(parent,
    “請選擇一項運動項目”, “這是運動項目選擇對話框”,
    JOptionPane.QUESTION_MESSAGE,null,
    new Object[]{“踢足球“,“打籃球”,“跑步”,“跳繩”},“跑步”);

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

由 JOptionPane 對話框返回的結果

JOptionPane 對話框的信息類型選項

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

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


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

相關文章

  • Java簡單獲取字符串像素的方法

    Java簡單獲取字符串像素的方法

    這篇文章主要介紹了Java簡單獲取字符串像素的方法,涉及Java針對字符串字體操作的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • SpringBoot中快速實現郵箱發(fā)送代碼解析

    SpringBoot中快速實現郵箱發(fā)送代碼解析

    這篇文章主要介紹了SpringBoot中快速實現郵箱發(fā)送代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • Java文件處理之使用XWPFDocument導出Word文檔

    Java文件處理之使用XWPFDocument導出Word文檔

    最近因項目開發(fā)的需要,整理了一份用JAVA導出WORD文檔,下面這篇文章主要給大家介紹了關于Java文件處理之使用XWPFDocument導出Word文檔的相關資料,需要的朋友可以參考下
    2023-12-12
  • RocketMQ實現隨緣分BUG小功能示例詳解

    RocketMQ實現隨緣分BUG小功能示例詳解

    這篇文章主要為大家介紹了RocketMQ實現隨緣分BUG小功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • java 中ThreadLocal 的正確用法

    java 中ThreadLocal 的正確用法

    這篇文章主要介紹了java 中ThreadLocal 的正確用法的相關資料,需要的朋友可以參考下
    2017-03-03
  • Java不能真正泛型的原因是什么?

    Java不能真正泛型的原因是什么?

    今天我來給大家講一下,Java 不能實現真正泛型的原因是什么?感興趣的朋友可以看一下,如果能給你到來一些幫助,請關注小編的其他內容
    2021-08-08
  • spring中通過ApplicationContext getBean獲取注入對象的方法實例

    spring中通過ApplicationContext getBean獲取注入對象的方法實例

    今天小編就為大家分享一篇關于spring中通過ApplicationContext getBean獲取注入對象的方法實例,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Java設計模式常用的七大原則總結

    Java設計模式常用的七大原則總結

    今天給大家總結了Java設計模式的七大原則,主要有單一職責原則,接口隔離原則,依賴倒轉原則,里氏替換原則等,文中有非常詳細的介紹,需要的朋友可以參考下
    2021-06-06
  • Spring的自動裝配Bean的三種方式

    Spring的自動裝配Bean的三種方式

    本篇文章主要介紹了 Spring的自動裝配Bean的三種方式,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Java依賴包漏洞檢測命令詳解

    Java依賴包漏洞檢測命令詳解

    這篇文章主要介紹了Java依賴包漏洞檢測命令,你可以在修復漏洞后快速進行依賴項的安全檢查,并生成新的報告,而不需要等待 CVE 數據庫的下載和更新,這樣可以顯著提高掃描的效率,需要的朋友可以參考下
    2024-11-11

最新評論

肇州县| 建水县| 岱山县| 太白县| 盘山县| 惠水县| 渭南市| 岑巩县| 九龙坡区| 花垣县| 崇义县| 西宁市| 灌阳县| 浏阳市| 乐业县| 肥乡县| 托克托县| 连平县| 游戏| 二连浩特市| 万宁市| 泰安市| 南华县| 平乐县| 璧山县| 河北区| 临江市| 双辽市| 孝昌县| 孟州市| 廉江市| 黄龙县| 东莞市| 南通市| 南江县| 大同县| 汾阳市| 景德镇市| 香港| 盖州市| 饶平县|