package Demo; import java.awt.TextArea; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.awt.event.WindowEvent; 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 java.util.Scanner; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.KeyStroke; import javax.swing.JFileChooser; public class Text2 { public static void main(String[] args) { JFrame jframe; JMenu jmenu1,jmenu2; JMenuBar jmenubar; JMenuItem jmenuitem1,jmenuitem2,jmenuitem3,jmenuitem4; JTextArea area; JFileChooser jfc; //JLabel label; jframe=new JFrame("记事本"); jmenu1=new JMenu("文件"); jmenu2=new JMenu("编辑"); jmenubar=new JMenuBar(); jmenuitem1=new JMenuItem("新建(N)"); jmenuitem2=new JMenuItem("打开 (S)"); jmenuitem3=new JMenuItem("另存为(A)"); jmenuitem4=new JMenuItem("退出(X)"); //label=new JLabel("现在没有打开的文件"); jfc=new JFileChooser(); area=new JTextArea(8,10); area.setEditable(true); jframe.getContentPane().add(new JScrollPane(area)); jmenuitem1.setMnemonic(KeyEvent.VK_N); jmenuitem2.setMnemonic(KeyEvent.VK_S); jmenuitem3.setMnemonic(KeyEvent.VK_A); jmenuitem4.setMnemonic(KeyEvent.VK_X); jmenuitem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK)); jmenuitem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK)); jmenuitem3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK)); jmenuitem4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK)); jmenubar.add(jmenu1); jmenubar.add(jmenu2); jmenu1.add(jmenuitem1); jmenu1.add(jmenuitem2); jmenu1.add(jmenuitem3); jmenu1.add(jmenuitem4); //jframe.setBounds(); jframe.setJMenuBar(jmenubar); jframe.setSize(400,400); jframe.setLocation(400,400); jframe.setVisible(true); jmenuitem1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { area.setText(""); } }); jmenuitem3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jfc.showOpenDialog(null); File file=jfc.getSelectedFile(); try { if(!file.exists()) file.createNewFile(); FileOutputStream fos = new FileOutputStream(file); byte[] b = area.getText().getBytes(); fos.write(b); fos.close(); } catch (IOException ex) { ex.printStackTrace(); } } }); jmenuitem2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jfc.showOpenDialog(null); File file=jfc.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 ex) { ex.printStackTrace(); }catch (IOException ex) { ex.printStackTrace(); } }}); jmenuitem4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); } }
学习总结:
1,键盘时间及监听处理:
方法:为对键盘进行监听,可通过直接使用KeyListener接口即可。
KeyListener接口方法:
方法 | 类型 | 描述 |
void keyTyped(KeyEvent e) | 普通 | 键入时某个键时调用 |
void keyPressed(KeyEvent e) | 普通 | 键盘按下时调用 |
void keyReleased(KeyEvent e) | 普通 | 键盘松开时调用 |
若想取得键盘键入的内容,可使用KeyEvent得到。
KeyEvent事件的常用方法:
方法 | 类型 | 描述 |
public char getKreyChar() | 普通 | 返回键入的字符,只针对于keyTyped有意义 |
public int getKeyCode() | 普通 | 返回键入字符的键码 |
pubilc static String getKeyText(int KeyCode) | 普通 | 返回此键的信息。如“HOME”,“FI”或“A”等 |
2,单选钮:JRadioButton
含义:在多个显示的信息中选择其中一个。
JRadioButton的常用方法:
方法 | 普通 | 描述 |
public JRadioButton(Icon icon) | 构造 | 建立一个单选钮,并指定图片 |
public JRadioButton(Icon icon,boolean selected) | 构造 | 建立一个单选钮,并指定图片和其是否选定 |
public JRadioButton(String text) | 构造 | 建立一个单选钮,并指定其文字,默认为不选定 |
public JRadioButton(String text,boolean selected) | 构造 | 建立一个单选钮,并指定文字和其是否选定 |
public JRadioButton(String text,Icon icon,boolean selected) | 构造 | 建立一个单选钮,并指定图片,文字和其是否选定 |
public void setSelscted(boolean b) | 普通 | 设置是否选定 |
public boolean isSelected() | 普通 | 返回是否被选中 |
public void setText(String text) | 普通 | 设置显示文本 |
public void setIcon(Icon defaultIcon) | 普通 | 设置图片 |
注意:为防止出现多选的问题,应将需要的选项加入按钮组(即:ButtonGroup)中
在单选钮中事件的监听由ItemListener接口进行。
ItemListener接口的方法:
方法 | 类型 | 描述 |
void itemStateChanged(ItemEvent e) | 普通 | 当用户取消或选定某个选项时调用 |
此方法中ItemEvent事件的方法及常量
方法 | 类型 | 描述 |
public static final int SELECTED | 常量 | 选项被选中 |
public static final int DESELECTED | 常量 | 选项未被选中 |
public Object getItem() | 普通 | 返回受事件影响的选项 |
public int getstateChange() | 普通 | 返回选定状态的类型(已选择或已取消) |
3复选框:JCheckBox
作用:实现N选多的操作样式。
JCheckBox类的常用方法:
方法 | 类型 | 描述 |
public JCheckBox(Iocn icon) | 构造 | 创建一个带图标的对象,但不选定 |
public JCheckBox(Icon icon,boolean selected) | 构造 | 创建一个带图标的对象,并指定其是否选定 |
public JCheckBox(String text) | 构造 | 创建一个带文本的对象,但不选定 |
public JCheckBox(String text,boolean selected) | 构造 | 创建一个带文本的对象,并指定是否选定 |
public JCheckBox(String text,Icon icon,boolean selected) | 构造 | 创建一个带文本和图标的对象,并指定其是否被选定 |
JCheckBox和JRadioButton的事件处理监听接口是一样的,都使用ItemListener接口。
4,菜单组件:
JMnuBar组件:菜单栏组件
JMenu组件:菜单组件
JMenultem组件:菜单项组件(注意:JMenuItem可以理解为一种特殊的JButton组件,当选择某个菜单时也会触发ActionEvevnt事件)
JMenubar的常用方法:
方法 | 类型 | 描述 |
public JMenubar() | 构造 | 创建新的JMenubar对象 |
public JMenu add(JMenu c) | 普通 | 将指定的JMenu加入到JMenubar中 |
public JMenu getMenu(int index) | 普通 | 返回指定位置的菜单 |
public int getMenuCount() | 普通 | 返回菜单栏上的菜单数 |
JMenu的常用方法:
方法 | 类型 | 描述 |
public JMenu(String s) | 构造 | 创建新的JMenu,并指定菜单的名称 |
public JMenuItem add(JMenuItem menuItem) | 普通 | 增加新的菜单项 |
public void addSeparator() | 普通 | 加入分隔线 |
JMenultem类的常用方法:
方法 | 类型 | 描述 |
public JMenultem(Icon icon) | 构造 | 创建带有图标的JMenultem |
public JMenultem(String text) | 构造 | 创建带有指定文本的JMenultem |
public JMenultem(String text,Icon icon) | 构造 | 创建带有指定文本和图标的JMenultem |
public JMenultem(String text,int mnemonic) | 构造 | 创建带有指定文本的JMenultem,并指定助记符 |
public void setMnemonic(int mnemonic) | 普通 | 指定菜单项的助记符(需打开菜单才有效) |
publci void setAcceleerator(KeyStroke keyStroke) | 普通 | 设置快捷键的组合键(不许打开菜单也有效) |
5,文本选择框JFileChooser
作用:打开或保存文件
JFileChooser类的常用方法:
方法 | 类型 | 描述 |
public JFileChooser() | 构造 | 指定用户默认的目录,在Windows中是“我的文档”,在Unix上是用户的主目录 |
public JFileChooser(String currentDirectoryPath) | 构造 | 指定文件选择的目录 |
public File getSelectedFile() | 普通 | 返回选择的文件 |
public int showSaveDialog(Component parent) throws HeadlessException() | 普通 | 打开保存对话框,返回保存状态 |
public int showOpenDialog(Component parent) throws HeadlessException() | 普通 | 打开文件选择对话框,返回打开状态 |
public void setDialogTitle(String dialogTitle) | 普通 | 设置文件选择框的标题 |
public void setApproveButtonText(String approveButtonText) | 普通 | 设置文件选择的接收按钮内容 |
文件选择框的3种放回状态:
常量 | 描述 |
public static final int APPROVE_OPTION | 选择确定后返回该值 |
public static final int CANCEL_OPTION | 选择取消后返回该值 |
public static final int ERROR_OPTION | 选择错误后返回该值 |