监听器的使用
- ActionListener:监听按钮,菜单,复选框,单选框都可以
- MouseListener:监听窗体 面板
- MouseMotionListener:监听窗体,面板
- KeyListener:监听窗体
- ChangeListener:滑杆
监听器的原理
- 所有的监听器都是接口 interface
所有的接口的必须条件,必须重写接口中的所有抽象方法
接口实现:一个类可以实现多个接口 - Adapter类:实现了相关的所有接口,并重写了所有的方法,但是没有添加内容,也可以通过继承Adapter类来实现监听器
继承:
不强制重写方法,可以选择性重写方法
一个类只能直接继承一个父类
实例代码
public class MyAdapter implements MouseListener, ActionListener,MouseMotionListener, KeyListener, ChangeListener {
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void stateChanged(ChangeEvent e) {
}
@Override
public void mouseDragged(MouseEvent e) {
}
@Override
public void mouseMoved(MouseEvent e) {
}
}
public class UIListener extends MyAdapter{
public JLabel jslValue;
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("鼠标监听器,按下");
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("键盘监听器:"+e.getKeyChar());
}
@Override
public void mouseDragged(MouseEvent e) {
System.out.println("鼠标拖动监听器:"+e.getX());
}
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("动作监听器:"+e.getActionCommand());
String ac = e.getActionCommand();
if (ac.equals("打开")){
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
"JPG & GIF Images", "jpg", "gif");
chooser. setFileFilter(filter);
int returnVal = chooser. showOpenDialog(null);
if(returnVal == JFileChooser. APPROVE_OPTION) {
File file = chooser.getSelectedFile();
System. out. println("You chose to open this file: " +
file.getParentFile());
}else {
System.out.println("取消操作");
}
}
}
@Override
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider) e.getSource();
System.out.println("状态改变监听器:"+source.getValue());
jslValue.setText(source.getValue()+"");
}
}
public class UI extends JFrame {
UIListener ul = new UIListener();
public UI() {
this.setTitle("监听器");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(800, 800);
this.setLocationRelativeTo(null);
this.setLayout(new FlowLayout());
JMenuBar menuBar = new JMenuBar();
String[] menuStr = {"File","Edit","View","Navigate"};
String[] menItmStr = {"1","2","3","4","5","6"};
for (int i = 0; i < menuStr.length; i++) {
JMenu menu = new JMenu(menuStr[i]);
for (int j = 0; j < menItmStr.length; j++) {
JMenuItem menuItem = new JMenuItem(menuStr[i]+menItmStr[j]);
menu.add(menuItem);
menuItem.addActionListener(ul);
}
menuBar.add(menu);
}
this.setJMenuBar(menuBar);
JButton btn = new JButton("打开");
this.add(btn);
btn.addActionListener(ul);
JSlider jSlider = new JSlider(SwingConstants.VERTICAL);
this.add(jSlider);
jSlider.addChangeListener(ul);
JLabel islValue = new JLabel(0 + "");
this.add(islValue);
ul.jslValue = islValue;
this.setVisible(true);
this.requestFocusInWindow();
}
public static void main(String[] args) {
new UI();
}
}