第十三周学习总结&实验报告(八)
图像界面
件处理及监听处理
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();
}
}
程序运行截图:
总结:这只是一个最基本的记事本,结合老师上课所讲的,很容易实现简单操作。学到了一些监视器的运用。要想开发功能更全面的记事本还需要加倍努力学习相关知识。