欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA--GUI:Dialog组件

程序员文章站 2022-03-26 14:40:19
...

需求

在文本框输入目录,点击"转到"按钮,将该目录中的文件与文件夹名称列在下面的文本区域中。如果输入有误,弹出相应错误提示信息。

使用方法

TextField(int columns):构造具有指定列数的新空文本字段。

TextArea(int rows, int columns):构造一个新文本区,该文本区具有指定的行数和列数,并将空字符串作为文本。

String getText():返回此文本组件表示的文本。

void setText(String t):将此文本组件显示的文本设置为指定文本。 

void append(String str):将给定文本追加到文本区的当前文本。

Dialog(Frame owner, String title, boolean modal):构造一个最初不可见的 Dialog,它带有指定的所有者 Frame、标题和模式。

       参数:

       owner - dialog 的所有者,如果此 dialog 没有所有者,则该参数为 null

       title - dialog 的标题,如果此 dialog 没有标题,则该参数为 null

       modal - 指定在显示的时候是否阻止用户将内容输入到其他*窗口中。如果该参数为 false,则 dialog 是 MODELESS;如果该参数为 true,则模式类型属性被设置为 DEFAULT_MODALITY_TYPE

编码

import java.awt.*;
import java.awt.event.*;
import java.io.*;
class WindowDemo{
	// 初始化组件
	private Frame f;
	private TextField tf;
	private Button but;
	private TextArea ta;
	// 初始化对话框相关组件
	private Dialog  d;
	private Label lab;
	private Button okBut;
	
	WindowDemo(){
		init();	// 页面初始化
	}
	
	public void init(){
		f=new Frame("my window");
		f.setBounds(300,100,600,500);
		f.setLayout(new FlowLayout());
		
		tf=new TextField(30);

		but=new Button("转到");
		
		ta=new TextArea(25,70);	// 行列
		
		d=new Dialog(f,"提示信息",true); // 指定Frame组件的Dialog,标题以及是否阻止用户将内容输入到其他*窗口中。
		d.setBounds(400,200,350,150);
		d.setLayout(new FlowLayout());
		lab=new Label();
		okBut=new Button("确定");
		
		d.add(lab);
		d.add(okBut);
		

		f.add(tf);
		f.add(but);
		f.add(ta);

		// 加载事件
		myEvent();
	
		f.setVisible(true);	// 显示窗口
	}
	
	public void myEvent(){
		
		okBut.addActionListener(new ActionListener(){	// 按钮关闭对话框
			public void actionPerformed(ActionEvent e){
				d.setVisible(false);
			}
		});
		
		d.addWindowListener(new WindowAdapter(){	// 关闭对话框
			public void windowClosing(WindowEvent e){
				d.setVisible(false);
			}
		});
		
		tf.addKeyListener(new KeyAdapter(){	// 输入,回车实现功能事件
			public void keyPressed(KeyEvent e){
				if(e.getKeyCode()==KeyEvent.VK_ENTER)
					showDir();
			}
		});
		
		but.addActionListener(new ActionListener(){	// 添加按钮事件
			public void actionPerformed(ActionEvent e){
					
				showDir();
				
			}
		});
		
		f.addWindowListener(new WindowAdapter(){	// 窗口关闭事件
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});
	}
	
	// 功能代码
	private void showDir(){
		String dirPath=tf.getText();	// 获取文本框输入值
				
		File dir=new File(dirPath);
		if(dir.exists()&&dir.isDirectory()){
			ta.setText("");	// 清空文本区的值
			String[] names=dir.list();
			for(String name:names){
				ta.append(name+"\r\n");
			}
		}
		else{
			String info="您输入的信息:"+dirPath+"是错误的,请重新输入正确文件夹目录!";
			lab.setText(info);
			d.setVisible(true);
		}
	}

	public static void main(String[] args){
		new WindowDemo();
	}
}

 

相关标签: GUI