|
JDialog
JDialog扩展了java.awt.Dialog类,用来创建对话框,并且也区分模式对话框和非模式对话框;非模式对话框允许用户同时再对话框和程序的主窗口输入信息,而模式对话框在处理完之前不能与程序的主窗口进行交互。
创建一个模式对话框的程序例子:
Frame myFrame=new Frame();
JDialog modalDialog=new JDialog(myFrame,true);
若直接使用JDialog,可以使用add方法向其中添加控件
常用构造器:
JDialog(Frame owner),没有标题但是指定Frame作为其所有者的无模式对话框,若owner为null,则将一个共享的隐藏的窗体设为其所有者
JDialog(Frame owner,boolean modal),没标题,指定所有者和指定模式的对话框
JDialog(Frame owner,String title),指定标题和所有者的无模式对话框
JDialog(Frame owner,String title,boolean modal),指定标题,所有者,模式的对话框
JDialog(Dialog owner),没有标题,以指定的Dialog作为所有者的无模式对话框
JDialog(Dialog owner,String title,boolean modal),指定标题和所有者对话框及模式的对话框
常用操作:
isModal(),是否是模式对话框
setModal(boolean b),设置模式对话框与否
getTitle(),获取对话框标题
setTitle(String title),设置标题
另外,JDialog还继承了java.awt.Component,java.awt.Container,java.awt.Window类的所有方法。
但是,大多数时候并不使用JDialog创建对话框,而是使用系统提供的几种有特殊功能的对话框,如下:
JOptionPane
JOptionPane扩展了javax.swing.JComponent,是swing提供的用于手机用户信息的简单对话框。使用它可以定义并创建不同类型的对话框,因为它提供了对使用标准对话框,图标,指定对话框标题和文本以及自定义按钮文本的支持。
JOptionPane是一个用来建立复杂JDialog的实用工具类,其提供了一个建立普通弹出式模式对话框的简单方法,虽然大大减轻了编写代码的数量,但是无论用户正在做什么,都会强迫用户停止正在进行的操作并对弹出式对话框作出响应。
常用构造器
JOptionPane(Object message),显示指定消息,使用UI提供的普通消息类型和默认选项
JOptionPane(Object message,int messageType),指定内容和消息选项
JOptionPane(Object message,int messageType,int optionType),指定内容,消息类型和选项
JOptionPane(Object message,int messageType,int optionType,Icon icon),指定消息,消息类型,选项和图标
JOptionPane(Object message,int messageType,int optionType,Icon icon,Object[] options),指定消息,消息类型,图标,选项。最初没有任何选项
在创建JOptionPane对象时用到了JOptionPane的一些属性,如消息类型(ERROR_MESSAGE,INFORMATION_MESSAGE,PLAIN_MESSAGE,QUESTION_MESSAGE,WARNING_MESSAGE),选项类型(DEFAULT_OPTION(OK按钮),OK_CANCEL_OPTION,YES_NO_CANCEL_OPTION,YES_NO_OPTION),选择选项(CANCEL_OPTION,CLOSED_OPTION(按下no按钮),NO_OPTION,OK_OPTION,YES_OPTION,UNINITIALIZED_VALUE),并且为这些选项提供了存取方法
JOptionPane类还提供了一些用来创建特殊对话框的静态方法,即对象工厂。使用JOptionPane中提供的show**Dialog静态方法,可以用来创建如下四种不同的对话框:
MessageDialog,向用户显示消息,其中只包含一个按钮
ConfirmDialog,显示任意数据,可能包含用户可以从中选择的按钮
OptionDialog,要求用户确认某些信息,包括yes,no,ok,cancel这样的按钮
InputDialog,为用户提供了输入数据的一些方法,包括ok和cancel两个按钮
JOptionPane不仅提供了show**Dialog方法,而且还为创建每种对话框都提供了许多中重载的方法
输入对话框使用实例:
import java.awt.*; import java.awt.event.*; import javax.swing.*;
/** * * @author babycat */ public class DemoInputDialog extends JFrame{ JLabel jLabelMessage; /** Creates a new instance of DemoInputDialog */ public DemoInputDialog() { jLabelMessage=new JLabel(); jLabelMessage.setHorizontalAlignment(SwingConstants.CENTER); jLabelMessage.setFont(new Font("宋体",Font.PLAIN,28)); this.add(jLabelMessage); this.setBounds(150,150,400,200); this.setTitle("inputdialog example"); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); String title=new String("input dialog"); String message=new String("please input text here"); int messageType=JOptionPane.INFORMATION_MESSAGE; String inputMessage=(String)JOptionPane.showInputDialog(this,message,title,messageType); if(inputMessage!=null&&!inputMessage.equals("")){ this.jLabelMessage.setText("you input"+inputMessage); }else{ this.jLabelMessage.setText("you input nothing"); } } public static void main(String[] args){ new DemoInputDialog(); } }
|