java实用教程——组件及事件处理——对话框(消息对话框,输入对话框,确认对话框)
消息對話框:(這個對話框提供一些信息)
無模式:可多線程的執行
有模式:用戶必須處理這個一個對話框。必須解決這個問題后才可以繼續相處下去
對話框分為無模式和有模式兩種。如果一個對話框 是有模式的對話框,那么當這個對話框處于激活狀態時,只讓程序響應對話框內部的事件,而且將阻塞其他線程的執行,用戶不能再激活對話框所在程序中的其他窗口,直到該對話框消失不可見。無模式對話框處于激活狀態時,能再激活其他窗口,也不阻塞其他線程的執行。
進行一個重要的操作動作之前,通過彈出一個有模式的對話框表明操作的重要性。
public static void showMessageDialog
(Component parentComponent,String message,String title,int
messageType)
創建一個消息對話框,其中參數parentComponent指定對話框可見時的位置如果parentComponent為null,對話框會在屏幕的正前方顯示出來;如果組件parentComponent不空,對話框在組件prenCompoment的正前面居中顯示。message指定對話框上顯示的消息,title指定對話框的標題,messageType取值是JOptionPane中的類常量:
INFORMATIONMESSAGE
WARNINGMESSAGE
ERROR MESSAGE
OUESTIONMESSAGE
PLAIN MESSAGE
這些值可以給出對話框的外觀,例如,取值JOptionPane. WARNING MESSAGE時,對一個明顯的“!”符號。
在下面的例子中,要求用戶在文本框中只能輸入英文字母,當輸入非英文字母時彈出對話框。
public class Example9_16 {public static void main(String args[]) {WindowMess win=new WindowMess();win.setTitle("帶消息對話框的窗口"); win.setBounds(80,90,350,300);}} package 例題;import java.awt.event.*; import java.awt.*; import javax.swing.*; public class WindowMess extends JFrame implements ActionListener {/*** */private static final long serialVersionUID = -2662134241642973046L;JTextField inputEnglish;JTextArea show;String regex = "[a-zA-Z]+"; WindowMess() {inputEnglish=new JTextField(10);inputEnglish.addActionListener(this);show=new JTextArea(10,10); //add(inputEnglish,BorderLayout.NORTH);// add(show,BorderLayout.CENTER); this.setLayout(new FlowLayout());add(inputEnglish);show.setLineWrap(true); //設置自動換行 add(new JScrollPane(show));setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e) { if(e.getSource()==inputEnglish) {String str=inputEnglish.getText();if(str.matches(regex)) {show.append(str+",");}else { //彈出消息對話框。JOptionPane.showMessageDialog(this,"輸入了非法字符","消息對話框",JOptionPane.ERROR_MESSAGE);inputEnglish.setText(null); } }} }輸入對話框:(彈出對話框可以輸入數據)
輸入對話框有模式
輸入對話框含有供用戶輸入文本的文本框、一個確認和取消按鈕,是有模式對話框。當輸入對話框可見時,要求用戶輸入一個字符串。
JOptionPane 類的靜態方法
第9章組件及事件處理
public static String showInputDialog (Component parentComponent,
Object message,
String title,
int messageType)
可以創建一個 輸入對話框,其中參數parentComponent指定輸入對話框所依賴的組件,輸入對話框會在該組件的正前方顯示出來,如果parentComponent為null,輸入對話框會在屏幕的正前方顯示出來,參數message指定對話框上的提示信息,參數title 指定對話框上的標題,參數messageType可取的有效值是JOptionPane中的類常量:
●ERROR MESSAGE
●INFORMATION MESSAGE
●WARNING MESSAGE
●QUESTION_ MESSAGE
●PLAIN MESSAGE
無模式
這些位可以給出對話框的外觀。如取值JoiPane WARNIN MSSE時對話框的外觀上會有個明顯的“1” 符號。
單擊輸入對話框上的確試按鈕、取消按鈕或關團圖標,都可以使輸入對話框消失不可見,如果單擊的是確認按鈕,輸入對話框將這返回用戶在對話框的文本輸入對話框框中輸入的字符事,否則返回null。輸入數字,用空格分隔
在下面的例子17中,用戶單擊按安鈕彈出輸入對話框,用戶如果單擊輸入對話框上的確定,在輸入對話框中輸入若干個數字程序中輸入對話框的運行效果
public class Example9_17 {public static void main(String args[]) {WindowInput win=new WindowInput();win.setTitle("帶輸入對話框的窗口"); win.setBounds(80,90,600,400);}} package 例題1;import java.awt.event.*; import java.awt.*; import javax.swing.*; import java.util.*; public class WindowInput extends JFrame implements ActionListener {/*** */private static final long serialVersionUID = 5060348990465300142L;JTextArea showResult;JButton openInput;WindowInput() {openInput=new JButton("彈出輸入對話框");showResult=new JTextArea(10,20);Font f =new Font("宋體",Font.PLAIN,23);showResult.setFont(f);this.setLayout(new FlowLayout());//設置為流式布局add(openInput);showResult.setLineWrap(true); //設置自動換行 add(new JScrollPane(showResult));openInput.addActionListener(this); setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e) { String str=JOptionPane.showInputDialog(this,"輸入數字,用空格分隔","輸入對話框",JOptionPane.PLAIN_MESSAGE);if(str!=null) {Scanner scanner = new Scanner(str);double sum=0;int k=0;while(scanner.hasNext()){try{double number=scanner.nextDouble();if(k==0)showResult.append(""+number);elseshowResult.append("+"+number);sum=sum+number;k++;} catch(InputMismatchException exp){String t=scanner.next();}}showResult.append("="+sum+"\n"); }} }確認對話框(彈出的對話框確認與否)
確認對話框是有模式對話框,JOptionPane 類的靜態方法
public static int showConfi rmDialog (Component parent Component,
Object message,
String title,
int optionType)
得到一個確認對話框,其中參數parentComponent指定確認對話框可見時的位置,確認對話框在參數parentComponent指定的組件的正前方顯示出來,
如果prnrCompone為nl確認對話框會在屏幕的正前方顯示出來。messge 指定對話框上顯示的消息,tile 指定確認對話框的標題,opionTrpe 可取的有效值是JptinPane中的類常量:
●YES_NO_OPTION
●YES _NO _CANCEL OPTION
●OK_ CANCEL _OPTION
這些值可以給出對話框的外觀,例如,取值YES _NO CANCEL OPTION時,確認對話框的外觀上有yes和no兩個按鈕。
當確認對話框消失后,JOptionPane.showConfirmDialog方法會返回下列整數值之一
●JOptionPane.YES OPTION
●JOptionPane.NO OPTION
●JOptionPane.CANCEL OPTION
●JOptionPane.OK OPTION
●JOptionPane.CLOSED OPTION
返回的具體值依賴于用戶所單擊的對話框上的按鈕和對話框上的關閉圖標。
在下面的例子18 中,用戶在文本框中輸入賬戶名稱,按回車后,將彈出一個確認對話框。如果單擊確認對話框上的“是()"按鈕,就將名字放入文本區。程序中確認對話框的運行效果如圖9.18所示。
public class Example9_18 {public static void main(String args[]) {WindowEnter win=new WindowEnter();win.setTitle("帶確認對話框的窗口"); win.setBounds(80,90,500,300);}} import java.awt.event.*; import java.awt.*; import javax.swing.*; public class WindowEnter extends JFrame implements ActionListener {/*** */private static final long serialVersionUID = -7457112890172707618L;JTextField inputName; JTextArea save;WindowEnter(){inputName=new JTextField(22);inputName.addActionListener(this);save=new JTextArea(10,25);this.setLayout(new FlowLayout());add(inputName);save.setLineWrap(true); //設置自動換行 add(new JScrollPane(save));setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e) {String s=inputName.getText();int n=JOptionPane.showConfirmDialog(this,"確認是否正確","確認對話框",JOptionPane.YES_NO_OPTION );if(n==JOptionPane.YES_OPTION) { save.append("\n"+s);} else if(n==JOptionPane.NO_OPTION) { inputName.setText(null);}} } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java实用教程——组件及事件处理——对话框(消息对话框,输入对话框,确认对话框)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java实用教程——组件及事件处理——D
- 下一篇: java实用教程——组件及事件处理——对