亚欧洲精品在线观看,窝窝影院午夜看片,久久国产成人午夜av影院宅,午夜91,免费国产人成网站,ts在线视频,欧美激情在线一区

java語言

Java對話框?qū)W習(xí)教程

時(shí)間:2025-05-29 01:47:33 java語言 我要投稿
  • 相關(guān)推薦

Java對話框?qū)W習(xí)教程

  引導(dǎo)語:從本質(zhì)上講,對話框時(shí)一種特殊的窗體,以下是百分網(wǎng)小編分享給大家的Java對話框?qū)W習(xí)教程,希望大家喜歡!

Java對話框?qū)W習(xí)教程

  1.1 對話框

  但有時(shí)候我們需要彈出獨(dú)立的對話框以顯示信息或者從用戶收集信息。對話框,顧名思義,就是向用戶顯示信息并獲取程序繼續(xù)運(yùn)行所需數(shù)據(jù)的窗口,可以起到與用戶交互的作用。從本質(zhì)上講,對話框時(shí)一種特殊的窗體,它通過一個(gè)或多個(gè)組件與用戶交互。與JFrame一樣,對話框有邊框、有標(biāo)題且獨(dú)立存在的容器,并且不能被其他容器所包容,但是對話框不能作為程序的最外層容器,也不能保護(hù)菜單欄。此外,java中的對話框上沒有最大、最小化按鈕。

  1.1.1 JOptionPane 選項(xiàng)對話框

  JOptionPane提供了許多對話框樣式,該類能夠讓你在不編寫任何專門對話框代碼的情況下彈出一個(gè)簡單的對話框。

  JOptionPane類提供了7個(gè)構(gòu)造方法用于創(chuàng)建JOptionPane的類對象,不過在實(shí)際使用時(shí),

  通常不是用new方式創(chuàng)建,而是使用JOptionPane類提供的一些靜態(tài)方法產(chǎn)生。JOptionPane有四個(gè)靜態(tài)方法來顯示這些簡單對話框:

  (1)showMessageDialog:提示信息對話框,這種對話框通常只含有一個(gè)“確定”按鈕。

  (2)showConfirmDialog :確認(rèn)對話框,這類對話框通常會(huì)詢問用戶一個(gè)問題,要求用戶做YES/NO的回答。

  (3)showOptionDialog:選擇對話框,這類對話框可以讓用戶自己定義對話框的類型。

  (4)showInputDialog:輸入對話框,這類對話框可以讓用戶輸入相關(guān)的信息,當(dāng)用戶完成輸入并按下確定按鈕后,系統(tǒng)會(huì)得到用戶所輸入的信息。

  對于每種形式的對話框都有多個(gè)靜態(tài)重載方法,下面分別予以說明。

  1. Message Dialog

  Message Dialog稱為提示信息對話框,這種對話框中通常只含有一個(gè)“確定”按鈕。可以使用showMessage Dialog靜態(tài)方法來顯示一個(gè)Message Dialog,showMessageDialog方法具有如下重載形式。

  ·showMessageDialog(Component parentComponent, Object message)

  ·showMessageDialog(Component parentComponent, Object message, String title, int messageType)

  ·showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon)

  各參數(shù)的含義如下:

  parentComponent - 確定在其中顯示對話框的 Frame;如果為 null 或者其不具有 Frame,則使用默認(rèn)的 Frame

  message - 要顯示的 Object

  title - 對話框的標(biāo)題字符串

  messageType - 要顯示的消息類型,int枚舉類型:ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE 或 PLAIN_MESSAGE,這5個(gè)值都是JOptionPane的靜態(tài)數(shù)據(jù)成員,可直接使用JOptionPane加“.”的方式使用,5個(gè)消息類型的顯示效果如下表

  icon - 要在對話框中顯示的圖標(biāo),該圖標(biāo)是用戶自定義的圖標(biāo),如果顯示該圖標(biāo),則不會(huì)再顯示messageType指定的消息類型的系統(tǒng)圖標(biāo)。一般不需要使用,除非用戶有特定需求。

  showMessageDialog方法無返回值,Message Dialog只是告知用戶某些信息,用戶除了點(diǎn)擊確定按鈕外不能與其進(jìn)行交互。

  對應(yīng)語句:

  JOptionPane.showMessageDialog(null, "這是一個(gè)消息對話框嗎?","對話框title",JOptionPane.QUESTION_MESSAGE,null);

  2.ConfirmDialog

  Confirm Dialog稱為確認(rèn)對話框,這類對話框通常會(huì)詢問用戶一個(gè)問題,要求用戶作出YES/NO的回答。可以使用showConfirmDialog靜態(tài)方法來顯示一個(gè)Confirm Dialog,showConfirmDialog方法具有如下重載形式。

  showConfirmDialog(Component parentComponent, Object message)

  showConfirmDialog(Component parentComponent, Object message, String title, int optionType)

  showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType)

  showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon)

  showConfirmDialog方法中有1個(gè)參數(shù),其中5個(gè)與showMessageDialog的參數(shù)相同,含義也一樣,這里不再重復(fù)說明,showConfirmDialog方法中新增一個(gè)參數(shù)optionType,該參數(shù)的含義如下:

  optionType—指定可用于對話框的選項(xiàng)的 int:YES_NO_OPTION、YES_NO_CANCEL_OPTION 或 OK_CANCEL_OPTION,具體的顯示效果見下表

  showConfirmDialog的返回值為int類型。其中YES,OK=0;NO=1;CANCEL=2;CLOSED=-1(用戶直接點(diǎn)擊關(guān)閉按鈕關(guān)閉對話框)。通過對返回值的判斷,可以做到與用戶之間的交互(如用戶是按下了確定按鈕 還是取消按鈕,根據(jù)按下按鈕的不同做不同的處理)

  對應(yīng)語句:JOptionPane.showConfirmDialog(null, "你確認(rèn)這是一個(gè)確認(rèn)對話框嗎?","對話框title",JOptionPane.YES_NO_OPTION);

  3.Input Dialog

  Input Dialog稱為輸入對話框,這類對話框可以讓用戶輸入相關(guān)的信息,當(dāng)用戶完成輸入并按下確定按鈕后,系統(tǒng)會(huì)得到用戶所輸入的信息。輸入對話框不見可以讓用戶自行輸入數(shù)據(jù),也可以提供ComboBox組件讓用戶選擇相關(guān)信息,避免用戶輸入錯(cuò)誤?梢允褂胹howInputDialog靜態(tài)方法來顯示一個(gè)Input Dialog,showInputDialog方法具有如下重載形式。

  showInputDialog(Object message)

  showInputDialog(Object message, Object initialSelectionValue)

  showInputDialog(Component parentComponent, Object message)

  showInputDialog(Component parentComponent,Object message, Object initialSelectionValue)

  showInputDialog(Component parentComponent, Object message, String title, int messageType)

  showInputDialog(Component parentComponent, Object message, String title, int messageType, Icon icon, Object[] selectionValues, Object initialSelectionValue)

  showInputDialog方法中有7個(gè)參數(shù),其中5個(gè)與showMessageDialog的參數(shù)相同,含義也一樣,這里不再重復(fù)說明,showInputDialog方法中新增兩個(gè)參數(shù),selectionValues 和initialSelectionValue,含義如下:

  selectionValues—用戶可能的選擇值,以數(shù)組方式賦值,顯示形式為ComboBox。

  initialSelectionValue—對話框初始化時(shí)輸入框中的顯示值。

  showInputDialog方法的返回值有兩種:String類型和Object類型,當(dāng)用戶按下確定按鈕時(shí)會(huì)返回用戶輸入(或選擇)的信息,若按下取消按鈕則會(huì)返回null。

  對應(yīng)語句:

  JOptionPane.showInputDialog(null ,"請選擇城市:","對話框title", JOptionPane.INFORMATION_MESSAGE,null,new String[]{"北京","上海","廣州","天津 "},"北京");

  4.Option Dialog

  Option Dialog稱為選擇對話框,這類對話框可以讓用戶自己定義對話框的類型。它可以根據(jù)需要改變按鈕上的文字,而不是系統(tǒng)默認(rèn)的“確定”、“取消”、“是”、“否”等?梢允褂胹howOptionDialog靜態(tài)方法來顯示一個(gè)Option Dialog,該靜態(tài)方法無重載方法,具體形式如下:

  showOptionDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon, Object[] options, Object initialValue)

  該方法提供了1個(gè)參數(shù),其中7個(gè)參數(shù)與showInputDialog的參數(shù)完全相同,不再重復(fù)說明,新增一個(gè)參數(shù)options,其含義如下:

  options—按鈕上的文字,系統(tǒng)會(huì)根據(jù)options的長度n創(chuàng)建n個(gè)按鈕。

  showOptionDialog的返回值類型為int,當(dāng)點(diǎn)擊由options數(shù)組確定的按鈕時(shí),其值為options數(shù)組的下標(biāo)值,當(dāng)點(diǎn)擊關(guān)閉按鈕時(shí)其值為-1。

  對應(yīng)語句:

  JOptionPane.showOptionDialog(null, "選項(xiàng)對話框", "對話框title", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null,new String[]{"自定義1","自定義2","自定義3"},"自定義1");

  當(dāng)點(diǎn)擊“自定義1”按鈕時(shí),返回值為0,“自定義2”按鈕時(shí),返回值為1,“自定義2”按鈕時(shí),返回值為2,點(diǎn)擊取消按鈕時(shí)返回值為-1

  下面的例子綜合了JOptionPane的四種按鈕,并對各個(gè)按鈕的單擊事件做了處理。

  [例1-11]

  import java.awt.*;

  import java.awt.event.*;

  import javax.swing.*;

  class JOptionPaneTest extends JFrame{

  private JButton btn1 = new JButton("消息對話框");

  private JButton btn2 = new JButton("確認(rèn)對話框");

  private JButton btn3 = new JButton("輸入對話框");

  private JButton btn4 = new JButton("選項(xiàng)對話框");

  public JOptionPaneTest(String title){

  super(title);

  Container contentPane = this.getContentPane();

  contentPane.setLayout(new FlowLayout(5));

  //添加按鈕

  contentPane.add(btn1);

  contentPane.add(btn2);

  contentPane.add(btn3);

  contentPane.add(btn4);

  pack();

  setVisible(true);

  //注冊偷聽

  btn1.addActionListener(new MyActionListener());

  btn2.addActionListener(new MyActionListener());

  btn3.addActionListener(new MyActionListener());

  btn4.addActionListener(new MyActionListener());

  }

  //偷聽

  private class MyActionListener implements ActionListener{

  public void actionPerformed(ActionEvent e) {

  int n;//用于接收對話框的int類型返回值

  String str = new String();//用于接收對話框的String類型返回值

  //處理"消息對話框"按鈕

  if(e.getActionCommand().equals("消息對話框")){

  //顯示一個(gè)MessageDialog

  JOptionPane.showMessageDialog(null, "這是一個(gè)消息對話框嗎?");

  }

  if(e.getActionCommand().equals("確認(rèn)對話框")){

  //顯示一個(gè)ConfirmDialog,并用變量n接收其返回值

  n=JOptionPane.showConfirmDialog(null, "你確認(rèn)這是一個(gè)確認(rèn)對話框嗎?","對話框title",JOptionPane.YES_NO_OPTION);

  //判斷用戶點(diǎn)擊了哪個(gè)按鈕

  switch(n){

  case 0:

  JOptionPane.showMessageDialog(null, "您點(diǎn)擊了按鈕——是");

  break;

  case 1:

  JOptionPane.showMessageDialog(null, "您點(diǎn)擊了按鈕——否");

  break;

  case -1:

  JOptionPane.showMessageDialog(null, "您點(diǎn)擊了退出按鈕");

  break;

  }

  }

  if(e.getActionCommand().equals("輸入對話框")){

  //顯示一個(gè)InputDialog,并用變量str接收其返回值

  str =(String)JOptionPane.showInputDialog(null ,"請選擇城市:","對話框title",JOptionPane.INFORMATION_MESSAGE,null,new String[]{"北京","上海","廣州"},"北京");

  //判斷用戶選擇了ComboBox的哪項(xiàng)

  if(str != null){

  JOptionPane.showMessageDialog(null, "您選擇了"+str);

  }

  }

  if(e.getActionCommand().equals("選項(xiàng)對話框")){

  //顯示一個(gè)OptionDialog,并用變量n接收其返回值

  n = JOptionPane.showOptionDialog(null, "選項(xiàng)對話框", "對話框title", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null,new String[]{"自定義1","自定義2","自定義3"},"自定義1");

  //判斷用戶點(diǎn)擊了 哪個(gè)按鈕

  switch(n){

  case 0:

  JOptionPane.showMessageDialog(null, "您點(diǎn)擊了按鈕——自定義1");

  break;

  case 1:

  JOptionPane.showMessageDialog(null, "您點(diǎn)擊了按鈕——自定義2");

  break;

  case 2:

  JOptionPane.showMessageDialog(null, "您點(diǎn)擊了按鈕——自定義3");

  break;

  case -1:

  JOptionPane.showMessageDialog(null, "您點(diǎn)擊了退出按鈕");

  break;

  }

  }

  }

  }

  }

  public class Test1_11 {

  public static void main(String[] args) {

  new JOptionPaneTest("JOptionPane四種對話框形式測試");

  }

  }

  該程序是對四種按鈕的各個(gè)單擊事件進(jìn)行處理,所以運(yùn)行結(jié)果較多,這里不再一一列舉,請讀者自行運(yùn)行程序查看結(jié)果。

  1.1.2 JFileChooser 文件對話框

  JFileChooser表示文件對話框,常用來彈出“打開”、“保存”后其他自定標(biāo)題的文件對話框,并可愛對話框中進(jìn)行文件選擇。

  JFileChooser類提供了1個(gè)構(gòu)造方法用于創(chuàng)建JFileChooser類對象,常用的有3個(gè),詳見下表。

  表1-11 JFileChooser常用構(gòu)造方法

  構(gòu)造方法說明

  JFileChooser()構(gòu)造一個(gè)指向用戶默認(rèn)目錄的 JFileChooser。

  JFileChooser(String currentDirectoryPath)構(gòu)造一個(gè)使用給定路徑的 JFileChooser。

  JFileChooser(File currentDirectory)使用給定的 File 作為路徑來構(gòu)造一個(gè) JFileChooser

  此默認(rèn)目錄取決于操作系統(tǒng)。在 Windows 上通常是“我的文檔”,在 Unix 上是用戶的主目錄。

  無參構(gòu)造方法創(chuàng)建的JFileChooser類對象,其默認(rèn)目錄默認(rèn)目錄取決于操作系統(tǒng)。在 Windows 上通常是“我的文檔”,在 Unix 上是用戶的主目錄。

  另外兩個(gè)構(gòu)造方法,雖然傳遞參數(shù)的類型不同,但均指某個(gè)目錄。若參數(shù)傳遞時(shí)傳入“null”,則相當(dāng)于使用“JFileChooser()”創(chuàng)建JFileChooser類對象。

  JFileChooser類中常用方法如下表。

  表1-17 JFileChooser常用方法

  成員方法說明

  int showOpenDialog(Component parent)彈出一個(gè) "Open File" 文件選擇器對話框

  int showSaveDialog(Component parent)

  彈出一個(gè) "Save File" 文件選擇器對話框

  showDialog(Component parent,

  String approveButtonText)

  彈出具有自定義 approve 按鈕的自定義文件選擇器對話框

  File getSelectedFile()返回選中的文件

  對于showOpenDialog等顯示對話框的方法將返回一個(gè)整數(shù),可能取值情況是:

  JFileChooser.CANCEL_OPTION —按取消鍵退出對話框,無文件選取

  JFileChooser.APPROVE_OPTION —正常選取文件

  JFileChooser.ERROR_OPTION —發(fā)生錯(cuò)誤或者該對話框已被解除而退出對話框

  所以在文件選取對話框交互結(jié)束后,應(yīng)進(jìn)行判斷,是否從對話框中選取了文件,然后根據(jù)返回值情況進(jìn)行處理。

  例1-12演示了JFileChooser類的showOpenDialog方法的使用,JFileChooser一般用于可視化的文件讀取及保存,本例只是將讀取的文件名顯示出來,對于進(jìn)一步的文件讀取及保存工作讀者可在學(xué)習(xí)了I/O流后完善本實(shí)例。

  [例1-12]

  import java.awt.*;

  import javax.swing.*;

  import java.awt.event.*;

  class JFileChooserTest extends JFrame{

  private JLabel label = new JLabel("所選文件路徑:");

  private JTextField tfFileName = new JTextField(25);

  private JButton btnOpen = new JButton("瀏覽");

  public JFileChooserTest(String title){

  super(title);

  Container contentPane = this.getContentPane();

  contentPane.setLayout(new FlowLayout(5));

  contentPane.add(label);

  contentPane.add(tfFileName);

  contentPane.add(btnOpen);

  pack();

  setVisible(true);

  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  //監(jiān)聽btnOpen按鈕

  btnOpen.addActionListener(new MyActionListener());

  }

  //Action事件處理

  private class MyActionListener implements ActionListener{

  public void actionPerformed(ActionEvent arg0) {

  JFileChooser fc = new JFileChooser("D:javaPro");

  int val = fc.showOpenDialog(null);//文件打開對話框

  if(val==fc.APPROVE_OPTION){//正常選擇文件

  tfFileName.setText(fc.getSelectedFile().toString());

  }

  else{//未正常選擇文件,如選擇取消按鈕

  tfFileName.setText("未選取文件");

  }

  }

  }

  }

  public class Test1_12 {

  public static void main(String[] args) {

  new JFileChooserTest("JFileChooser測試");

  }

  }

  程序運(yùn)行結(jié)果。

【Java對話框?qū)W習(xí)教程】相關(guān)文章:

使用Java編寫GUI對話框教程講解04-30

Java的特點(diǎn)學(xué)習(xí)教程01-22

Java數(shù)組的基礎(chǔ)學(xué)習(xí)教程08-12

Java數(shù)組的基本學(xué)習(xí)教程03-01

設(shè)置Java對話框字體的方法06-23

如何設(shè)置Java對話框字體05-05

java教程之Java編程基礎(chǔ)04-18

java計(jì)算器綜合實(shí)例學(xué)習(xí)教程01-21

Java菜單和工具欄學(xué)習(xí)教程07-26