程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 應用Java編寫GUI對話框的教程

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

編輯:關於JAVA

應用Java編寫GUI對話框的教程。本站提示廣大學習愛好者:(應用Java編寫GUI對話框的教程)文章只能為提供參考,不一定能成為您想要的結果。以下是應用Java編寫GUI對話框的教程正文


對話框是為了人機對話進程供給交互形式的對象。運用法式經由過程對話框,或給用戶供給信息,或從用戶取得信息。對話框是一個暫時窗口,可以在個中放置用於獲得用戶輸出的控件。在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決議對話框能否強迫或非強迫型。
  4. 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);


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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved