第五十一讲 GUI编程练习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yerenyuan_pku/article/details/84868755

文件(夹)搜索

在文本框中输入目录,点击“确定”按钮,将该目录中的文件与文件夹名称列在下面的文本区域中,如图所示。
在这里插入图片描述

package cn.liayun.swing;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JScrollBar;
import javax.swing.JTabbedPane;
import javax.swing.JScrollPane;
import java.awt.event.ActionListener;
import java.io.File;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class MyWindow extends JFrame {

	private static final String LINE_SEPARATOR = System.getProperty("line.separator");
	private JPanel contentPane;
	private JTextField textField;
	private JTextArea textArea;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					MyWindow frame = new MyWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public MyWindow() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 851, 578);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JButton btnNewButton = new JButton("\u786E\u5B9A");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
//				System.out.println("hello button");
				btnNewButtonActionPerformed(evt);
			}
		});
		btnNewButton.setBounds(671, 31, 105, 43);
		contentPane.add(btnNewButton);
		
		textField = new JTextField();
		textField.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent evt) {
				textFieldKeyPressed(evt);
			}
		});
		textField.setBounds(27, 31, 630, 43);
		contentPane.add(textField);
		textField.setColumns(10);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(27, 97, 748, 401);
		contentPane.add(scrollPane);
		
		textArea = new JTextArea();
		scrollPane.setViewportView(textArea);
	}

	protected void textFieldKeyPressed(KeyEvent evt) {
		if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
			showDir();
		}
	}

	protected void btnNewButtonActionPerformed(ActionEvent evt) {
//		System.out.println("hello button");
		
		showDir();
	}

	private void showDir() {
		//通过在文本框输入具体的目录,将目录中的当前文件或者文件夹的名称列出到文本区域中
		/*
		 * 思路:
		 * 1,获取文本框中的路径
		 * 2,将路径封装成File对象,list()方法
		 * 3,将list()列表中的内容展现在文本区域中
		 */
		//1,获取路径,通过文本框对象来完成
		String str_dir = textField.getText();
		//2,将字符串路径封装成File对象
		File dir = new File(str_dir);
		//判断健壮性
		if (dir.exists() && dir.isDirectory()) {
			//清空文本区域
			textArea.setText("");
			//3,获取文件名称列表
			String[] names = dir.list();
			for (String name : names) {
				//4,将名字显示到文本区域
				textArea.append(name + LINE_SEPARATOR);
			}
		}
	}
	
	
}

模仿Windows的记事本程序

模仿Windows的记事本(notepad.exe)程序完成文件的打开、退出的操作,如下图所示。
在这里插入图片描述

package cn.liayun.swing;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
import javax.swing.filechooser.FileNameExtensionFilter;

import cn.liayun.separator.Separator;

public class MyMenu extends JFrame {

//	private static final String LINE_SEPARATOR = System.getProperty("line.separator");
	private JPanel contentPane;
	private JTextArea textArea;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					MyMenu frame = new MyMenu();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public MyMenu() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 875, 647);
		
		JMenuBar menuBar = new JMenuBar();
		menuBar.setToolTipText("");
		setJMenuBar(menuBar);
		
		JMenu mnNewMenu = new JMenu("\u6587\u4EF6");
		menuBar.add(mnNewMenu);
		
		JMenuItem menuItem = new JMenuItem("\u6253\u5F00");
		menuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				menuItemActionPerformed(evt);
			}
		});
		mnNewMenu.add(menuItem);
		
		JMenuItem menuItem_1 = new JMenuItem("\u9000\u51FA");
		menuItem_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				menuItem_1ActionPerformed(evt);
			}
		});
		mnNewMenu.add(menuItem_1);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
		
		JScrollPane scrollPane = new JScrollPane();
		contentPane.add(scrollPane, BorderLayout.CENTER);
		
		textArea = new JTextArea();
		scrollPane.setViewportView(textArea);
	}

	protected void menuItemActionPerformed(ActionEvent evt) {
		//创建一个文件选择器
		JFileChooser chooser = new JFileChooser();
		//创建一个文件扩展名过滤器
	    FileNameExtensionFilter filter = new FileNameExtensionFilter(
	        "Java & Txt", "java", "txt");
	    //给文件选择器设置过滤器
	    chooser.setFileFilter(filter);
	    //文件选择器调用了显示选择文件对话框,并获取该对话框的返回值
	    int returnVal = chooser.showOpenDialog(this);
	    //判断返回值
	    if(returnVal == JFileChooser.APPROVE_OPTION) {
//	       System.out.println("You chose to open this file: " +
//	            chooser.getSelectedFile().getName());
	    	
	    	//清空文本区域
	    	textArea.setText("");
	    	
	    	//获取选择的目录
	    	File file = chooser.getSelectedFile();
//	    	System.out.println(file.getAbsolutePath());
	    	
	    	//读取文件
	    	try {
				BufferedReader bufr = new BufferedReader(new FileReader(file));
				String line = null;
				while ((line = bufr.readLine()) != null) {
					textArea.append(line + Separator.LINE_SEPARATOR);
				}
				
			} catch (IOException e) {
				e.printStackTrace();
			}
	    	
	    }
	}

	protected void menuItem_1ActionPerformed(ActionEvent evt) {
		System.exit(0);
	}

}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yerenyuan_pku/article/details/84868755