本文共 2044 字,大约阅读时间需要 6 分钟。
在之前的学习中,随着不断的学习,自己发现在不同类在调用同一个对象时,总是不能得心应手。今天在学习事件处理机制中,偶然的发现,可以通过静态方法来进行调用。
例如在以下代码中,自己的MyTest01类是主类,继承了JFrame类,在构造方法中,显示窗口的设置,对JFrame添加监听事件,监听者是MouseListenerClass类,MyPanel类是自己的画板。自己原本想在画板上测试鼠标的进入,出来,按下,松开的方法,后来想要设置,当鼠标进入窗口,箭头变为小手,这个时候发现在MouseListenerClass类中创建一个MyPanel对象,无法实现,后来想到是MyTest01中MyPanel对象,和MouseListenerClass中MyPanel对象不同。为了让对象相同,在MyPanel中定义了静态方法
import javax.swing.*;
public class MyTest01 extends JFrame{ MyPanel mypanel = null; MouseListenerClass mouseListenerClass = null; public static void main(String[] args){ MyTest01 mytest01 = new MyTest01(); } public MyTest01(){ mypanel = MyPanel.returnMyPanel(); mouseListenerClass = new MouseListenerClass(); this.add(mypanel); this.addMouseListener(mouseListenerClass); this.setSize(400,300); this.setLocation(400,400); this.setVisible(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); }}
import java.awt.*;
import javax.swing.*;public class MyPanel extends JPanel{ public void paint(Graphics g){ super.paint(g); } //创建MyPanel对象,return函数方便其他函数调用。 private static MyPanel mypanel = new MyPanel(); public static MyPanel returnMyPanel(){ return mypanel; }}
package com.wx_03;
import java.awt.Cursor;import java.awt.event.*;public class MouseListenerClass implements MouseListener{ MyPanel mypanel = null; public MouseListenerClass(){ mypanel = MyPanel.returnMyPanel(); } @Override public void mouseClicked(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("鼠标按下:x = "+arg0.getX() + " y = "+arg0.getY()); } @Override public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stubSystem.out.println("鼠标进入");
mypanel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR ));//变为小手 } @Override public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("鼠标出来"); } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("鼠标按下"); } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("鼠标松开"); } }转载地址:http://psrdb.baihongyu.com/