wing中提供了JOptionPane类来实现类似Windows平台下的MessageBox的功能,同样在Java中也有,利用 JOptionPane类中的各个static方法来生成各种标准的对话框,实现显示出信息、提出问题、警告、用户输入参数等功能。这些对话框都是模式对话框。
ConfirmDialog --- 确认对话框,提出问题,然后由用户自己来确认(按"Yes"或"No"按钮)
InputDialog --- 提示输入文本
MessageDialog --- 显示信息
OptionDialog -- 组合其它三个对话框类型。
这四个对话框可以采用showXXXDialog()来显示,如showConfirmDialog()显示确认对话框、 showInputDialog()显示输入文本对话框、showMessageDialog()显示信息对话框、showOptionDialog() 显示选择性的对话框。它们所使用的参数说明如下:
① ParentComponent:指示对话框的父窗口对象,一般为当前窗口。也可以为null即采用缺省的Frame作为父窗口,此时对话框将设置在屏幕的正中。
② message:指示要在对话框内显示的描述性的文字
③ String title:标题条文字串。
④ Component:在对话框内要显示的组件(如按钮)
⑤ Icon:在对话框内要显示的图标
⑥ messageType:一般可以为如下的值ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE、PLAIN_MESSAGE、
⑦ optionType:它决定在对话框的底部所要显示的按钮选项。一般可以为DEFAULT_OPTION、YES_NO_OPTION、YES_NO_CANCEL_OPTION、OK_CANCEL_OPTION。
使用实例:
(1) 显示MessageDialog
JOptionPane.showMessageDialog(null, "在对话框内显示的描述性的文字", "标题条文字串", JOptionPane.ERROR_MESSAGE);
(2) 显示ConfirmDialog
JOptionPane.showConfirmDialog(null, "choose one", "choose one", JOptionPane.YES_NO_OPTION);
(3) 显示OptionDialog:该种对话框可以由用户自己来设置各个按钮的个数并返回用户点击各个按钮的序号(从0开始计数)
Object[] options = {"确定","取消","帮助"};
int response=JOptionPane.showOptionDialog(this, "这是个选项对话框,用户可以选择自己的按钮的个数", "选项对话框标题",JOptionPane.YES_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
if(response==0)
{
this.setTitle("您按下了第OK按钮 ");
}
else if(response==1)
{
this.setTitle("您按下了第Cancel按钮 ");
}
else if(response==2)
{
this.setTitle("您按下了第Help按钮 ");
}
(4) 显示InputDialog 以便让用户进行输入
String inputValue = JOptionPane.showInputDialog("Please input a value");
(5) 显示InputDialog 以便让用户进行选择地输入
Object[] possibleValues = { "First", "Second", "Third" }; //用户的选择项目
Object selectedValue = JOptionPane.showInputDialog(null, "Choose one", "Input",JOptionPane.INFORMATION_MESSAGE, null, possibleValues, possibleValues[0]);
setTitle("您按下了"+(String)selectedValue+"项目");
用例代码:
package www.bdqx.mainframe; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JOptionPane; public class MainFrame extends JFrame implements ActionListener{ /** * @param args */ private JPanel jpBtns = new JPanel(); private JTextArea jTa = new JTextArea(); private JScrollPane jSp = new JScrollPane(jTa); private JButton MessageDialog; private JButton ConfirmDialog; private JButton InputDialog; private JButton OptionDialog; private JButton ListDialog; public MainFrame() { this.setSize(700, 439); this.setTitle("Common Dialog Test"); jpBtns.setLayout(null); MessageDialog = new JButton("MessageDialog"); MessageDialog.addActionListener(this); ConfirmDialog = new JButton("ConfirmDialog"); ConfirmDialog.addActionListener(this); InputDialog = new JButton("InputDialog"); InputDialog.addActionListener(this); OptionDialog = new JButton("OptionDialog"); OptionDialog.addActionListener(this); ListDialog = new JButton("ListDialog"); ListDialog.addActionListener(this); this.add(jpBtns); this.add(jSp); jpBtns.add(MessageDialog); jpBtns.add(ConfirmDialog); jpBtns.add(InputDialog); jpBtns.add(OptionDialog); jpBtns.add(ListDialog); jpBtns.setBounds(500, 0, 200, 400); jSp.setBounds(0, 5, 500, 400); MessageDialog.setBounds(45, 50, 125, 30); ConfirmDialog.setBounds(45, 115, 125, 30); InputDialog.setBounds(45, 180, 125, 30); OptionDialog.setBounds(45, 245, 125, 30); ListDialog.setBounds(45, 310, 125, 30); } public static void main(String[] args) { // TODO Auto-generated method stub //MainFrame.instance = new MainFrame(); MainFrame ConFigToolFrame = new MainFrame(); //使框架居中显示 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int screenWidth = screenSize.width; int screenHeight = screenSize.height; Dimension frameSize = ConFigToolFrame.getSize(); int x = (screenWidth - frameSize.width) / 2; int y = (screenHeight - frameSize.height) / 2; //显示 ConFigToolFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ConFigToolFrame.setLocation(x, y); ConFigToolFrame.setVisible(true); ConFigToolFrame.setResizable(false); } public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); jTa.setText(""); if (e.getSource() instanceof JButton) { if ("MessageDialog".equals(actionCommand)) { JOptionPane.showMessageDialog(null, "在对话框内显示的描述性的文字", "标题条文字串", JOptionPane.ERROR_MESSAGE); } if ("ConfirmDialog".equals(actionCommand)) { JOptionPane.showConfirmDialog(null, "choose one", "choose one", JOptionPane.YES_NO_OPTION); } if ("InputDialog".equals(actionCommand)) { String inputValue = JOptionPane.showInputDialog("Please input a value"); this.setTitle(inputValue); } if ("OptionDialog".equals(actionCommand)) { Object[] options = {"确定","取消","帮助"}; int response=JOptionPane.showOptionDialog(this, "这是个选项对话框,用户可以选择自己的按钮的个数", "选项对话框标题",JOptionPane.YES_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]); if(response==0) { this.setTitle("您按下了第OK按钮 "); } else if(response==1) { this.setTitle("您按下了第Cancel按钮 "); } else if(response==2) { this.setTitle("您按下了第Help按钮 "); } } if ("ListDialog".equals(actionCommand)) { Object[] possibleValues = { "First", "Second", "Third" }; //用户的选择项目 Object selectedValue = JOptionPane.showInputDialog(null, "Choose one", "Input",JOptionPane.INFORMATION_MESSAGE, null, possibleValues, possibleValues[0]); setTitle("您按下了"+(String)selectedValue+"项目"); } } } }
可运行程序: