首页 > 编程语言 >Java 创建一个快捷窗口 用于监控文件夹与打开文件夹

Java 创建一个快捷窗口 用于监控文件夹与打开文件夹

时间:2023-02-01 12:03:49浏览次数:48  
标签:map Java jButtonList text 文件夹 快捷 按钮 new jButton


样式

Java 创建一个快捷窗口 用于监控文件夹与打开文件夹_List

代码结构

Java 创建一个快捷窗口 用于监控文件夹与打开文件夹_java_02

全部代码

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import java.util.*;
import java.util.List;

public class Main extends JFrame {
//设置内边距
Insets insets = new Insets(0, 0, 0, 0);

public Main() {
//标题
setTitle("快捷大开");
//窗口尺寸
setSize(350, 150);
//布局方式 流式布局
setLayout(new FlowLayout(FlowLayout.LEFT));
//读取配置文件
Map<String, String> map = readFile("info/txt/paths.txt");
//button列表用于存放按钮 然后动态设置他的数量
List<JButton> jButtonList = new ArrayList<>();
//遍历Map 配置文件
for (Map.Entry<String, String> entry : map.entrySet()) {
//等号前面的 名称
String mapKey = entry.getKey();
//等号后面的 路径
String mapValue = entry.getValue();
//创建一个按钮
JButton jButton = new JButton(mapKey);
//创建一个字体
Font font = new Font("宋体", Font.PLAIN, 12);
//设置字体
jButton.setFont(font);
//设置内边距
jButton.setMargin(insets);
//给按钮一个点击事件
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
//打开对应文件夹
Desktop.getDesktop().open(new File(mapValue));
} catch (Exception e1) {
throw new RuntimeException(e1);
}
}
});
//把按钮添加到窗口里面
this.add(jButton);
//把按钮添加 列表 用于动态设置文件夹数量
jButtonList.add(jButton);
}
//显示窗口
setVisible(true);
//关闭程序的时候多线程也会退出
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//后台线程动态设置窗口按钮的数据
thread(jButtonList,map);
}

public static void main(String[] args) {
//启动程序
new Main();
}

/**
* 多线程
* @param jButtonList
* @param map
*/
public void thread(List<JButton> jButtonList,Map<String, String> map) {
new Thread(){//创建一个匿名内部类
public void run(){
while (true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//动态设置按钮内容
setButtonName(jButtonList,map);
}

}

}.start();//开启多线程
}

/**
* 设置按钮内容
* @param jButtonList
* @param map
*/
private void setButtonName(List<JButton> jButtonList, Map<String,String> map) {
for(JButton jButton:jButtonList){
//获取按钮上面文字
String text = jButton.getText();
//如果有 [ 就提取 [前面的内容
if(text.indexOf("[")!=-1){
text = text.substring(0,text.indexOf("["));
}
//通过按钮文字获取路径
String s = map.get(text);
if (s!=null) {
//通过路径 获取该路径下有多少个文件
File[] files = new File(s).listFiles();
//设置按钮的文字
jButton.setText(text+"["+files.length+"]");
}

}
}

/**
* 读取记事本文件
* @param filename 记事本路径
* @return 返回一个map
*/
public static Map<String, String> readFile(String filename) {
try {
Map<String, String> map = new HashMap<>();
File file = new File(filename);
Scanner sc = new Scanner(file);
while (sc.hasNextLine()) {
String s = sc.nextLine();
if (s != null && s.indexOf("=") != -1) {
map.put(s.split("=")[0].trim(), s.split("=")[1].trim());
}
}
return map;

} catch (Exception e) {

}
return null;

}


}


标签:map,Java,jButtonList,text,文件夹,快捷,按钮,new,jButton
From: https://blog.51cto.com/u_10780206/6031178

相关文章

  • java synchronized wait notifyAll Thread
    虚假唤醒ifpackagepc;importjava.util.ArrayList;importjava.util.List;importjava.util.Random;publicclassD1{publicstaticvoidmain(String[]args){......
  • java 读写文本
    /****@parampath*@paramcharsetNameutf-8gbk*@return*/publicstaticList<String>readtFile(Stringpath,StringcharsetName){......
  • java字符串拼接逗号分隔
    List<String>a=newArrayList<>();a.add("123");//a.add("3213");//a.add("3213");//a.add("213");//a.add("1......
  • JavaScript奇技淫巧:操控URL
    JavaScript奇技淫巧:操控URL本文展示两种不常见的JS编程技巧:实现操控浏览器窗口,更改父窗口和子窗口的URL地址。修改父窗口URL当使用window.open()打开一个窗口,可以用window.......
  • Guava:google公司开发的一款Java类库扩展工具包
    Guava是google公司开发的一款Java类库扩展工具包文档https://github.com/google/guavahttps://github.com/google/guava/wikihttps://guava.dev/releases/snapshot-jre......
  • 面试官:你说说 JavaScript 中类型的转换机制
    前言面试官:“你说说JavaScript中类型的转换机制”紧张的萌新:“字符串跟其他类型拼接会变成字符串...”面试官:“...”······大家好,我是CoderBin。又来到了面试官......
  • Java中的对集合便利的方式有区别吗
    提问: 问题遇到的现象和发生背景在学习mybatis遍历结果的时候,突然想起有好多种遍历方式,但是我本身并不清楚这些遍历的原理,很难理解他们之间的不同用代码块功能插入代码,请......
  • java对方法进行反射
    1.获取类的class信息2.获取method3.invoke方法执行method 被反射对象```@Data@AllArgsConstructor@NoArgsConstructorpublicclassUser{privateStringid;......
  • JavaScript 中更安全的 URL 读写
    前言URL对于我们开发人员来讲,应该是非常熟悉了。在对URL进行参数拼接时,我们一般都会直接进行字符串拼接或使用模版字符串,因为这样非常方便,但是我们这样其实会在不知不觉中......
  • java:Object是不是泛型?
    我们知道Object是所有类型的父类。可以把任意类型转换成Object来存储。那么Object是不是泛型?当我们需要定义一个变量,用来接收任意类型的变量时,可以不可以将该参数定义为Obj......