当前位置: 首页 > news >正文

3月31号

上一周算法题刷了10道,然后学习了一些鼠标按键知识,创建图形化界面的知识,菜单栏的知识,Math类的常用方法,Runtime,Object的成员方法,implements和extends.

鼠标按键和图形化界面的知识:

首先要创建一个界面和按钮(JButton),将按钮添加到界面上,在按钮上实现鼠标的功能:

1.创建界面,在类里继承JFrame(extends JFrame):(加上this是为了使当前调用的成员变量有唯一界面)

//        设置界面宽高
        this.setSize(770, 770);
//        设置界面标题
        this.setTitle("拼图单机版");
//        设置界面置顶
        this.setAlwaysOnTop(true);
//        设置界面居中
        this.setLocationRelativeTo(null);
//        设置关闭模式
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//        取消默认的居中放置,只有取消了才会按照XY轴的形式添加组件
        this.setLayout(null);
//        显示界面,建议写在最后
        this.setVisible(true);

2.创建按钮(JButton): 

//    创建一个按钮对象
    JButton jtb1 =new JButton("点我呀!");
//    再创建一个按钮对象
    JButton jtb2=new JButton("再点我呀!");
//    设置位置和宽高
    jtb1.setBounds(0,0,100,50);
//    设置位置和宽高
    jtb2.setBounds(200,0,100,50);

3.将按钮添加到图形界面中,同时我们要给按钮绑定鼠标事件:

//    把按钮添加到整个界面当中
    this.getContentPane().add(jtb1);
    this.getContentPane().add(jtb2);
//    给按钮绑定鼠标事件
    jtb1.addMouseListener(this);
    jtb2.addMouseListener(this);

接下来要继承鼠标监听的接口(implements  MouseListene),会出现下面父类方法:

    @Override
    public void mouseClicked(MouseEvent e) {
        System.out.println("单击");
    }
    @Override
    public void mousePressed(MouseEvent e) {
        System.out.println("按下不松");
    }
    @Override
    public void mouseReleased(MouseEvent e) {
        System.out.println("松开");
    }
    @Override
    public void mouseEntered(MouseEvent e) {
        System.out.println("划入");
    }
    @Override
    public void mouseExited(MouseEvent e) {
        System.out.println("划出");
    }

当我们的鼠标在按钮上做出动作时,控制台会给我们提示相应的反应,我们可以在那些父类方法里面改写我们的程序,实现更多的操作.

菜单栏知识:

在做菜单栏前介绍一下组件:

这个是最外层的窗体:JFrame

 这个是最上层的菜单:JMenuBar

这个里面没有字的部分可以放图片和文字,管理文字与图片的容器:JLabel

 功能,关于我们是JMenu.重新登录,重新游戏,关闭游戏,公众号是JMenuItem.

1.首先创建整个菜单(JMenuBar)对象和两个选择对象(JMenu):

//        创建整个菜单对象
        JMenuBar jMenuBar = new JMenuBar();
//        创建菜单上面的两个选择对象(功能 关于我们)
        JMenu functionJMenu = new JMenu("功能");
        JMenu aboutJMenu = new JMenu("关于我们");

2.创建条目对象(JMenuItem):

//    创建选项下面的条目对象
    JMenuItem replayItem=new JMenuItem("重新游戏");
    JMenuItem reLoginItem=new JMenuItem("重新登录");
    JMenuItem closeItem=new JMenuItem("关闭游戏");
    JMenuItem accountItem=new JMenuItem("公众号");

3.将条目添加到选择对象中,选择对象加到菜单栏中,菜单栏添加到界面中:

//    将每一个选项下面的条目添加到选项当中
    functionJMenu.add(replayItem);
    functionJMenu.add(reLoginItem);
    functionJMenu.add(closeItem);
    aboutJMenu.add(accountItem);

//    将菜单里面的两个选项添加到菜单当中
    jMenuBar.add(functionJMenu);
    jMenuBar.add(aboutJMenu);

//    给整个界面设置菜单
    this.setJMenuBar(jMenuBar);

Math常用方法:

//        进一法,往数轴的正方形进一
        System.out.println(Math.ceil(12.34));//13.0
        System.out.println(Math.ceil(-12.34));//-12.0
 
        System.out.println("-------------------------");
 
//        去尾法
        System.out.println(Math.floor(12.34));//12.0
        System.out.println(Math.floor(-12.33));//-13.0
 
        System.out.println("-------------------------");
 
//        四舍五入
        System.out.println(Math.round(12.34));//12.0
        System.out.println(Math.round(12.54));//13.0
 
        System.out.println("-------------------------");
        
//        获得最大值,最小值
        System.out.println(Math.max(-12,34));//34
        System.out.println(Math.min(12,34));//12

补充:

public static double sqrt(double a)//返回a的平方根

public stdtic double cbrt(double b)//返回b的立方根

 

 Runtime:

//        获取Runtime的对象
        Runtime r1 = Runtime.getRuntime();
        Runtime r2 = Runtime.getRuntime();
        System.out.println(r1==r2);
 
//        exit停止虚拟机
        r1.exit(0);
        System.out.println("看看我执行了吗");//发现不运行直接退出了
 
//        获取CPU的线程数
        System.out.println(Runtime.getRuntime().availableProcessors());
 
//        总内存的大小,单位是byte字节
        System.out.println(Runtime.getRuntime().maxMemory());
 
//        已经获取的总内存大小
        System.out.println(Runtime.getRuntime().totalMemory());
 
//        剩余内存的大小
        System.out.println(Runtime.getRuntime().freeMemory());
 
//        运行cmd命令
//        shutdown:关机
//        加上参数才能运行
//        -s:默认在1分钟之后关闭
//        -s -t 指定时间:指定关键时间
//        -a 取消关键操作
//        -r 关机并重启
        Runtime.getRuntime().exec("notepad");//打开记事本
        Runtime.getRuntime().exec("shutdown -s -t 3600");//一个小时后自动关机
        Runtime.getRuntime().exec("shutdown -a");//取消关机

Object的成员方法: 

//        1.toString 返回对象的字符串表示形式
        Object obj=new Object();
        String str1=obj.toString();
        System.out.println(str1);//java.lang.Object@b4c966a
 
//        核心逻辑:
//        当我们打印一个对象的时候,底层会调用对象的toString方法,把对象变成字符串
//        然后再打印在控制台上,打印完毕换行处理
        System.out.println(obj);//java.lang.Object@b4c966a

     toStrin方法的结论:   如果我们打印一个对象,想要看到属性值的话,那么就重写toString方法就可以了,在重写过程中,把对象的属性值进行比较 

//        public boolean equals(Object obj)  比较两个对象是否相等
        String s1=new String();
        String s2=new String();
 
        boolean result1=s1.equals(s2);
        System.out.println(result1);//true
 

     结论:   1.如果没有重写equals方法,那么默认使用Object中的方法进行比较,比较的是地址值是否相等  2.一般来讲地址值对我们意义不大,所以我们会重写,重写之后比较的就是对象内部的属性值了

        String s="abc";
        StringBuffer sb=new StringBuffer("abc");
 
        System.out.println(s.equals(sb));//false
//        因为equals方法是被s调用的,而s是字符串
//        所以equals要看String类中的
//        字符串中的equals方法,先判断参数是否为字符串
//        如果是字符串,再比较内部的属性
//        但是如果参数不是字符串,直接返回false
        System.out.println(sb.equals(s));//false
//        因为equals方法是被sb调用的,而sb是stringBuilder
//        所以这里的equals方法要看stringBuilder中的equals方法
//        那么在stringBuilder当中,没有重写equals方法
//        使用的是object中的
//        在Object当中默认是使用==号比较两个对象的地址值
//        面这里的s和sb记录的地址值是不一样的,所以结果返回false

implements和extends:

 1. extends(继承类):
用途:用于类继承另一个类(单继承),或者接口继承另一个接口(多继承).eg.extends JFrame
特点:一个类只能 extends一个父类(Java 是单继承). 一个接口可以 extends多个父接口(接口支持多继承).

2. implements(实现接口):
用途:用于类实现一个或多个接口。eg.implement KeyListener,ActionListener

特点:一个类可以 implements多个接口(弥补了单继承的不足). 实现接口的类必须重写接口中的所有抽象方法(除非该类是抽象类).

相关文章:

  • lib-zo,C语言另一个协程库,激活文件IO操作协程化
  • http知识点
  • 2025年浙江省中等职业学校职业能力大赛(学生技术技能类)“移动应用与开发”赛项技术文件
  • FFTW库在vs2022下编译lib库及在QT6.8中调用
  • LeetCode hot 100—二叉搜索树中第K小的元素
  • 【VUE2】综合练习——智慧商城
  • visio导出pdf公式变形
  • Embedding原理
  • zk基础—1.一致性原理和算法一
  • 《算法:递归+记忆化搜索》
  • 【计算机视觉】OpenCV实战项目- 抖音动态小表情
  • ESP32移植Openharmony外设篇(11) mfrc522射频读卡器
  • 数据处理与机器学习入门
  • MyBatisPlus不等于如何使用
  • qml 中的anchors
  • dfs复习
  • 内核自旋锁
  • 从0到1:Rust 如何用 FFmpeg 和 OpenGL 打造硬核视频特效
  • 如何使用分块策略生成高覆盖率测试用例:需求文档与接口文档的最佳实践
  • 力扣125.验证回文串
  • 江门市网站建设 熊掌号/网站怎么弄
  • 北京做网站那家好/宁波seo推广如何收费
  • 真做视频网站/seo关键词分析表
  • 江苏省建设信息网/济南seo小黑seo
  • 重庆公司网站建设价格/网络营销理论包括哪些
  • php动态网站开发环境/百度网盘客服