动作事件
1、P255例13.22,以及P256例13.23,注意比较用 普通当前类和匿名内部类两种方式实现按钮对象的事件监听器。(必做题,20分)
代码1: package MyAdvancedEvent; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import MyAdvancedEvent.SimpleEvent.jbAction; public class SimpleEvents extends JFrame implements ActionListener{ private JButton jb=new JButton("我是按钮,单击我"); public SimpleEvents() { setLayout(null); setBounds(100,100,300,300); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); add(jb); jb.setBounds(10, 10, 150, 30); jb.addActionListener(this); } public void actionPerformed(ActionEvent e) { jb.setText("我被单击了"); } public static void main(String[] args) { new SimpleEvents(); } } 代码2: package MyAdvancedEvent; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import MyAdvancedEvent.SimpleEvent.jbAction; public class SimpleEvent2 extends JFrame{ private JButton jb=new JButton("我是按钮,单击我"); public SimpleEvent2() { setLayout(null); setBounds(100,100,300,300); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); add(jb); jb.setBounds(10, 10, 150, 30); jb.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { jb.setText("我被单击了"); } }); } public static void main(String[] args) { new SimpleEvent2(); } }
运行截图:
鼠标事件
1、P460【例25.2】一个用来演示鼠标事件的典型示例MouseEvent_Example(必做题,20分)
代码: package MyAdvancedEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.*; public class MouseEvent1 { JFrame f; JLabel l; public MouseEvent1() { f=new JFrame(); l=new JLabel(); f.add(l); l.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { System.out.print("单击了鼠标按键,"); int i=e.getButton(); if(i==MouseEvent.BUTTON1) { System.out.println("单击的是鼠标左键,"); } if(i==MouseEvent.BUTTON2) { System.out.println("单击的是鼠标滚轮,"); } if(i==MouseEvent.BUTTON3) { System.out.println("单击的是鼠标右键键,"); } int clickcount=e.getClickCount(); System.out.println("单击次数为"+clickcount+"下"); } public void mousePressed(MouseEvent e) { System.out.print("鼠标按键被按下,"); int i=e.getButton(); if(i==MouseEvent.BUTTON1) { System.out.println("按下的是鼠标左键,"); } if(i==MouseEvent.BUTTON2) { System.out.println("按下的是鼠标滚轮,"); } if(i==MouseEvent.BUTTON3) { System.out.println("按下的是鼠标右键键,"); } } public void mouseReleased(MouseEvent e) { System.out.print("鼠标按键被释放,"); int i=e.getButton(); if(i==MouseEvent.BUTTON1) { System.out.println("释放的是鼠标左键,"); } if(i==MouseEvent.BUTTON2) { System.out.println("释放的是鼠标滚轮,"); } if(i==MouseEvent.BUTTON3) { System.out.println("释放的是鼠标右键键,"); } } public void mouseEntered(MouseEvent e) { System.out.println("光标移入组件"); } public void mouseExited(MouseEvent e) { System.out.println("光标移入组件"); } }); f.setBounds(100, 100, 200, 200); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new MouseEvent1(); } }
运行截图:
2、鼠标选色卡MouseEventColor,运行结果如下,通过鼠标点击不同的颜色,将窗体的背景色设置成不同。试用普通类、匿名内部类、鼠标适配器三种方式分别实例化监听器对象。
(必做题,20分)
代码1: package MyAdvancedEvent; import java.awt.Color; import java.awt.Font; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.*; public class MouseEventColor implements MouseListener{ JFrame f; JPanel p; Box box; JButton[]Button=new JButton[7]; Color[]color= {Color.CYAN,Color.BLUE,Color.GRAY,Color.DARK_GRAY,Color.MAGENTA,Color.YELLOW,Color.PINK}; public MouseEventColor() { f=new JFrame("选"); p=new JPanel(); box=Box.createHorizontalBox(); for(int i=0;i<7;i++) { Button[i]=new JButton(" "); Button[i].setBackground(color[i]); Button[i].setFont(new Font("",Font.PLAIN,15)); Button[i].addMouseListener(this); box.add(Button[i]); } p.add(box); f.add(p); f.setBounds(100, 100, 310, 300); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new MouseEventColor(); } public void mouseClicked(MouseEvent e) { if(e.getSource()==Button[0]) { p.setBackground(color[0]); }else if(e.getSource()==Button[1]) { p.setBackground(color[1]); }else if(e.getSource()==Button[2]) { p.setBackground(color[2]); }else if(e.getSource()==Button[3]) { p.setBackground(color[3]); }else if(e.getSource()==Button[4]) { p.setBackground(color[4]); }else if(e.getSource()==Button[5]) { p.setBackground(color[5]); }else{ p.setBackground(color[6]); } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } } 代码2: package MyAdvancedEvent; import java.awt.Color; import java.awt.Font; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.*; public class MouseEventColor1 { JFrame f; JPanel p; Box box; JButton[]Button=new JButton[7]; Color[]color= {Color.CYAN,Color.BLUE,Color.GRAY,Color.DARK_GRAY,Color.MAGENTA,Color.YELLOW,Color.PINK}; public MouseEventColor1() { f=new JFrame("选"); p=new JPanel(); box=Box.createHorizontalBox(); for(int i=0;i<7;i++) { Button[i]=new JButton(" "); Button[i].setBackground(color[i]); Button[i].setFont(new Font("",Font.PLAIN,15)); Button[i].addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { if(e.getSource()==Button[0]) { p.setBackground(color[0]); }else if(e.getSource()==Button[1]) { p.setBackground(color[1]); }else if(e.getSource()==Button[2]) { p.setBackground(color[2]); }else if(e.getSource()==Button[3]) { p.setBackground(color[3]); }else if(e.getSource()==Button[4]) { p.setBackground(color[4]); }else if(e.getSource()==Button[5]) { p.setBackground(color[5]); }else{ p.setBackground(color[6]); } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } }); box.add(Button[i]); } p.add(box); f.add(p); f.setBounds(100, 100, 310, 300); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new MouseEventColor1(); } } 代码3: package MyAdvancedEvent; import java.awt.Color; import java.awt.Font; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.*; public class MouseEventColor3 { JFrame f; JPanel p; Box box; Color[]color= {Color.CYAN,Color.BLUE,Color.GRAY,Color.DARK_GRAY,Color.MAGENTA,Color.YELLOW,Color.PINK}; public MouseEventColor3() { f=new JFrame(""); p=new JPanel(); box=Box.createHorizontalBox(); for(int i=0;i<color.length;i++) { final JButton button=new JButton(" "); button.setBackground(color[i]); button.setFont(new Font("",Font.PLAIN,15)); button.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { p.setBackground(button.getBackground()); } }); box.add(button); } p.add(box); f.add(p); f.setBounds(100, 100, 310, 300); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new MouseEventColor3(); } }
运行截图:
3、鼠标事件响应练习MouseEventapp.java。当鼠标进入窗口时,窗口的标题显示“欢迎”;当鼠标离开窗口时,窗口的标题显示“再见”;鼠标在窗体单击时,就在鼠标单击所在位置显示“开始”。(必做题,20分)
代码: package MyAdvancedEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.*; public class MouseEventapp { JFrame f; JLabel l; public MouseEventapp() { f=new JFrame("再见!"); l=new JLabel("开始"); f.add(l); l.setVisible(false); f.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { l.setVisible(true); int x=e.getX(),y=e.getY()-30; l.setBounds(x, y, 100, 20); } public void mouseEntered(MouseEvent e) { f.setTitle("欢迎!"); } public void mouseExited(MouseEvent e) { f.setTitle("再见!"); l.setVisible(false); } }); f.setBounds(200, 200, 300, 300); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new MouseEventapp(); } }
运行截图:
2、鼠标移动监听练习MyMouseMotionListener.java。当鼠标在窗体内移动和拖动时,分别显示如下信息:最前面是移动或拖动次数;最后面的是发生事件时鼠标所在的x坐标和y坐标(选做题,20分)
代码: package MyAdvancedEvent; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import javax.swing.*; public class MyMouseMotionLister { JFrame f; JLabel l; JButton b; JTextArea ta; JScrollPane sp; int count; public MyMouseMotionLister() { f=new JFrame("MyMouseMotionLister"); l=new JLabel("click and drag the mouse"); b=new JButton("退出"); ta=new JTextArea(); sp=new JScrollPane(ta); sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); f.add(l,BorderLayout.NORTH); f.add(sp,BorderLayout.CENTER); f.add(b,BorderLayout.SOUTH); f.setSize(400, 300); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ta.addMouseMotionListener(new MouseMotionListener() { public void mouseDragged(MouseEvent e) { int xx=e.getX(),yy=e.getY(); count++; String counts=count+"",x=xx+"",y=yy+""; String content=counts+"the mouse is drag:x="+x+",y="+y; ta.append(content+"\n"); } public void mouseMoved(MouseEvent e) { int xx=e.getX(),yy=e.getY(); count++; String counts=count+"",x=xx+"",y=yy+""; String content=counts+"the mouse is moving:x="+x+",y="+y; ta.append(content+"\n"); } }); b.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if(e.getSource()==b){ System.exit(0); } } }); } public static void main(String[] args){ new MyMouseMotionLister(); } }
运行截图:
来源:https://www.cnblogs.com/quan-2723365710/p/12164024.html