这周主要学习监听器以及各种事件处理,例如键盘监听、鼠标监听、单选钮、复选框、列表框、菜单组件。
下面是我自己写的一个记事本代码
记事本源代码:
package thirteen; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.swing.*; import javax.swing.undo.UndoManager; public class test implements ActionListener{ JFrame frame; JTextArea text; JScrollPane sp; JMenuItem newItem,windomItem,openItem,saveItem,othersaveItem,pagesetupItem,printItem,closeItem; JMenuBar bar; JMenu fileMenu,editMenu,formatMenu,checkMenu,helpMenu; JFileChooser choose; File file; JTable table; JMenuItem blankItem; UndoManager undoManager; public void Wenjian() { frame=new JFrame("记事本"); text=new JTextArea(); sp=new JScrollPane(text); bar=new JMenuBar(); fileMenu=new JMenu("文件(F)"); editMenu=new JMenu("编辑(E)"); formatMenu=new JMenu("格式(O)"); checkMenu=new JMenu("查看(V)"); helpMenu=new JMenu("帮助(H)"); //向菜单栏添加 bar.add(fileMenu); bar.add(editMenu); bar.add(formatMenu); bar.add(checkMenu); bar.add(helpMenu); frame.add(sp); frame.setJMenuBar(bar); frame.setSize(800,600); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { test shi=new test(); shi.Wenjian(); } public void actionPerformed(ActionEvent e){ //关于文件下面选项的监听 if(e.getSource()==newItem) { text.setText(""); }else if(e.getSource()==windomItem) { test ben =new test(); ben.Wenjian(); }else if(e.getSource()==openItem) { choose=new JFileChooser(); choose.showOpenDialog(null); file=choose.getSelectedFile(); try { FileInputStream input=new FileInputStream(file); byte[] b=new byte[input.available()]; input.read(b); text.append(new String(b)); input.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } }else if(e.getSource()==othersaveItem) { choose=new JFileChooser(); choose.showOpenDialog(null); file=choose.getSelectedFile(); try { if(!file.exists()) { file.createNewFile(); } FileOutputStream output=new FileOutputStream(file); byte[] b=text.getText().getBytes(); output.write(b); output.close(); } catch (IOException e1) { e1.printStackTrace(); } }else if(e.getSource()==saveItem) { choose=new JFileChooser(); choose.showOpenDialog(null); file=choose.getSelectedFile(); try { FileOutputStream output=new FileOutputStream(file); byte[] b=text.getText().getBytes(); output.write(b); output.close(); } catch (IOException e1) { e1.printStackTrace(); } }else if(e.getSource()==pagesetupItem) { }else if(e.getSource()==printItem) { }else if(e.getSource()==closeItem) { System.exit(1); } } }
运行截屏:
总结:
1)键盘监听
使用KeyListener接口,在取得键盘信息时最好使用KeyEvent类提供的静态方法getKeyText()完成。
2)鼠标监听
使用MouseListener接口,其中MouseEvent中有getButton(),getX(),getY()等方法
3)单选钮:JRadioButton及事件处理
方法:
setSelected();是否被选中
setText(String);设置显示文本
setIcon(Icon);设置图片
其事件处理使用ItenListener
4)复选框:必须使用JCheckBox事件处理
方法:
JCheckBox();创建文本对象
其事件处理也是用ItemListener接口
5)列表框:JList及事件处理
方法:
int[] getSeletrdIndices();返回所选择的所有数组
Jlist(ListModel/Object[] listData/Vector<?>listData);构造JList
其事件处理使用ListSelectionListener接口
菜单组件
JMenu、JMenuBar、JMenuItem可实现简单的菜单外观,使用事件监听可对应作出一些功能的实现,如代码记事本、
感觉写这个记事本代码很有意思,但又感觉界面有点不太灵活!