|
创建简单对话框不用Dialog类,而用类JOptionPane的静态方法即可。因此只要提供对话框需要的参数就行。简单对话框有4种,方法名的形式都是showXXXDialog,分别叙述如下。 消息框showMessageDialog的用法: JOptionPane.showMessageDialog(所属Frame,消息本身,对话框标题,图形标志常量),例如 JOptionPane.showMessageDialog(this,"这是消息框message!", "Message Dlg",JOptionPane.INFORMATION_MESSAGE); 确认框showConfirmDialog的用法: JOptionPane.showConfirmDialog(所属Frame,要求确认的内容,对话框标题,yes-no-cancel按钮,图形标志常量),例如 JOptionPane.showConfirmDialog(this,"这是确认框confirm!","Confirm Dlg", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE); 选项框showOptionDialog的用法: JOptionPane.showOptionDialog(所属Frame,提示语,对话框标题,使用默认选项,警告标志常量,null,选项数组,默认选项),例如 JOptionPane.showOptionDialog(this,"请选择一个:", "Option Dlg",JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,null, options, options[1]); 输入框showInputDialog的用法: String JOptionPane.showInputDialog(输入提示语),返回输入的字符串,例如: String inputValue = JOptionPane.showInputDialog("这是输入框");
例12 本例程演示创建和使用简单对话框的方法。在菜单中选择一个就显示一个对话框。 程序运行后的界面如图12所示。


图12
程序的全部代码如下:
/// // OptionPane.java import java.awt.*; import java.awt.event.*; import javax.swing.*;
class MyFrame extends JFrame implements ActionListener{ public MyFrame(){ setTitle("简单对话框4种"); setSize(300, 200); setLocation(100,100); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0);} }); myPanel = new MyPanel(); getContentPane().add(myPanel, "Center"); //创建一个菜单,含4个菜单项 JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu dlgMenu = new JMenu("ShowDlg"); dlgMenu.setMnemonic('S'); JMenuItem dlgItem = new JMenuItem("MessageDlg", 'M'); dlgMenu.add(dlgItem); dlgItem.addActionListener(this); dlgItem = new JMenuItem("ConfirmDlg", 'C'); dlgMenu.add(dlgItem); dlgItem.addActionListener(this); dlgItem = new JMenuItem("OptionDlg", 'O'); dlgMenu.add(dlgItem); dlgItem.addActionListener(this); dlgItem = new JMenuItem("InputDlg", 'I'); dlgMenu.add(dlgItem); dlgItem.addActionListener(this); menuBar.add(dlgMenu); } //监听相应的菜单项,弹出相应的对话框 public void actionPerformed(ActionEvent evt){ if (evt.getSource() instanceof JMenuItem){ String itemName = evt.getActionCommand(); if (itemName.equals("MessageDlg")){ JOptionPane.showMessageDialog(this,"这是消息框message!", "Message Dlg",JOptionPane.INFORMATION_MESSAGE); } else if (itemName.equals("ConfirmDlg")){ JOptionPane.showConfirmDialog(this,"这是确认框confirm!","Confirm Dlg", J OptionPane.YES_NO_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE); } else if (itemName.equals("OptionDlg")){ Object[] options = { "China", "USA", "Japan" }; JOptionPane.showOptionDialog(this,"请选择一个国家", "Option Dlg", JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE,null, options, options[1]); } else if (itemName.equals("InputDlg")){ String inputValue = JOptionPane.showInputDialog("这是输入框"); myPanel.setMsg(inputValue);Option } } } private MyPanel myPanel; } class MyPanel extends JPanel{ public MyPanel(){ szShowMsg = ""; } public void setMsg(String szMsg) { szShowMsg = szMsg; repaint(); } public void paintComponent(Graphics g){ super.paintComponent(g); g.drawString(szShowMsg, 20, 20); } private String szShowMsg; } public class OptionPane{ public static void main(String[] args){ JFrame frame = new MyFrame(); frame.setVisible(true); } } ///
简要说明
程序一开始建立窗体和菜单,关键在于活动处理actionPerformed方法的实现,它根据监听到的菜单项的名称选择相应的对话框。
文件对话框FileDialog
使用文件对话框FileDialog可以方便地创建打开文件和保存文件的对话框,它的构建器语法如下: FileDialog(Frame f, String title[,FileDialog.SAVE]) 第三个参数缺省时为“打开文件”对话框。下面的例程中用到了如下三种方法: d.setFile("*.java"); //设置默认的文件名(用通配符可设置文件类型) d.setDirectory("."); //设置默认的文件夹 d.show(); //弹出对话框
例13 文件对话框用法示例。程序运行后如图13所示。
图13
程序的代码如下:
/// // FileDialogNew.java import java.awt.*; import java.awt.event.*;
public class FileDialogNew extends Frame { TextField filename = new TextField(); TextField directory = new TextField(); Button open = new Button("Open"); Button save = new Button("Save"); public FileDialogNew() { setTitle("File Dialog Test"); Panel p = new Panel(); p.setLayout(new FlowLayout()); open.addActionListener(new OpenL()); p.add(open); save.addActionListener(new SaveL()); p.add(save); add(p, BorderLayout.SOUTH); directory.setEditable(false); filename.setEditable(false); p = new Panel(); p.setLayout(new GridLayout(2,1)); p.add(filename); p.add(directory); add(p, BorderLayout.NORTH); } class OpenL implements ActionListener { public void actionPerformed(ActionEvent e) { // Two arguments, defaults to open file: FileDialog d = new FileDialog(FileDialogNew.this,"打开文件"); d.setFile("*.java"); d.setDirectory("."); // Current directory d.show(); String yourFile = "*.*"; if((yourFile = d.getFile()) != null) { filename.setText(yourFile); directory.setText(d.getDirectory()); } else { filename.setText("You pressed cancel"); directory.setText(""); } } } class SaveL implements ActionListener { public void actionPerformed(ActionEvent e) { FileDialog d = new FileDialog( FileDialogNew.this,"保存文件",FileDialog.SAVE); d.setFile("*.java"); d.setDirectory("."); d.show(); String saveFile; if((saveFile = d.getFile()) != null) { filename.setText(saveFile); directory.setText(d.getDirectory()); } else { filename.setText("You pressed cancel"); directory.setText(""); } } } public static void main(String[] args) { Frame f = new FileDialogNew(); f.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.setSize(250,110); f.setVisible(true); } } ///
简要说明
-
按下某个按钮后弹出的对话框就是我们熟悉的Windows文件对话框,这说明类FileDialog调用了Windows的API。
-
创建文件对话框的两个类是FileDialogNew 的内部类,所以在对话框构建器中用FileDialogNew.this,意思是对话框属于OpenL/SaveL这个类,它是FileDialogNew的内部类,而后者是继承自Frame的,符合构建器的参数要求。
-
对话框关闭后,选择的文件名和路径在文本框中显示出来。
一般对话框
一般对话框用类Dialog创建,得到的只是一个空的对话框窗体,其内容可由您任意创造。
|