2023年5月17日16:40:02

master
zhangmeng 2023-05-17 16:41:05 +08:00
parent 0000aab742
commit 7390de076c
16 changed files with 543 additions and 16 deletions

View File

@ -211,6 +211,13 @@
<version>19</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.openjfx/javafx-swing -->
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-swing</artifactId>
<version>19</version>
</dependency>
<dependency>
<groupId>com.github.leewyatt</groupId>
<artifactId>rxcontrols</artifactId>

View File

@ -0,0 +1,260 @@
package com.zhangmeng.tools.controller;
import javafx.embed.swing.SwingFXUtils;
import javafx.fxml.FXML;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.image.ImageView;
import javafx.scene.image.WritableImage;
import javafx.scene.input.*;
import javafx.scene.layout.*;
import javafx.scene.paint.Paint;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import lombok.extern.slf4j.Slf4j;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
/**
* @author :
* @version : 1.0
* @date : 2023-05-17 14:29
*/
@Slf4j
public class CapterScreenController {
@FXML
public Button bu;
@FXML
public AnchorPane iv_root;
@FXML
private ImageView iv; //切成的图片展示区域
private Stage primaryStage; //主舞台
private Stage stage; //切图时候的辅助舞台
private double start_x; //切图区域的起始位置x
private double start_y; //切图区域的起始位置y
private double w; //切图区域宽
private double h; //切图区域高
private HBox hBox; //切图区域
@FXML
public void initialize() {
iv_root.setBorder(new Border(new BorderStroke(Paint.valueOf("#c03700"), BorderStrokeStyle.SOLID,
null, new BorderWidths(1))));
//为点击截图按钮绑定事件
bu.setOnAction(event -> {
show();
});
//绑定截图快捷键,使用快捷键达到点击按钮的目的
KeyCombination keyCombination = KeyCombination.valueOf("ctrl+alt+p");
// 处理快捷键事件
Runnable action = this::show;
bu.setOnKeyPressed(event -> {
if (keyCombination.match(event)) {
action.run();
event.consume();
}
});
}
/**
*
*/
public void show() {
this.primaryStage = (Stage) bu.getScene().getWindow();
//将主舞台缩放到任务栏
primaryStage.setIconified(true);
//创建辅助舞台,并设置场景与布局
stage = new Stage();
//锚点布局采用半透明
AnchorPane anchorPane = new AnchorPane();
anchorPane.setStyle("-fx-background-color: #85858522");
//场景设置白色全透明
Scene scene = new Scene(anchorPane);
scene.setFill(Paint.valueOf("#ffffff00"));
stage.setScene(scene);
//清楚全屏中间提示文字
stage.setFullScreenExitHint("");
stage.initStyle(StageStyle.TRANSPARENT);
stage.setFullScreen(true);
stage.show();
//切图窗口绑定鼠标按下事件
anchorPane.setOnMousePressed(event -> {
//清除锚点布局中所有子元素
anchorPane.getChildren().clear();
//创建切图区域
hBox = new HBox();
//设置背景保证能看到切图区域桌面
hBox.setBackground(null);
//设置边框
hBox.setBorder(new Border(new BorderStroke(Paint.valueOf("#c03700"), BorderStrokeStyle.SOLID,
null, new BorderWidths(1))));
anchorPane.getChildren().add(hBox);
//记录并设置起始位置
start_x = event.getSceneX();
start_y = event.getSceneY();
AnchorPane.setLeftAnchor(hBox, start_x);
AnchorPane.setTopAnchor(hBox, start_y);
});
//绑定鼠标按下拖拽的事件
anchorPane.setOnMouseDragged(event -> {
//用label记录切图区域的长宽
Label label = new Label();
label.setAlignment(Pos.CENTER);
label.setPrefHeight(30);
label.setPrefWidth(170);
anchorPane.getChildren().add(label);
AnchorPane.setLeftAnchor(label, start_x + 30);
AnchorPane.setTopAnchor(label, start_y);
label.setTextFill(Paint.valueOf("#ffffff"));//白色填充
label.setStyle("-fx-background-color: #000000");//黑背景
//计算宽高并且完成切图区域的动态效果
w = Math.abs(event.getSceneX() - start_x);
h = Math.abs(event.getSceneY() - start_y);
hBox.setPrefWidth(w);
hBox.setPrefHeight(h);
label.setText("宽:" + w + " 高:" + h);
});
//绑定鼠标松开事件
anchorPane.setOnMouseReleased(event -> {
//记录最终长宽
w = Math.abs(event.getSceneX() - start_x);
h = Math.abs(event.getSceneY() - start_y);
anchorPane.setStyle("-fx-background-color: #00000000");
//添加剪切按钮,并显示在切图区域的底部
Button b = new Button("剪切");
hBox.setBorder(new Border(new BorderStroke(Paint.valueOf("#85858544"), BorderStrokeStyle.SOLID,
null, new BorderWidths(1))));
//绑定截图快捷键,使用快捷键达到点击按钮的目的
KeyCombination keyCombination = new KeyCodeCombination(KeyCode.C, KeyCombination.CONTROL_DOWN);
Runnable action = () -> {
// 处理快捷键事件
//切图辅助舞台小时
stage.close();
try {
//切图具体方法
capterImg();
} catch (Exception e) {
e.printStackTrace();
}
//主舞台还原
primaryStage.setIconified(false);
};
b.setOnKeyPressed(e -> {
if (keyCombination.match(e)) {
action.run();
e.consume();
}
});
hBox.getChildren().add(b);
hBox.setAlignment(Pos.BOTTOM_RIGHT);
//为切图按钮绑定切图事件
b.setOnAction(event1 -> {
//切图辅助舞台小时
stage.close();
try {
//切图具体方法
capterImg();
} catch (Exception e) {
e.printStackTrace();
}
//主舞台还原
primaryStage.setIconified(false);
});
});
scene.setOnKeyPressed(event -> {
if (event.getCode() == KeyCode.ESCAPE) {
stage.close();
primaryStage.setIconified(false);
}
});
}
/**
*
*
* @throws Exception
*/
public void capterImg() throws Exception {
//利用awt中的方法通过记录的起始点和长宽完成屏幕截图
Robot robot = new Robot();
Rectangle re = new Rectangle((int) start_x, (int) start_y, (int) w, (int) h);
BufferedImage screenCapture = robot.createScreenCapture(re);
//截图图片背景透明处理
//BufferedImage bufferedImage = transferAlpha(screenCapture);
//不进行背景透明处理
//转换图片格式展示在主舞台的场景中
WritableImage writableImage = SwingFXUtils.toFXImage(screenCapture, null);
iv.setFitWidth(iv_root.getPrefWidth() + 150);
iv.setFitHeight(iv_root.getPrefHeight() + 120 );
iv.setImage(writableImage);
//将截图内容,放入系统剪切板
Clipboard cb = Clipboard.getSystemClipboard();
ClipboardContent content = new ClipboardContent();
content.putImage(writableImage);
cb.setContent(content);
//将截取图片放入到系统固定位置
ImageIO.write(screenCapture, "png", new File("E:/capter.png"));
}
/**
*
*
* @param img
* @return
*/
public static BufferedImage transferAlpha(BufferedImage img) {
BufferedImage bufferedImage = null;
try {
//取左上角点作为背景点
int RGB = img.getRGB(img.getMinX(), img.getMinY());
int R = (RGB & 0xff0000) >> 16;
int G = (RGB & 0xff00) >> 8;
int B = (RGB & 0xff);
bufferedImage = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB);
for (int j1 = img.getMinY(); j1 < img.getHeight(); j1++) {
//遍历一行中的rgb三通道像素点
for (int j2 = img.getMinX(); j2 < img.getWidth(); j2++) {
//获取固定点的rgb值
int rgb = img.getRGB(j2, j1);
int r = (rgb & 0xff0000) >> 16;
int g = (rgb & 0xff00) >> 8;
int b = (rgb & 0xff);
if ((Math.abs(r - R) < 15) && (Math.abs(g - G) < 15) && (Math.abs(b - B) < 15)) {
rgb = (1 << 24) | (rgb & 0x00ffffff);
}
//设置固定点的rgb值
bufferedImage.setRGB(j2, j1, rgb);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return bufferedImage;
}
}

View File

@ -564,26 +564,50 @@ public class CodecToolsController {
}
public void jks_file_menu_item(ActionEvent event) {
load_encrypt(2);
}
public void music_parser_menu_item(ActionEvent event) {
load_player(3);
}
public void word_ocr_menu_item(ActionEvent event) {
load_small_tools(11);
}
public void bar_code_menu_item(ActionEvent event) {
load_small_tools(12);
}
public void pdf_menu_item(ActionEvent event) {
load_small_tools(13);
}
public void batch_update_file_name_menu_item(ActionEvent event) {
load_small_tools(14);
}
public void capter_screen_menu_item(ActionEvent event) {
load_small_tools(15);
}
public void json_javabean_gen_menu_item(ActionEvent event) {
load_sql_tools(2);
}
public void socket_client_aio_menu_item(ActionEvent event) {
load_server_tools(4);
}
public void socket_server_aio_menu_item(ActionEvent event) {
load_server_tools(5);
}
public void socket_server_nio_menu_item(ActionEvent event) {
load_server_tools(6);
}
public void socket_client_nio_menu_item(ActionEvent event) {
load_server_tools(7);
}
}

View File

@ -562,4 +562,8 @@ public class HomeController implements Serializable {
public void socket_client_nio_menu_item(ActionEvent event) {
load_server_tools(7);
}
public void capter_screen_menu_item(ActionEvent event) {
load_small_tools(14);
}
}

View File

@ -498,4 +498,32 @@ public class HttpToolsController {
public void maven_jar_install_menu_item(ActionEvent event) {
load_small_tools(10);
}
public void jks_file_menu_item(ActionEvent event) {
load_encrypt(2);
}
public void music_parser_menu_item(ActionEvent event) {
load_player(3);
}
public void word_ocr_menu_item(ActionEvent event) {
load_small_tools(11);
}
public void bar_code_menu_item(ActionEvent event) {
load_small_tools(12);
}
public void pdf_menu_item(ActionEvent event) {
load_small_tools(13);
}
public void batch_update_file_name_menu_item(ActionEvent event) {
load_small_tools(14);
}
public void capter_screen_menu_item(ActionEvent event) {
load_small_tools(15);
}
}

View File

@ -430,4 +430,32 @@ public class NetWorkToolsController {
public void maven_jar_install_menu_item(ActionEvent event) {
load_small_tools(10);
}
public void jks_file_menu_item(ActionEvent event) {
load_encrypt_tools(2);
}
public void music_parser_menu_item(ActionEvent event) {
load_player(3);
}
public void word_ocr_menu_item(ActionEvent event) {
load_small_tools(11);
}
public void bar_code_menu_item(ActionEvent event) {
load_small_tools(12);
}
public void pdf_menu_item(ActionEvent event) {
load_small_tools(13);
}
public void batch_update_file_name_menu_item(ActionEvent event) {
load_small_tools(14);
}
public void capter_screen_menu_item(ActionEvent event) {
load_small_tools(15);
}
}

View File

@ -82,6 +82,7 @@ public class SmallToolsController {
private AnchorPane bar_code;
private AnchorPane pdf_ocr;
private AnchorPane batch_update_file_name;
private AnchorPane capter_screen;
@FXML
private ListView<ResourcesUtils.SmallTools> listView;
@ -394,6 +395,20 @@ public class SmallToolsController {
}
pdf_ocr(flag);
}
if (newValue.getIndex() == 14) {
if (batch_update_file_name != null) {
flag = true;
}
batch_update_file_name(flag);
}
if (newValue.getIndex() == 15) {
if (capter_screen != null) {
flag = true;
}
capter_screen(flag);
}
}
});
}
@ -418,6 +433,7 @@ public class SmallToolsController {
case Bar_Code -> new Image(ImagePath.path(ImagePath.ImagePathType.Qr_CODE));
case Pdf_Ocr -> new Image(ImagePath.path(ImagePath.ImagePathType.Qr_CODE));
case BatchUpdateFileName -> new Image(ImagePath.path(ImagePath.ImagePathType.Qr_CODE));
case Capter_Screent -> new Image(ImagePath.path(ImagePath.ImagePathType.Qr_CODE));
};
}
@ -734,6 +750,22 @@ public class SmallToolsController {
common_method();
}
public void capter_screen(boolean flag){
//默认选择第一个
listView.getSelectionModel().select(15);
if (!flag) {
try {
root = FXMLLoader.load(ResourcesUtils.getResource("capter-screen"));
} catch (IOException e) {
e.printStackTrace();
}
batch_update_file_name = root;
} else {
root = batch_update_file_name;
}
common_method();
}
private void common_method() {
splitPane.getItems().remove(1);
@ -910,4 +942,40 @@ public class SmallToolsController {
}
pdf_ocr(flag);
}
public void capter_screen_menu_item(ActionEvent event) {
boolean flag = false;
if (capter_screen != null){
flag = true;
}
capter_screen(flag);
}
public void jks_file_menu_item(ActionEvent event) {
load_encrypt(2);
}
public void music_parser_menu_item(ActionEvent event) {
load_player(3);
}
public void json_javabean_gen_menu_item(ActionEvent event) {
load_mysql_tools(2);
}
public void socket_client_aio_menu_item(ActionEvent event) {
load_server_tools(4);
}
public void socket_server_aio_menu_item(ActionEvent event) {
load_server_tools(5);
}
public void socket_server_nio_menu_item(ActionEvent event) {
load_server_tools(6);
}
public void socket_client_nio_menu_item(ActionEvent event) {
load_server_tools(7);
}
}

View File

@ -506,4 +506,48 @@ public class SqlToolsController {
public void spring_security_menu_item(ActionEvent event) {
load_codec_tools(1);
}
public void jks_file_menu_item(ActionEvent event) {
load_codec_tools(2);
}
public void music_parser_menu_item(ActionEvent event) {
load_player(3);
}
public void word_ocr_menu_item(ActionEvent event) {
load_small_tools(11);
}
public void bar_code_menu_item(ActionEvent event) {
load_small_tools(12);
}
public void pdf_menu_item(ActionEvent event) {
load_small_tools(13);
}
public void batch_update_file_name_menu_item(ActionEvent event) {
load_small_tools(14);
}
public void capter_screen_menu_item(ActionEvent event) {
load_small_tools(15);
}
public void socket_client_aio_menu_item(ActionEvent event) {
load_server_tools(4);
}
public void socket_server_aio_menu_item(ActionEvent event) {
load_server_tools(5);
}
public void socket_server_nio_menu_item(ActionEvent event) {
load_server_tools(6);
}
public void socket_client_nio_menu_item(ActionEvent event) {
load_server_tools(7);
}
}

View File

@ -130,6 +130,7 @@ public class ResourcesUtils {
Bar_Code("条形码识别", 12),
Pdf_Ocr("pdf识别", 13),
BatchUpdateFileName("批量修改文件名", 14),
Capter_Screent("截图", 15),
;
SmallTools(String title, int index) {

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane prefHeight="649.0" prefWidth="1200.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.zhangmeng.tools.controller.CapterScreenController">
<children>
<Button fx:id="bu" layoutX="1117.0" layoutY="604.0" mnemonicParsing="false" text="点击截屏" AnchorPane.bottomAnchor="20.0" AnchorPane.rightAnchor="19.0" />
<AnchorPane fx:id="iv_root" prefHeight="649.0" prefWidth="1200.0" AnchorPane.bottomAnchor="59.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<ImageView fx:id="iv" fitHeight="590.0" fitWidth="1200.0" pickOnBounds="true" />
</children>
</AnchorPane>
</children>
</AnchorPane>

View File

@ -45,6 +45,7 @@
<MenuItem mnemonicParsing="false" text="条形码识别" onAction="#bar_code_menu_item"/>
<MenuItem mnemonicParsing="false" text="pdf识别" onAction="#pdf_menu_item"/>
<MenuItem mnemonicParsing="false" text="批量修改文件名" onAction="#batch_update_file_name_menu_item"/>
<MenuItem mnemonicParsing="false" text="截图工具" onAction="#capter_screen_menu_item"/>
</items>
</Menu>

View File

@ -47,6 +47,7 @@
<MenuItem mnemonicParsing="false" text="条形码识别" onAction="#bar_code_menu_item"/>
<MenuItem mnemonicParsing="false" text="pdf识别" onAction="#pdf_menu_item"/>
<MenuItem mnemonicParsing="false" text="批量修改文件名" onAction="#batch_update_file_name_menu_item"/>
<MenuItem mnemonicParsing="false" text="截图工具" onAction="#capter_screen_menu_item"/>
</items>
</Menu>

View File

@ -17,8 +17,9 @@
<Menu mnemonicParsing="false" text="加密工具">
<items>
<MenuItem mnemonicParsing="false" onAction="#md5_menu_item" text="md5 加密"/>
<MenuItem mnemonicParsing="false" onAction="#spring_security_menu_item"
text="spring security 加密"/>
<MenuItem mnemonicParsing="false" onAction="#spring_security_menu_item" text="spring security 加密"/>
<MenuItem mnemonicParsing="false" onAction="#jks_file_menu_item" text="jkd 文件生成"/>
</items>
</Menu>
<Menu mnemonicParsing="false" text="影音工具">
@ -26,6 +27,7 @@
<MenuItem mnemonicParsing="false" text="视频播放" onAction="#video_menu_item"/>
<MenuItem mnemonicParsing="false" text="音乐播放" onAction="#music_menu_item"/>
<MenuItem mnemonicParsing="false" text="vip 视频解析" onAction="#vip_parser_menu_item"/>
<MenuItem mnemonicParsing="false" text="音乐解析" onAction="#music_parser_menu_item"/>
</items>
</Menu>
<Menu mnemonicParsing="false" text="常用小工具">
@ -41,6 +43,11 @@
<MenuItem mnemonicParsing="false" text="手机号工具" onAction="#telephone_menu_item"/>
<MenuItem mnemonicParsing="false" text="JsonView" onAction="#JsonView_menu_item"/>
<MenuItem mnemonicParsing="false" text="maven-jar-install" onAction="#maven_jar_install_menu_item"/>
<MenuItem mnemonicParsing="false" text="word-ocr" onAction="#word_ocr_menu_item"/>
<MenuItem mnemonicParsing="false" text="条形码识别" onAction="#bar_code_menu_item"/>
<MenuItem mnemonicParsing="false" text="pdf识别" onAction="#pdf_menu_item"/>
<MenuItem mnemonicParsing="false" text="批量修改文件名" onAction="#batch_update_file_name_menu_item"/>
<MenuItem mnemonicParsing="false" text="截图工具" onAction="#capter_screen_menu_item"/>
</items>
</Menu>
@ -53,10 +60,11 @@
</items>
</Menu>
<Menu mnemonicParsing="false" text="sql工具">
<Menu mnemonicParsing="false" text="代码工具">
<items>
<MenuItem mnemonicParsing="false" text="mysql代码生成" onAction="#sql_code_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="mybatis-plus 代码生成" onAction="#mybatis_plus_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="json转javaBean 代码生成" onAction="#json_javabean_gen_menu_item"/>
</items>
</Menu>
@ -72,8 +80,12 @@
<items>
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 连接工具" onAction="#ssh_client_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server 服务工具" onAction="#socket_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-client-aio 客户端工具" onAction="#socket_client_aio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server-aio 服务端工具" onAction="#socket_server_aio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server-nio 服务端工具" onAction="#socket_server_nio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-client-nio 客户端工具" onAction="#socket_client_nio_menu_item"/>
</items>
</Menu>
</menus>

View File

@ -17,8 +17,9 @@
<Menu mnemonicParsing="false" text="加密工具">
<items>
<MenuItem mnemonicParsing="false" onAction="#md5_menu_item" text="md5 加密"/>
<MenuItem mnemonicParsing="false" onAction="#spring_security_menu_item"
text="spring security 加密"/>
<MenuItem mnemonicParsing="false" onAction="#spring_security_menu_item" text="spring security 加密"/>
<MenuItem mnemonicParsing="false" onAction="#jks_file_menu_item" text="jkd 文件生成"/>
</items>
</Menu>
<Menu mnemonicParsing="false" text="影音工具">
@ -26,6 +27,7 @@
<MenuItem mnemonicParsing="false" text="视频播放" onAction="#video_menu_item"/>
<MenuItem mnemonicParsing="false" text="音乐播放" onAction="#music_menu_item"/>
<MenuItem mnemonicParsing="false" text="vip 视频解析" onAction="#vip_parser_menu_item"/>
<MenuItem mnemonicParsing="false" text="音乐解析" onAction="#music_parser_menu_item"/>
</items>
</Menu>
<Menu mnemonicParsing="false" text="常用小工具">
@ -41,6 +43,11 @@
<MenuItem mnemonicParsing="false" text="手机号工具" onAction="#telephone_menu_item"/>
<MenuItem mnemonicParsing="false" text="JsonView" onAction="#JsonView_menu_item"/>
<MenuItem mnemonicParsing="false" text="maven-jar-install" onAction="#maven_jar_install_menu_item"/>
<MenuItem mnemonicParsing="false" text="word-ocr" onAction="#word_ocr_menu_item"/>
<MenuItem mnemonicParsing="false" text="条形码识别" onAction="#bar_code_menu_item"/>
<MenuItem mnemonicParsing="false" text="pdf识别" onAction="#pdf_menu_item"/>
<MenuItem mnemonicParsing="false" text="批量修改文件名" onAction="#batch_update_file_name_menu_item"/>
<MenuItem mnemonicParsing="false" text="截图工具" onAction="#capter_screen_menu_item"/>
</items>
</Menu>
@ -53,9 +60,11 @@
</items>
</Menu>
<Menu mnemonicParsing="false" text="sql工具">
<Menu mnemonicParsing="false" text="代码工具">
<items>
<MenuItem mnemonicParsing="false" text="mysql代码生成" onAction="#sql_code_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="mybatis-plus 代码生成" onAction="#mybatis_plus_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="json转javaBean 代码生成" onAction="#json_javabean_gen_menu_item"/>
</items>
</Menu>
@ -73,6 +82,10 @@
<MenuItem mnemonicParsing="false" text="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server 服务工具" onAction="#socket_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-client-aio 客户端工具" onAction="#socket_client_aio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server-aio 服务端工具" onAction="#socket_server_aio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server-nio 服务端工具" onAction="#socket_server_nio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-client-nio 客户端工具" onAction="#socket_client_nio_menu_item"/>
</items>
</Menu>
</menus>

View File

@ -15,8 +15,9 @@
<Menu mnemonicParsing="false" text="加密工具">
<items>
<MenuItem mnemonicParsing="false" onAction="#md5_menu_item" text="md5 加密"/>
<MenuItem mnemonicParsing="false" onAction="#spring_security_menu_item"
text="spring security 加密"/>
<MenuItem mnemonicParsing="false" onAction="#spring_security_menu_item" text="spring security 加密"/>
<MenuItem mnemonicParsing="false" onAction="#jks_file_menu_item" text="jkd 文件生成"/>
</items>
</Menu>
<Menu mnemonicParsing="false" text="影音工具">
@ -24,6 +25,7 @@
<MenuItem mnemonicParsing="false" text="视频播放" onAction="#video_menu_item"/>
<MenuItem mnemonicParsing="false" text="音乐播放" onAction="#music_menu_item"/>
<MenuItem mnemonicParsing="false" text="vip 视频解析" onAction="#vip_parser_menu_item"/>
<MenuItem mnemonicParsing="false" text="音乐解析" onAction="#music_parser_menu_item"/>
</items>
</Menu>
<Menu mnemonicParsing="false" text="常用小工具">
@ -43,6 +45,7 @@
<MenuItem mnemonicParsing="false" text="条形码识别" onAction="#bar_code_menu_item"/>
<MenuItem mnemonicParsing="false" text="pdf识别" onAction="#pdf_menu_item"/>
<MenuItem mnemonicParsing="false" text="批量修改文件名" onAction="#batch_update_file_name_menu_item"/>
<MenuItem mnemonicParsing="false" text="截图工具" onAction="#capter_screen_menu_item"/>
</items>
</Menu>
@ -55,10 +58,11 @@
</items>
</Menu>
<Menu mnemonicParsing="false" text="sql工具">
<Menu mnemonicParsing="false" text="代码工具">
<items>
<MenuItem mnemonicParsing="false" text="mysql代码生成" onAction="#sql_code_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="mybatis-plus 代码生成" onAction="#mybatis_plus_gen_menu_item"/>
<MenuItem mnemonicParsing="false" text="json转javaBean 代码生成" onAction="#json_javabean_gen_menu_item"/>
</items>
</Menu>
@ -74,8 +78,12 @@
<items>
<MenuItem mnemonicParsing="false" text="http-server 请求工具" onAction="#http_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 连接工具" onAction="#ssh_client_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server 服务工具" onAction="#socket_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-client-aio 客户端工具" onAction="#socket_client_aio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server-aio 服务端工具" onAction="#socket_server_aio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server-nio 服务端工具" onAction="#socket_server_nio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-client-nio 客户端工具" onAction="#socket_client_nio_menu_item"/>
</items>
</Menu>
</menus>

View File

@ -18,6 +18,8 @@
<items>
<MenuItem mnemonicParsing="false" onAction="#md5_menu_item" text="md5 加密"/>
<MenuItem mnemonicParsing="false" onAction="#spring_security_menu_item" text="spring security 加密"/>
<MenuItem mnemonicParsing="false" onAction="#jks_file_menu_item" text="jkd 文件生成"/>
</items>
</Menu>
<Menu mnemonicParsing="false" text="影音工具">
@ -25,6 +27,7 @@
<MenuItem mnemonicParsing="false" text="视频播放" onAction="#video_menu_item"/>
<MenuItem mnemonicParsing="false" text="音乐播放" onAction="#music_menu_item"/>
<MenuItem mnemonicParsing="false" text="vip 视频解析" onAction="#vip_parser_menu_item"/>
<MenuItem mnemonicParsing="false" text="音乐解析" onAction="#music_parser_menu_item"/>
</items>
</Menu>
<Menu mnemonicParsing="false" text="常用小工具">
@ -40,6 +43,11 @@
<MenuItem mnemonicParsing="false" text="手机号工具" onAction="#telephone_menu_item"/>
<MenuItem mnemonicParsing="false" text="JsonView" onAction="#JsonView_menu_item"/>
<MenuItem mnemonicParsing="false" text="maven-jar-install" onAction="#maven_jar_install_menu_item"/>
<MenuItem mnemonicParsing="false" text="word-ocr" onAction="#word_ocr_menu_item"/>
<MenuItem mnemonicParsing="false" text="条形码识别" onAction="#bar_code_menu_item"/>
<MenuItem mnemonicParsing="false" text="pdf识别" onAction="#pdf_menu_item"/>
<MenuItem mnemonicParsing="false" text="批量修改文件名" onAction="#batch_update_file_name_menu_item"/>
<MenuItem mnemonicParsing="false" text="截图工具" onAction="#capter_screen_menu_item"/>
</items>
</Menu>
@ -74,6 +82,10 @@
<MenuItem mnemonicParsing="false" text="ftp-server 请求工具" onAction="#ftp_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="ssh-client 请求工具" onAction="#ssh_client_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server 服务工具" onAction="#socket_server_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-client-aio 客户端工具" onAction="#socket_client_aio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server-aio 服务端工具" onAction="#socket_server_aio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-server-nio 服务端工具" onAction="#socket_server_nio_menu_item"/>
<MenuItem mnemonicParsing="false" text="socket-client-nio 客户端工具" onAction="#socket_client_nio_menu_item"/>
</items>
</Menu>
</menus>