补全菜单
parent
1001ca6f35
commit
3adff4b3de
|
|
@ -128,6 +128,25 @@ public class CodecToolsController {
|
|||
load_small_tools(3);
|
||||
}
|
||||
|
||||
//
|
||||
@FXML
|
||||
public void qr_code_menu_item(){
|
||||
|
||||
load_small_tools(4);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void date_query_menu_item(){
|
||||
|
||||
load_small_tools(5);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void cron_menu_item(){
|
||||
|
||||
load_small_tools(6);
|
||||
}
|
||||
|
||||
|
||||
@FXML
|
||||
public void base_62_menu_item(){
|
||||
|
|
@ -163,6 +182,12 @@ public class CodecToolsController {
|
|||
public void sql_code_gen_menu_item(){
|
||||
load_sql_tools(0);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void netty_client_menu_item(){
|
||||
load_network_tools(0);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void morse_coder_menu_item(){
|
||||
|
||||
|
|
@ -173,6 +198,22 @@ public class CodecToolsController {
|
|||
morse_coder(flag);
|
||||
}
|
||||
|
||||
public void load_network_tools(int index){
|
||||
AnchorPane fx = null;
|
||||
try {
|
||||
fx = FXMLLoader.load(ResourcesUtils.getResource("network-tools"));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Scene scene = new Scene(fx);
|
||||
Stage stage = (Stage) splitPane.getScene().getWindow();
|
||||
stage.setScene(scene);
|
||||
|
||||
ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView");
|
||||
listView.getSelectionModel().select(index);
|
||||
}
|
||||
|
||||
public void load_sql_tools(int index) {
|
||||
AnchorPane fx = null;
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.zhangmeng.tools.controller;
|
|||
|
||||
import com.zhangmeng.tools.utils.AlertUtils;
|
||||
import com.zhangmeng.tools.utils.CronUtil;
|
||||
import com.zhangmeng.tools.utils.QuartzUtils;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.TextArea;
|
||||
|
|
@ -10,13 +9,8 @@ import javafx.scene.control.TextField;
|
|||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.quartz.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.quartz.DateBuilder.evenMinuteDate;
|
||||
import static org.quartz.JobBuilder.newJob;
|
||||
import static org.quartz.TriggerBuilder.newTrigger;
|
||||
|
||||
/**
|
||||
* @author : 芊芊墨客
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.zhangmeng.tools.utils.ResourcesUtils;
|
|||
import javafx.beans.property.SimpleDoubleProperty;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.geometry.Pos;
|
||||
|
|
@ -340,4 +341,11 @@ public class NetWorkToolsController {
|
|||
});
|
||||
}
|
||||
|
||||
public void date_query_menu_item(ActionEvent event) {
|
||||
load_small_tools(5);
|
||||
}
|
||||
|
||||
public void cron_menu_item(ActionEvent event) {
|
||||
load_small_tools(6);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -170,6 +170,37 @@ public class PlayerController {
|
|||
vip_parser(flag);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void date_query_menu_item(){
|
||||
load_small_tools(5);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void cron_menu_item(){
|
||||
load_small_tools(6);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void netty_client_menu_item(){
|
||||
load_network_tools(6);
|
||||
}
|
||||
|
||||
public void load_network_tools(int index){
|
||||
AnchorPane fx = null;
|
||||
try {
|
||||
fx = FXMLLoader.load(ResourcesUtils.getResource("network-tools"));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Scene scene = new Scene(fx);
|
||||
Stage stage = (Stage) splitPane.getScene().getWindow();
|
||||
stage.setScene(scene);
|
||||
|
||||
ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView");
|
||||
listView.getSelectionModel().select(index);
|
||||
}
|
||||
|
||||
public void load_codec_tools(int index){
|
||||
AnchorPane fx = null;
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -195,6 +195,27 @@ public class SmallToolsController {
|
|||
load_mysql_tools(0);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void netty_client_menu_item(){
|
||||
load_network_tools(0);
|
||||
}
|
||||
|
||||
public void load_network_tools(int index){
|
||||
AnchorPane fx = null;
|
||||
try {
|
||||
fx = FXMLLoader.load(ResourcesUtils.getResource("network-tools"));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Scene scene = new Scene(fx);
|
||||
Stage stage = (Stage) splitPane.getScene().getWindow();
|
||||
stage.setScene(scene);
|
||||
|
||||
ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView");
|
||||
listView.getSelectionModel().select(index);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void morse_coder_menu_item(){
|
||||
load_codec_tools(3);
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import com.zhangmeng.tools.utils.ResourcesUtils;
|
|||
import javafx.beans.property.SimpleDoubleProperty;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.geometry.Pos;
|
||||
|
|
@ -321,4 +322,39 @@ public class SqlToolsController {
|
|||
});
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void qr_code_menu_item() {
|
||||
load_small_tools(4);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void date_query_menu_item() {
|
||||
load_small_tools(5);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void cron_menu_item() {
|
||||
load_small_tools(6);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void netty_client_menu_item() {
|
||||
load_network_tools(0);
|
||||
}
|
||||
|
||||
public void load_network_tools(int index){
|
||||
AnchorPane fx = null;
|
||||
try {
|
||||
fx = FXMLLoader.load(ResourcesUtils.getResource("network-tools"));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Scene scene = new Scene(fx);
|
||||
Stage stage = (Stage) splitPane.getScene().getWindow();
|
||||
stage.setScene(scene);
|
||||
|
||||
ListView<ResourcesUtils.Player> listView = (ListView) fx.lookup("#listView");
|
||||
listView.getSelectionModel().select(index);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,310 +0,0 @@
|
|||
package com.zhangmeng.tools.utils;
|
||||
|
||||
import com.zhangmeng.tools.controller.CronController;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.quartz.*;
|
||||
import org.quartz.impl.StdSchedulerFactory;
|
||||
import org.quartz.impl.matchers.GroupMatcher;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.quartz.DateBuilder.evenMinuteDate;
|
||||
import static org.quartz.JobBuilder.newJob;
|
||||
import static org.quartz.TriggerBuilder.newTrigger;
|
||||
|
||||
/**
|
||||
* @author : 芊芊墨客
|
||||
* @version : 1.0
|
||||
* @date : 2023-03-06 16:44
|
||||
*/
|
||||
@Slf4j
|
||||
public class QuartzUtils {
|
||||
|
||||
private static Scheduler scheduler = getScheduler();
|
||||
|
||||
/**
|
||||
* 创建一个调度对象
|
||||
*
|
||||
* @return
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
private static Scheduler getScheduler() {
|
||||
SchedulerFactory sf = new StdSchedulerFactory();
|
||||
Scheduler scheduler = null;
|
||||
try {
|
||||
scheduler = sf.getScheduler();
|
||||
} catch (SchedulerException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return scheduler;
|
||||
}
|
||||
|
||||
public static Scheduler getInstanceScheduler() {
|
||||
return scheduler;
|
||||
}
|
||||
|
||||
/**
|
||||
* 启动一个调度对象
|
||||
*
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public void start() throws SchedulerException {
|
||||
scheduler.start();
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查调度是否启动
|
||||
*
|
||||
* @return
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public boolean isStarted() throws SchedulerException {
|
||||
return scheduler.isStarted();
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭调度信息
|
||||
*
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public void shutdown() throws SchedulerException {
|
||||
scheduler.shutdown();
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加调度的job信息
|
||||
*
|
||||
* @param jobdetail
|
||||
* @param trigger
|
||||
* @return
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public Date scheduleJob(JobDetail jobdetail, Trigger trigger) throws SchedulerException {
|
||||
return scheduler.scheduleJob(jobdetail, trigger);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加相关的触发器
|
||||
*
|
||||
* @param trigger
|
||||
* @return
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public Date scheduleJob(Trigger trigger) throws SchedulerException {
|
||||
return scheduler.scheduleJob(trigger);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 停止调度Job任务
|
||||
*
|
||||
* @param triggerkey
|
||||
* @return
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public boolean unscheduleJob(TriggerKey triggerkey) throws SchedulerException {
|
||||
return scheduler.unscheduleJob(triggerkey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止调度多个触发器相关的job
|
||||
*
|
||||
* @return
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public boolean unscheduleJobs(List<TriggerKey> triggerKeylist) throws SchedulerException {
|
||||
return scheduler.unscheduleJobs(triggerKeylist);
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新恢复触发器相关的job任务
|
||||
*
|
||||
* @param triggerkey
|
||||
* @param trigger
|
||||
* @return
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public Date rescheduleJob(TriggerKey triggerkey, Trigger trigger) throws SchedulerException {
|
||||
return scheduler.rescheduleJob(triggerkey, trigger);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加相关的job任务
|
||||
*
|
||||
* @param jobdetail
|
||||
* @param flag
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public void addJob(JobDetail jobdetail, boolean flag) throws SchedulerException {
|
||||
scheduler.addJob(jobdetail, flag);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除相关的job任务
|
||||
*
|
||||
* @param jobkey
|
||||
* @return
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public boolean deleteJob(JobKey jobkey) throws SchedulerException {
|
||||
return scheduler.deleteJob(jobkey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除相关的多个job任务
|
||||
*
|
||||
* @param jobKeys
|
||||
* @return
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public boolean deleteJobs(List<JobKey> jobKeys) throws SchedulerException {
|
||||
return scheduler.deleteJobs(jobKeys);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param jobkey
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public void triggerJob(JobKey jobkey) throws SchedulerException {
|
||||
scheduler.triggerJob(jobkey);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param jobkey
|
||||
* @param jobdatamap
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public void triggerJob(JobKey jobkey, JobDataMap jobdatamap) throws SchedulerException {
|
||||
scheduler.triggerJob(jobkey, jobdatamap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止一个job任务
|
||||
*
|
||||
* @param jobkey
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public void pauseJob(JobKey jobkey) throws SchedulerException {
|
||||
scheduler.pauseJob(jobkey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止多个job任务
|
||||
*
|
||||
* @param groupmatcher
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public void pauseJobs(GroupMatcher<JobKey> groupmatcher) throws SchedulerException {
|
||||
scheduler.pauseJobs(groupmatcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止使用相关的触发器
|
||||
*
|
||||
* @param triggerkey
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public void pauseTrigger(TriggerKey triggerkey) throws SchedulerException {
|
||||
scheduler.pauseTrigger(triggerkey);
|
||||
}
|
||||
|
||||
public void pauseTriggers(GroupMatcher<TriggerKey> groupmatcher) throws SchedulerException {
|
||||
scheduler.pauseTriggers(groupmatcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* 恢复相关的job任务
|
||||
*
|
||||
* @param jobkey
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public void resumeJob(JobKey jobkey) throws SchedulerException {
|
||||
scheduler.pauseJob(jobkey);
|
||||
}
|
||||
|
||||
public void resumeJobs(GroupMatcher<JobKey> matcher) throws SchedulerException {
|
||||
scheduler.resumeJobs(matcher);
|
||||
}
|
||||
|
||||
public void resumeTrigger(TriggerKey triggerkey) throws SchedulerException {
|
||||
scheduler.resumeTrigger(triggerkey);
|
||||
}
|
||||
|
||||
public void resumeTriggers(GroupMatcher<TriggerKey> groupmatcher) throws SchedulerException {
|
||||
scheduler.resumeTriggers(groupmatcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* 暂停调度中所有的job任务
|
||||
*
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public void pauseAll() throws SchedulerException {
|
||||
scheduler.pauseAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* 恢复调度中所有的job的任务
|
||||
*
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
public void resumeAll() throws SchedulerException {
|
||||
scheduler.resumeAll();
|
||||
}
|
||||
|
||||
static class RamJob implements Job {
|
||||
|
||||
@Override
|
||||
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
||||
log.info("jobExecutionContext:{}-----------------",new Date());
|
||||
}
|
||||
}
|
||||
|
||||
public static void main_start(){
|
||||
|
||||
log.info("------- Initializing ----------------------");
|
||||
//从调度管理器中获取调度对象
|
||||
Scheduler sched = QuartzUtils.getInstanceScheduler();
|
||||
log.info("------- Initialization Complete -----------");
|
||||
|
||||
Date runTime = evenMinuteDate(new Date());
|
||||
|
||||
log.info("------- Scheduling Job -------------------");
|
||||
//创建相关的job信息
|
||||
JobDetail job = newJob(RamJob.class)
|
||||
.withIdentity("job1", "group1")
|
||||
.build();
|
||||
//创建一个触发器的名称
|
||||
Trigger trigger = newTrigger()
|
||||
.withIdentity("trigger1", "group1")
|
||||
.startAt(runTime)
|
||||
.build();
|
||||
|
||||
//设置调度相关的Job
|
||||
try {
|
||||
sched.scheduleJob(job, trigger);
|
||||
log.info(job.getKey() + " will run at: " + runTime);
|
||||
|
||||
//启动调度任务
|
||||
sched.start();
|
||||
log.info("------- Started Scheduler -----------------");
|
||||
|
||||
//暂时停止Job任务开始执行
|
||||
log.info("-------pauseJob.. -------------");
|
||||
sched.pauseJob(job.getKey());
|
||||
|
||||
//恢复Job任务开始执行
|
||||
sched.resumeJob(job.getKey());
|
||||
|
||||
log.info("------- Shutting Down ---------------------");
|
||||
sched.shutdown(true);
|
||||
log.info("------- Shutdown Complete -----------------");
|
||||
} catch (SchedulerException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -33,6 +33,9 @@
|
|||
<MenuItem mnemonicParsing="false" text="Unicode和字符串转换" onAction="#unicode_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="jwt工具" onAction="#jwt_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="颜色选择工具" onAction="#color_choose_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="二维码生成" onAction="#qr_code_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="时间工具" onAction="#date_query_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="cron表达式" onAction="#cron_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
|
||||
|
|
@ -50,6 +53,13 @@
|
|||
<MenuItem mnemonicParsing="false" text="mysql代码生成" onAction="#sql_code_gen_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
|
||||
<Menu mnemonicParsing="false" text="network工具">
|
||||
<items>
|
||||
<MenuItem mnemonicParsing="false" text="netty-websocket工具" onAction="#netty_client_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
|
||||
</menus>
|
||||
</MenuBar>
|
||||
<SplitPane fx:id="splitPane" dividerPositions="0.5" layoutY="25.0" prefHeight="575.0" prefWidth="1200.0"
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@
|
|||
<MenuItem mnemonicParsing="false" text="jwt工具" onAction="#jwt_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="颜色选择工具" onAction="#color_choose_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="二维码生成" onAction="#qr_code_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="时间工具" onAction="#date_query_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="cron表达式" onAction="#cron_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,9 @@
|
|||
<MenuItem mnemonicParsing="false" text="Unicode和字符串转换" onAction="#unicode_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="jwt工具" onAction="#jwt_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="颜色选择工具" onAction="#color_choose_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="二维码生成" onAction="#qr_code_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="时间工具" onAction="#date_query_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="cron表达式" onAction="#cron_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
|
||||
|
|
@ -49,6 +52,12 @@
|
|||
<MenuItem mnemonicParsing="false" text="mysql代码生成" onAction="#sql_code_gen_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
|
||||
<Menu mnemonicParsing="false" text="network工具">
|
||||
<items>
|
||||
<MenuItem mnemonicParsing="false" text="netty-websocket工具" onAction="#netty_client_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
</menus>
|
||||
</MenuBar>
|
||||
<SplitPane fx:id="splitPane" dividerPositions="0.5" layoutY="25.0" prefHeight="575.0" prefWidth="1200.0"
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
<MenuItem mnemonicParsing="false" text="颜色选择工具" onAction="#color_choose_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="二维码生成" onAction="#qr_code_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="时间工具" onAction="#date_query_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="cron" onAction="#cron_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="cron表达式" onAction="#cron_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
|
||||
|
|
@ -54,6 +54,12 @@
|
|||
</items>
|
||||
</Menu>
|
||||
|
||||
<Menu mnemonicParsing="false" text="network工具">
|
||||
<items>
|
||||
<MenuItem mnemonicParsing="false" text="netty-websocket工具" onAction="#netty_client_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
|
||||
</menus>
|
||||
</MenuBar>
|
||||
<SplitPane fx:id="splitPane" dividerPositions="0.5" layoutY="25.0" prefHeight="575.0" prefWidth="1200.0"
|
||||
|
|
|
|||
|
|
@ -34,6 +34,9 @@
|
|||
<MenuItem mnemonicParsing="false" text="Unicode和字符串转换" onAction="#unicode_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="jwt工具" onAction="#jwt_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="颜色选择工具" onAction="#color_choose_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="二维码生成" onAction="#qr_code_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="时间工具" onAction="#date_query_menu_item"/>
|
||||
<MenuItem mnemonicParsing="false" text="cron表达式" onAction="#cron_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
|
||||
|
|
@ -51,6 +54,12 @@
|
|||
<MenuItem mnemonicParsing="false" text="mysql代码生成" onAction="#sql_code_gen_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
|
||||
<Menu mnemonicParsing="false" text="network工具">
|
||||
<items>
|
||||
<MenuItem mnemonicParsing="false" text="netty-websocket工具" onAction="#netty_client_menu_item"/>
|
||||
</items>
|
||||
</Menu>
|
||||
</menus>
|
||||
</MenuBar>
|
||||
<SplitPane fx:id="splitPane" dividerPositions="0.5" layoutY="25.0" prefHeight="575.0" prefWidth="1200.0"
|
||||
|
|
|
|||
Loading…
Reference in New Issue