继前面的,这篇主要记录菜单和文件对话框的两个小练习,来熟悉一下方法的应用,一些简单的逻辑和Swing的相关简介,以及关于GUI基础的记录。
一、创建一个菜单
import java.awt.FlowLayout;import java.awt.Frame;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JOptionPane;public class Test29 {public static void main(String[] args) {new MenuDeom(); }}class MenuDeom { MenuDeom() { init(); }private Frame f;private MenuBar mBar;private Menu menu;private Menu subMenu; // 这是要当作二级菜单的,放在 menu 下private MenuItem mItem1;private MenuItem mItem2;private void init() { f = new Frame("窗口标题"); f.setBounds(20, 20, 400, 500); f.setLayout(new FlowLayout()); mBar = new MenuBar(); // 创建一个菜单栏menu = new Menu("文件"); // 创建一个菜单mItem1 = new MenuItem("打开"); mItem2 = new MenuItem("退出"); menu.add(mItem1); menu.add(mItem2); subMenu = new Menu(); subMenu.add(new MenuItem("退出")); menu.add(subMenu); mBar.add(menu); f.setMenuBar(mBar); f.setVisible(true); initEvent(); }private void initEvent() { f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) { System.exit(0); } }); mItem1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { System.out.println("第一个响应了"); JOptionPane.showMessageDialog(null, "这是第一个菜单的响应"); } }); mItem2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { System.out.println("第二个响应了"); JOptionPane.showMessageDialog(null, "这是第二个菜单的响应"); } }); }}
二、创建文件对话框
import java.awt.FileDialog;import java.awt.Frame;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.TextArea;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;class FileDlgDemo { FileDlgDemo() { init(); }private Frame f;private MenuBar mBar;private Menu fileMenu;private MenuItem openItem, saveItem, closeItem;private TextArea txtArea;private FileDialog openFileDlg; // 文件打开对话框private FileDialog saveFileDlg; // 文件保存对话框private File file;private void init() { f = new Frame("记事本"); f.setBounds(50, 50, 400, 200); mBar = new MenuBar(); fileMenu = new Menu("文件"); openItem = new MenuItem("打开"); saveItem = new MenuItem("保存"); closeItem = new MenuItem("退出"); fileMenu.add(openItem); fileMenu.add(saveItem); fileMenu.add(closeItem); mBar.add(fileMenu); f.setMenuBar(mBar); f.setVisible(true); openFileDlg = new FileDialog(f, "文件打开对话框", FileDialog.LOAD); saveFileDlg = new FileDialog(f, "文件保存对话框", FileDialog.SAVE); txtArea = new TextArea(); f.add(txtArea); initEvent(); }private void initEvent() { f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) { System.exit(0); } });// 打开openItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {try { openFileDlg.setVisible(true); String driStr = openFileDlg.getDirectory(); String fileName = openFileDlg.getFile();// System.out.println(driStr+":"+fileName);BufferedReader br = new BufferedReader(new FileReader( driStr + fileName)); <a>本文来源gao*daima.com搞@代#码&网6</a> String str = null;while ((str = br.readLine()) != null) { txtArea.append(str + "\r\n"); } br.close(); } catch (Exception ex) { ex.printStackTrace(); } } });// 文件保存saveItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {try { saveFileDlg.setVisible(true); String dirStr = saveFileDlg.getDirectory(); String fileName = saveFileDlg.getFile();if (fileName != null && dirStr != null) { file = new File(dirStr, fileName); BufferedWriter bw = new BufferedWriter(new FileWriter(file)); String content = txtArea.getText(); bw.write(content); bw.close(); } } catch (Exception ex) { ex.printStackTrace(); } } }); }}public class Test30 {public static void main(String[] args) {new FileDlgDemo(); }}