事件监听器主要包含:动作事件监听器、鼠标事件监听器和键盘事件监听器三种。
动作监听器
代码如下:
1 public static void main(String[] args) { 2 JFrame frame = new JFrame("窗体"); 3 JButton button = new JButton("点我啊"); 4 frame.add(button); 5 //给按钮添加动作监听器 动作时间监听器对于鼠标点击以及空格键都会起作用的。 6 button.addActionListener(new ActionListener() { 7 8 //当按钮被点击的时候,就会调用actionPerformed的方法。 9 @Override10 public void actionPerformed(ActionEvent e) { // ActionEvent 当前按钮被点击的时候,jvm就会把对应 的时间传递ActionEvent,并且调用actionPerformed方法。11 //System.out.println("哎呀,被点了...");12 JButton button =(JButton) e.getSource(); //getSource() 获取到事件源13 if(button.getText().equals("点我啊")){14 button.setText("点他吧");15 }else{16 button.setText("点我啊");17 }18 19 }20 });21 frame.setSize(200, 200);22 frame.setLocationRelativeTo(null);23 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);24 frame.setVisible(true);25 }
鼠标事件监听器
代码如下:
1 public static void main(String[] args) { 2 JFrame frame = new JFrame("鼠标事件监听器"); 3 JButton button = new JButton("按钮"); 4 frame.add(button); 5 //给按钮添加鼠标事件监听器 6 /*button.addMouseListener(new MouseListener() { 7 8 @Override 9 public void mouseReleased(MouseEvent e) {10 System.out.println("鼠标松开...");11 12 }13 14 @Override15 public void mousePressed(MouseEvent e) {16 System.out.println("鼠标按下..");17 }18 19 @Override20 public void mouseExited(MouseEvent e) {21 System.out.println("鼠标移出...");22 }23 24 @Override25 public void mouseEntered(MouseEvent e) {26 System.out.println("鼠标进入...");27 }28 29 @Override30 public void mouseClicked(MouseEvent e) {31 System.out.println("鼠标单击..");32 }33 });34 35 添加鼠标监听器的时候我只使用 到单击事件,但是目前要我实现所有的方法??36 解决方案: 适配器。适配器是实现了MouseListener方法的所有方法,但是实现的方法全部都是空实现。37 */38 39 button.addMouseListener(new MouseAdapter() {40 41 @Override42 public void mouseClicked(MouseEvent e) {43 // System.out.println("鼠标单击了..");44 if(e.getClickCount()==2){45 System.out.println("双击了..");46 }47 48 }49 50 51 });52 frame.setSize(200, 200);53 frame.setLocationRelativeTo(null);54 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);55 frame.setVisible(true);56 }
键盘事件监听器
代码如下:
1 public static void main(String[] args) { 2 JFrame frame = new JFrame("键盘事件监听器"); 3 JButton button = new JButton("按钮"); 4 frame.add(button); 5 //给按钮添加键盘事件监听器 6 /*button.addKeyListener(new KeyListener() { 7 8 @Override 9 public void keyTyped(KeyEvent e) {10 System.out.println("键入某个键");11 }12 13 @Override14 public void keyReleased(KeyEvent e) {15 // System.out.println("释放某个键");16 }17 18 @Override19 public void keyPressed(KeyEvent e) {20 System.out.println("按下某个键..");21 }22 });*/23 button.addKeyListener(new KeyAdapter() {24 @Override25 public void keyPressed(KeyEvent e) {26 // System.out.println("按下的字符:"+e.getKeyChar());27 //System.out.println("获取键对应的数值:"+ e.getKeyCode());28 int code = e.getKeyCode();29 switch (code) {30 case 38:31 System.out.println("上");32 break;33 case 40:34 System.out.println("下");35 break;36 case 37:37 System.out.println("左");38 break;39 case 39:40 System.out.println("右");41 break;42 default:43 break;44 }45 }46 });47 frame.setSize(200, 200);48 frame.setLocationRelativeTo(null);49 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);50 frame.setVisible(true);51 }
实战
文件搜索器
代码如下:
1 public class FileSearch { 2 3 JFrame frame = new JFrame("文件搜索器"); 4 5 JPanel panel = new JPanel(); 6 7 JTextField field = new JTextField("请输入目录名...",15); 8 9 JButton button = new JButton("搜索");10 11 JTextArea area = new JTextArea(15,15);12 13 //滚动条14 // ScrollPane bar = new ScrollPane();15 JScrollPane bar = new JScrollPane(area);16 17 18 public void init(){19 //先把area添加 到滚动条上。20 // bar.add(area);21 //先把组件添加到panel上22 panel.add(field);23 panel.add(button);24 25 //给输入框添加事件26 field.addMouseListener(new MouseAdapter() {27 28 @Override29 public void mouseClicked(MouseEvent e) {30 JTextField field = (JTextField) e.getSource();31 if(field.getText().equals("请输入目录名...")){32 field.setText("");33 }34 }35 });36 37 //给按钮添加事件监听器38 button.addActionListener(new ActionListener() {39 40 @Override41 public void actionPerformed(ActionEvent e) {42 //获取输入框输入的路径43 String path = field.getText();44 //使用输入的路径构建一个FIle对象45 File dir = new File(path);46 //找到目录下的所有子 文件47 File[] files = dir.listFiles();48 for(File file : files){ // 1208Project 资料49 area.setText(area.getText()+ file.getName()+"\r\n");50 }51 }52 });53 54 55 56 //把面板添加到frame上57 frame.add(panel,BorderLayout.NORTH);58 frame.add(bar); 59 frame.setSize(300, 400);60 frame.setLocationRelativeTo(null);61 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);62 frame.setVisible(true);63 }64 65 public static void main(String[] args) {66 new FileSearch().init();67 68 }69 }