博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中在不同类中调用同一个对象方法
阅读量:2256 次
发布时间:2019-05-09

本文共 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 stub

System.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/

你可能感兴趣的文章
不看你就亏了,Android中高级大厂面试源码秘籍,助你金三银四直通大厂
查看>>
Android 开发三年,跳槽大厂无望,意外获得《Android面试宝典》助我跳槽字节、薪资翻倍
查看>>
RxJava本质上不变的是什么?
查看>>
金三银四直通卡:Android架构进阶笔记:七大专题,3068页考点,抓紧啃透吧!
查看>>
金三银四阿里我去定了,谁也拦不住我,这份《Android面试宝典》说的
查看>>
一位四年多Android开发老鸟,对开发经验总结与排坑经历分享
查看>>
抱着试一试的心态,没想到还真被录用了!年后我收到的第一个offer:字节跳动Android研发岗
查看>>
Android程序员面试字节跳动被刷,竟怪这些知识点没有早些发布出来!
查看>>
一个例子学会使用Jetpack Compose Modifier
查看>>
年后面试,差点就痛失了字节跳动Android岗的Offer,原因竟是因为性能调优!
查看>>
做Android开发的第七个年头,忍不住分享一份Android中高级面试题
查看>>
他经历了什么?七年资深Android程序员想转学Java,网友纷纷留言劝阻!2021年Android岗该如何进阶呢?
查看>>
从“面试被拒”到“蚂蚁金服”,再转战“阿里”,来自Android工程师个人经历-带面试干货
查看>>
是的,阿里P7,腾讯T4,字节跳动总监都是你家亲戚!!!都在帮你们整理资料!!!
查看>>
小公司的苦恼,最近好郁闷, 年前到现在投了七份简历,面试完后就怀疑人生了
查看>>
Android面试吃透这一篇就够了,没有拿不到的offer!1096页Android学习笔记
查看>>
程序员感叹Android研发面试大厂,没想到这么难
查看>>
关于Android架构,你是否还在生搬硬套?
查看>>
就在上个月,阿里给我发offer了,只因我往简历里多写了“这行字”!!!
查看>>
996加班骗局被揭穿,背后真相值得深思!
查看>>