*设为首页
*加入收藏
热门关键字: JAVA
>>当前位置:Java大本营>Applet与Swing>文章内容
JavaSwing中的对话框
作者: 发布时间:2007-12-24 21:54:05

创建简单对话框不用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创建,得到的只是一个空的对话框窗体,其内容可由您任意创造。


· SWT树节点上弹出菜单的实现 (02-05)
·基于 JSF+Spring + JPA 构建敏捷的Web(02-01)
·在SWING 的 JFileChooser中俘获返回的(01-20)
·SWT中设置TableViewer和TreeViewer为双(01-19)
·Spring之特殊字符转义和方法入参检测工(01-16)
·spring2.5 + hibernate3.2x 标注(annot(01-13)
·spring2.5 + hibernate3.2x 标注(annot(01-13)
·SWT中的FormLayout (01-10)
·Spring基础(01-10)
·Spring 让 LOB 数据操作简单化 (12-26)
·Swing中使用Html标签 (12-26)
·Swing中使用Html标签 (12-26)
复制地址发给您的好友: [推荐文章] [返回顶部] [关闭窗口]
版权所有 Java大本营 1999-2007 转载请注明出处