第十三周学习总结&实验报告(八)

图像界面

件处理及监听处理

1.键盘事件(KeyEvent)及监听处理(KeyListener)
1.1加入事件监听

super.addWindowListener(new WindowAdapter(){

1.2 KeyListener接口方法

void keyTyped(KeyEvent e)                           //键入某个键时调用
void keyPressed(KeyEvent e)                        //键盘按下时调用
void keyReleased(KeyEvent e)                       //键盘松开时调用

1.3 KeyEvent 事件的常用方法

public int getKeyCode()                                                //返回键入字符的键码
public static String getKeyText(int keyCode)                           // 返回键入的信息,如“HOME”、“F1”等

使用KeyAdapter适配器对键盘事件的监听

2.鼠标事件及监听处理
2.1 MouseListener 接口方法

void mouseReleased(MouseEvent e)                                            //鼠标松开时调用
void mouseExited(MouseEvent e)                                             //鼠标离开组件时调用

2.2 MouseEvent 事件的常用方法

public static final int BUTTON1/BUTTON2/BUTTON3                             //   表示鼠标左键/滚轴/右键的常量
public int getButton()                                                      //以数字形式返回按下的鼠标键                                                                        
public int getClickCount()                                                  //返回鼠标的单击次数      
public int getX()/getY()                                                    //返回鼠标操作的X/Y坐标

通过MouseAdapter实现对指定鼠标操作的监听

3.单选按钮(JRadioButton)
3.1 JRadioButton 类的常用方法

public JRadioButton(Icon icon,boolean selected)                             //建立一个单选钮,并指定图片和其是否被选定
public JRadioButton(String text)                                            //建立一个单选钮,并指定文字,默认为不选定
public JRadioButton(String text,Icon icon,boolean selected)                 //建立一个单选钮,并指定图片、文字和其是否选定
public void setText(String text)                                            // 设置显示文本
public void setIcon(Icon defaultIcon)                                       // 设置图片

3.2 将所有单选钮加入一个组中

ButtonGroup group = new ButtonGroup();
group.add(this.jrb1);
group.add(this.jrb2);
group.add(this.jrb3);

3.3 JRadioButton 事件处理(ItemListener)
3.3.1 ItemListener接口方法

void itemStateChanged(ItemEvent e)                         // 当用户取消或选定某个选项时调用

3.3.2 ItemEvent 类的常用方法及常量

public static final int SELECTED/DESELECTED                    // 选项被选中/未被选中
public Object getItem()                                      // 返回受事件影响的选项
public int getStateChange()                                 // 返回选定状态的类型(已选择或已取消)

4 复选框 JCheckBox

4.1 JCheckBox 类常用方法

public JCheckBox(Icon icon,boolean selected)                        //创建一个带图标的对象,并指定其是否选定
public JCheckBox(String text,boolean selected,Icon icon)           //创建一个带文本和图标的对象,并指定其是否被选定

5.菜单组件(JMenu 与 JMenuBar)

5.1 JMenubar 的常用方法

public JMenuBar()                                                   //创建新的JMenuBar对象

public JMenu add(JMenu c)                                            //将指定的JMenu 加入到JMenuBar 中
public JMenu getMenu(int index)                                      //返回指定位置的菜单
public int getMenuCount()                                            // 返回菜单栏上的菜单数

5.2 JMenu 的常用方法

public JMenuItem add(JMenuItem menuItem)                           // 增加新的菜单项
public void addSeparator()                                          //加入分割线

5.3 JMenuItem 类的常用方法

newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK))     //设置新建快捷键的组合键
newItem.setMnemonic(KeyEvent.VK_N)                                                         // 添加新建项的助记符

6 文件选择框 JFileChooser
6.1 JFileChooser 类的常用方法

public JFileChooser(String currentDirectoryPath)                                          //指定文件选择的目录
public int showSaveDialog(Component parent throws HeadlessException                        //打开保存对话框,返回保存状态
public void setApproveButtonText(String approveButtonText)                                  //设置文件选择的接收按钮内容

实验报告 简易记事本的开发
源代码:

package Java;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;

import javax.swing.*;

public class TextPad implements ActionListener{
	JFrame frame;
	JMenuBar bar;
	JMenu fileMenu,editMenu;
	JMenuItem  newItem,openItem,saveItem,keepItem,closeItem;
	ImageIcon newIcon,openIcon,saveIcon,keepIcon,closeIcon;
	JScrollPane scroll;
	JTextArea area;
	JFileChooser chooser;
	File file;
	private Object label;
	
public TextPad() {
	frame = new JFrame("YZ");
	bar = new JMenuBar();
	fileMenu =new JMenu("文件");
	editMenu = new JMenu("编辑");
	newIcon = new ImageIcon("c:"+File.separator+"Users"+File.separator+"Jeff"+File.separator+"Desktop"+File.separator+"新建.jpg");
	openIcon = new ImageIcon("c:"+File.separator+"Users"+File.separator+"Jeff"+File.separator+"Desktop"+File.separator+"打开.jpg");
	saveIcon = new ImageIcon("c:"+File.separator+"Users"+File.separator+"Jeff"+File.separator+"Desktop"+File.separator+"另存为.jpg");
	keepIcon = new ImageIcon("c:"+File.separator+"Users"+File.separator+"Jeff"+File.separator+"Desktop"+File.separator+"保存.jpg");
	closeIcon = new ImageIcon("c:"+File.separator+"Users"+File.separator+"Jeff"+File.separator+"Desktop"+File.separator+"关闭.jpg");
	
	newItem = new JMenuItem("新建(N)",newIcon);
	openItem = new JMenuItem("打开(O)",openIcon);
	saveItem = new JMenuItem("另存为(A)",saveIcon);
	keepItem = new JMenuItem("保存(S)",keepIcon);
	closeItem = new JMenuItem("关闭(X)",closeIcon);
	
	area = new JTextArea();
	scroll = new JScrollPane(area);
	
	newItem.setMnemonic(KeyEvent.VK_N);
	openItem.setMnemonic(KeyEvent.VK_O);
	saveItem.setMnemonic(KeyEvent.VK_A);
	keepItem.setMnemonic(KeyEvent.VK_S);
	closeItem.setMnemonic(KeyEvent.VK_X);
	
	newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK));
	openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_DOWN_MASK));
	saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
	keepItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_DOWN_MASK));
	closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_DOWN_MASK));
	
	fileMenu.add(newItem);
	fileMenu.add(openItem);
	fileMenu.add(saveItem);
	fileMenu.add(keepItem);
	fileMenu.addSeparator();
	fileMenu.add(closeItem);
	
	newItem.addActionListener(this);
	openItem.addActionListener(this);
	saveItem.addActionListener(this);
	keepItem.addActionListener(this);
	closeItem.addActionListener(this);
	
	bar.add(fileMenu);
	bar.add(editMenu);
	
	frame.setJMenuBar(bar);
	frame.add(scroll);
	frame.setSize(400,300);
	frame.setVisible(true);
	
}

@Override
public void actionPerformed(ActionEvent event) {
	
	Object obj = event.getSource();
	JMenuItem item = null;
	JMenuItem memoryItem = null;
	if(obj instanceof JMenuItem) {
		JMenuItem item1=(JMenuItem) obj;
		if(item1==newItem) {
			new TextPad();
		}else if (item1==openItem) {
			chooser =new JFileChooser();
			chooser.showOpenDialog(null);
			file = chooser.getSelectedFile();
			try {
				FileInputStream fis=new FileInputStream(file);
				byte[] b = new byte [fis.available()];
				fis.read(b);
				area.append(new String(b));
				fis.close();
			} catch (FileNotFoundException e) {
				
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}else if(item1 ==saveItem) {
			
			chooser.showSaveDialog(null);
			file = chooser.getSelectedFile();
			
		}
		try {
			if(!file.exists()) {
				file.createNewFile();
			}
			FileOutputStream fos = new FileOutputStream(file);
			byte[] b=area.getText().getBytes();
			fos.write(b);
			fos.close();
		} catch (FileNotFoundException e) {
			
			e.printStackTrace();
		} catch (IOException e) {
			
			e.printStackTrace();
		}
		}else if(item == closeItem) {
			
			System.exit(1);
		}else if(item==memoryItem) {
			if(file!=null) {
				try {
					PrintStream out = new PrintStream(new FileOutputStream(file));
					out.print(this.area.getText());
					out.close();
				} catch (Exception e) {
				((AbstractButton) this.label).setText("文件保存失败");
					e.printStackTrace();
				}
			}
		}
	}
}

package Java;

public class TestPad {
	public static void main(String args[]) {
		new TextPad();
	}
}

程序运行截图:
总结:这只是一个最基本的记事本,结合老师上课所讲的,很容易实现简单操作。学到了一些监视器的运用。要想开发功能更全面的记事本还需要加倍努力学习相关知识。

原文地址:https://www.cnblogs.com/ImportantMagic/p/11906985.html