本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
6分39秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 步骤 1 : 简单的例子 步骤 2 : 练习-在上次关闭位置启动窗口 步骤 3 : 答案-在上次关闭位置启动窗口
JFrame是GUI中的容器
JButton是最常见的组件- 按钮 注意:f.setVisible(true); 会对所有的组件进行渲染,所以一定要放在最后面 package gui;
import javax.swing.JButton;
import javax.swing.JFrame;
public class TestGUI {
public static void main(String[] args) {
// 主窗体
JFrame f = new JFrame("LoL");
// 主窗体设置大小
f.setSize(400, 300);
// 主窗体设置位置
f.setLocation(200, 200);
// 主窗体中的组件设置为绝对定位
f.setLayout(null);
// 按钮组件
JButton b = new JButton("一键秒对方基地挂");
// 同时设置组件的大小和位置
b.setBounds(50, 50, 280, 30);
// 把按钮加入到主窗体中
f.add(b);
// 关闭窗体的时候,退出程序
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 让窗体变得可见
f.setVisible(true);
}
}
比如这次使用这个窗口,导致窗口被移动到了右下角。 关闭这个窗口,下一次再启动的时候,就会自动出现在右下角。
思路提示: 启动一个线程,每个100毫秒读取当前的位置信息,保存在文件中,比如location.txt文件。 启动的时候,从这个文件中读取位置信息,如果是空的,就使用默认位置,如果不是空的,就把位置信息设置在窗口上。 读取位置信息的办法: f.getX() 读取横坐标信息,f.getY()读取纵坐标信息。 注:这个练习要求使用多线程来完成。 还有另一个思路来完成,就是使用监听器,因为刚开始学习GUI,还没有掌握监听器的使用,所以暂时使用多线程来完成这个功能。
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
5分10秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器
package gui;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import javax.swing.JFrame;
class SavingPostionThread extends Thread {
private JFrame f;
File file = new File("e:/project/j2se/location.txt");
SavingPostionThread(JFrame f) {
this.f = f;
}
public void run() {
while (true) {
int x = f.getX();
int y = f.getY();
try (FileOutputStream fos = new FileOutputStream(file);
DataOutputStream dos = new DataOutputStream(fos);) {
dos.writeInt(x);
dos.writeInt(y);
} catch (Exception e) {
e.printStackTrace();
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
package gui;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
public class TestGUI {
public static void main(String[] args) {
// 主窗体
JFrame f = new JFrame("LoL");
// 主窗体设置大小
f.setSize(400, 300);
// 主窗体设置位置
Point p =getPointFromLocationFile();
if(p!=null)
f.setLocation(p.x,p.y);
else
f.setLocation(200, 200);
// 主窗体中的组件设置为绝对定位
f.setLayout(null);
// 按钮组件
JButton b = new JButton("一键秒对方基地挂");
// 同时设置组件的大小和位置
b.setBounds(50, 50, 280, 30);
// 把按钮加入到主窗体中
f.add(b);
// 关闭窗体的时候,退出程序
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 让窗体变得可见
f.setVisible(true);
new SavingPostionThread(f).start();
}
static class Point {
int x;
int y;
}
public static Point getPointFromLocationFile() {
File file = new File("e:/project/j2se/location.txt");
Point p = null;
try (FileInputStream fis = new FileInputStream(file); DataInputStream dis = new DataInputStream(fis);) {
int x = dis.readInt();
int y = dis.readInt();
p = new Point();
p.x = x;
p.y = y;
} catch (FileNotFoundException e) {
//第一次运行,并没有生成位置文件,所以会出现FileNotFoundException
} catch (IOException e1) {
e1.printStackTrace();
}
return p;
}
}
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2024-07-16
多线程方法实现读取上一次文件位置并修改的功能
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2024-01-29
练习 - 在上次关闭位置启动窗口
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2023-09-02
练习-在上次关闭位置启动窗口
2022-05-08
阿夜来打卡
2022-04-11
请问现在有公司用这个技术吗
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 41 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|