2023年5月17日16:40:02
parent
0000aab742
commit
7390de076c
7
pom.xml
7
pom.xml
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -130,6 +130,7 @@ public class ResourcesUtils {
|
|||
Bar_Code("条形码识别", 12),
|
||||
Pdf_Ocr("pdf识别", 13),
|
||||
BatchUpdateFileName("批量修改文件名", 14),
|
||||
Capter_Screent("截图", 15),
|
||||
;
|
||||
|
||||
SmallTools(String title, int index) {
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue