很多外挂都用java写,因为java是运行在java虚拟机上(jvm),检测不到,它只能检测到jvm在运行,它又不可能删掉jvm,但是用c写的话它就可以直接检测到exe了
不过快淘汰了
GUI核心开发技术:Swing,AWT(不流行原因:界面不美观、需要jre环境)
学习原因:这是MVC的基础,写带图形界面的小工具,工作时极小概率需要维护swing
我:毕竟要学android编程和逆向
1 | Frame frame=new Frame("我的第一个java图形界面窗口"); //设置标题 |
然后就是可以自己做一个frame
1 | import java.awt.*; |
Panel面板:
1 | package com.kuang.lesson01; |
按钮
1 | Frame frame = new Frame(); |
frame.setLayout(new FlowLayout());
流式布局(截取自:https://www.jianshu.com/p/4a6e5162e4ee )
移动端一般采用流式布局(百分比布局)
- 高度定死,宽度自适应
- 对于大的轮播图等,宽度100%自适应
- 对于小图标挥着文本,一般都是固定宽高大小
流式布局的缺点: 对于大屏幕来说,用户体验并不是特别好,有些布局元素会显得很长
解决方案: rem布局(宽高自适应)
经典的流式布局 - 左侧固定,右侧自适应
- 右侧固定左侧自适应
- 两侧固定,中间自适应(圣杯布局)
- 等分布局
还有“东西南北中”和“表格”的布局
也可以使用frame.pack();
,作用是自动选中最合适的布局
事件监听
1 | public class TestFrame { |
文本监听
1 | TextField textfield = new TextField(); |
然后在所调用的函数(MyActionListener方法的actionPerformed函数)中获取输入内容:
1 | TextField field = (TextField) e.getSource(); //获得一些资源 |
画笔paint事件
(MyActionListener方法的paint函数)
1 | public void paint(Graphics g){ |
监听鼠标键盘
重写:(类名为MyFrame)this.MouseListener(MyMouseListener);
1 | //适配器模式 |
刷新:frame.repaint();
窗口监听:写WindowAdapter类
可以用setVisible(false);//隐藏窗口
,System.exit(0);//正常退出
(但是这里用了隐藏窗口之后其实是一直在运行的,但是却无法再打开这个窗口了,而因为java的特性所有的东西都在jvm虚拟机中运行,进程中只会看见一个jvm,完全可以用来当木马来使用)
键盘监听:
1 | frame.addKeyListener(new KeyAdapter(){ |
(学完p20,后面的实操略)