首页 文章 精选 留言 我的

精选列表

搜索[图形化编辑器],共7484篇文章
优秀的个人博客,低调大师

Java图形化:布局方式

布局方式 FlowLayout:流布局 BorderLayout:边框布局 GridLayout:网格布局 FlowLayout(流布局) 像Word打字,组件从左向右排列,一列排满后自动换下一行。组件默认居中对齐,可以设置左/右对齐。流布局会维持组件的原始大小。流布局是JPanel(面板)的默认布局。容器可以使用setLayout()方法改变布局。 示例代码: import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; public class TestLowLayout { public static void main(String[] args) { JFrame jf = new JFrame("流布局Demo"); FlowLayout fl = new FlowLayout(); jf.setLayout(fl); JButton jb1 = new JButton("按钮1"); JButton jb2 = new JButton("按钮2"); jf.add(jb1); jf.add(jb2); jf.setSize(600, 300); jf.setLocation(300, 200); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); } } 图示: BorderLayout(边框布局) 边框布局把整个窗口分成了5个部分: 上北 下南 左西 右东 中 其中,北和南是整行,但是中、西、东都不是整列。一般只会出现2个或3个部分。组件放入时需要指定放在哪个区域,默认在中部。每个部分只能存放一个组件,如果存放多个就会覆盖前面的。如果想存放多个必须借助面板(Panel)。组件在边框布局中不保持原始大小,会充满整个区域,JFrame的默认布局就是边框布局。如果某个部分不出现,这个区域会被出现的部分挤占。 示例代码: import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; public class TestBorderLayout { public static void main(String[] args) { JFrame jf = new JFrame("BorderLayout窗口"); JButton jb = new JButton("中"); JButton jb1 = new JButton("北"); JButton jb2 = new JButton("南"); JButton jb3 = new JButton("西"); JButton jb4 = new JButton("东"); jf.add(jb); jf.add(jb1,BorderLayout.NORTH); jf.add(jb2,BorderLayout.SOUTH); jf.add(jb3,BorderLayout.WEST); jf.add(jb4,BorderLayout.EAST); jf.setSize(600, 300); jf.setLocation(600, 600); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); } } 图示: GridLayout(网格布局) 把窗口分成几行几列的表格方式,构造时需要指定行数和列数。组件在网状布局中不保持原始大小,会充满整个区域。组件在网状布局中,一个格子只存放一个组件,自动向后走。 示例代码: import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; public class TestGridLayout { public static void main(String[] args) { JFrame jf = new JFrame("网格布局Test"); GridLayout gl = new GridLayout(5,4); jf.setLayout(gl); for (int i=0; i < 20; i++) { JButton jb = new JButton("按钮 "+i); jf.add(jb); } // 自动调整大小 jf.pack(); jf.setLocation(300, 200); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); } } 图示: 应用1:计算器 import java.awt.BorderLayout; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class ComputerTest { public static void main(String[] args) { JFrame jf = new JFrame("计算器"); JTextField jtf = new JTextField("0",20); jf.add(jtf,BorderLayout.NORTH); String[] lab = {"CE","C","+/-","BackS","7","8","9","+","4","5","6","-","1","2","3","*","0",".","=","/"}; JPanel jp = new JPanel(); GridLayout gl = new GridLayout(5,4); jp.setLayout(gl); for (int i=0; i<lab.length; i++) { JButton jb = new JButton(lab[i]); jp.add(jb); } jf.add(jp); // 自动调节窗口大小 jf.pack(); // 禁止改变窗口大小 jf.setResizable(false); jf.setLocation(300, 200); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); } } 图示:

优秀的个人博客,低调大师

图形化机器学习系统 EasyML

EasyML 详细介绍 EasyML(Easy Machine Learning)是一个简单机器学习系统。 在该系统中,一个学习任务被构造为一个有向非循环图(DAG/directed acyclic graph),每个节点表征一步操作(即机器学习算法),每一条边表征从一个节点到后一个即节点的数据流。 任务可被人工定义,或根据现有任务/模板进行克隆。在把任务提交到云端之后,每个节点将根据 DAG 自动执行。图形用户界面被实现,从而可使用户以拖拉的方式创建、配置、提交和监督一项任务。 系统包含三个主要组件: 分布式的机器学习库 不仅能实现流行的机器学习算法,也能实现数据预处理/后处理、数据格式转变、特征生成、表现评估等算法。这些算法主要是基于 Spark 实现的。 基于 GUI 的机器学习开发环境系统 能让用户以拖放的方式创造、安装、提交、监控、共享他们的机器学习流程。机器学习库中所有的算法都可在此开发环境系统中获得并安装,它们是构建机器学习任务的主要基础。 执行任务的云服务 该服务基于开源的 Hadoop 和 Spark 大数据平台建立,在 Docker 上组织了服务器集群。从 GUI 上接受一个 DAG 任务之后,在所有的独立数据源准备好时,每个节点将会自动安排运行。对应节点的算法将会依据实现在 Linux、Spark 或者 Map-Reducecite 上自动安排运行。 文章转载自 开源中国社区[https://www.oschina.net]

优秀的个人博客,低调大师

阿里云 centos 安装图形化界面

CentOS 7 系统下,本文以 MATE 桌面环境安装进行安装配置说明: 登录服务器,执行如下指令安装桌面环境: #先安装MATEDesktopyumgroupsinstall"MATEDesktop"命令输入之后,会列出一大堆文字的,然后显示这个y/d/n,输入y,按回车下载安装;安装完成,显示下面图片complete #安装好MATEDesktop后,再安装XWindowSystem。 yumgroupsinstall"XWindowSystem"命令输入之后,会列出一大堆文字的,然后显示这个y/d/n,输入y,按回车下载安装; 安装完成 设置默认通过桌面环境启动服务器: systemctlset-defaultgraphical.target systemctlset-defaultmulti-user.target //设置成命令模式 systemctlset-defaultgraphical.target //设置成图形模式 安装完成后,通过 reboot 等指令重启服务器,或者在ECS 服务器控制台重启服务器。 选择第一个,按回车 通过管理终端连接服务器,验证测试安装情况。在ECS控制台,用管理终端登录服务器,查看安装好的桌面。

优秀的个人博客,低调大师

Java图形化:Swing表格的使用

利用JTable类直接创建表格 创建表格: 在JTable类中除了默认的构造方法之外,还提供了利用指定表格列名数组和表格数据数组创建表格的构造方法,如下: JTable(Object[][] rowData,Object[] columnNames) rowData就是表格的数据数组 columnNames就是表格的列名数组。 使用表格时,一般将其添加到滚动面板中,然后将滚动面板加到相应的位置。 在JTable中还提供了利用指定表格的列名向量和表格数据向量创造表格的构造方法,如下:JTable(Vector rowData,Vector columnNames) rowDara就是表格的数据向量 columnNames就是表格的列名向量 在使用表格时,有时候不需要使用滚动条,就可以在窗体中显示整个表格,在这种情况下,也可以直接将表格添加到相应的容器中。 注意:如果是将表格添加到相应的容器中,则需要通过JTable类的getTableHeader()方法获得JTableHeader类的对象,然后再将该对象添加到容器的相应位置,否则表格将没有列名。 简单表格案例: package view.flight; import javax.swing.*; import java.awt.*; /** * @author: 我的袜子都是洞 */ public class TestGui extends JFrame { // 列名 String[] columnName = new String[]{"航班号", "出发时间", "飞行时间", "出发地", "目的地", "余票", "票价"}; // 表格具体数据 String[][] columnDate = new String[][]{ {"1", "2019-01-18 10:05", "90分钟", "北京", "纽约", "50", "500.0"}, {"2", "2019-01-18 10:05", "90分钟", "北京", "纽约", "10", "500.0"}, {"3", "2019-01-18 10:05", "90分钟", "北京", "纽约", "10", "500.0"}, {"4", "2019-01-18 10:05", "90分钟", "北京", "纽约", "40", "500.0"}, }; JTable table = new JTable(columnDate, columnName); TestGui(String title) { super(title); init(); setComponent (); addComponent(); addListener(); setVisible(true); } private void init () { setSize(600, 400); // 设置窗口位置居中 setLocationRelativeTo(null); // 设置布局 setLayout(new BorderLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private void setComponent () { // 设置第一列宽度为40 table.getColumnModel().getColumn(0).setPreferredWidth(40); // 设置第二列宽度为120 table.getColumnModel().getColumn(1).setPreferredWidth(120); } private void addComponent () { // 使用srcllpane会自动显示列名 JScrollPane scrollPane = new JScrollPane(table); add(scrollPane, BorderLayout.CENTER); } private void addListener () { } public static void main(String[] args) { new TestGui("JTable演示"); } } 定制表格 表格创建之后,还需要对其进行一系列的定义,以便适合于具体的使用情况。默认情况下双击单元格便可对其编辑,如果不需要此功能,可以通过重构JTable类的isCellEditable(int row,int column)方法实现该方法返回boolean型值true,表示可以编辑,否则返回false则表示不可编辑。 可通过JTableHeader类的setReorderingAllowed(boolean reorderAllowed)方法设置表格是否支持重新排列功能,该方法返回boolean型值true表示支持,返回false表示不支持。 默认情况下,单元格中的内容左侧显示,如果需要居中显示,可通过重构JTable类的getDefaultRenderer(Class<?> columnClass)方法来实现。重构的代码: public TableCellRenderer getDefaultRenderer(Class<?> columnClass) { DefaultTableCellRenderer cr=(DefaultTableCellRenderer)super.getDefaultRenderer(columnClass); cr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER); return cr; } JTable类的用来定义表格的常用方法 setRowHeight(int rowHeight):设置表格的行高,默认像素为16 setRowSelectionAllowed(boolean sa):设置是否允许选中表格行,默认为允许选中,设为false表示不允许选中 setSelectionMode(int sm):设置表格行的选中模式 setSelectionBackground(Color cr):设置表格选中行的背景色 setSelectionForeground(Color fc):设置表格选中行的前景色 setAutoResizeMode(int mode):设置表格的自动调整模式 在利用setSelectionMode(int sm)方法设置表格行的选择模式时,它的入口参数从ListSelectionModel的静态常量中选择。如下: 静态常量:SINGLE_SELECTION,常量值:0,表示只选择一个。 静态常量:SINGLE_INTERVAL_SELECTION,常量值:1,表示允许连续选择多个 静态常量:MULTIPLE_INTERVAL_SELECTION,常量值:2,表示随意选择多个 在利用setAutoResizeMode(int mode)方法设置表格的自动调整模式时,它的入口参数从JTable类的静态常量中选择。 注意:表格的自动调整模式,就是在调整表格的某一列的宽度时,表格采用何种方式保持其总宽度不变。 操纵表格 在编写应用程序时,经常需要获得表格的一些信息,如下是JTable类中的三个经常用来获得表格信息的方法。 getRowCount():获得表格拥有的行数,返回值为int型。 getColumnCount():获得表格拥有的列数,返回值为int型。 getColumnName(int column):获得位于指定索引位置的列的名称,返回值为String型。 JTable类中经常用来操纵表格选中行的方法如下: setRowSelectionInterval(int from,int to):选中行索引从from到to的所有行(包括索引为from到to的行) addRowSelectionInterval(int from,int to):将行索引从from到to的所有行追加为表格的选中行 isRowSelected(int row):查看行索引为row的行是否被选中 selectAll():选中表格中的所有行 clearSelection():取消所有选中行的选择状态 getSelectedRowCount():得到选中行的数量,返回值为int型,如果没有被选中的行,则返回-1 getSelectedRow():得到被选中的行中最小的索引值,返回值为int型,如果没有被选中的行,则返回-1-getSelectedRows():获得所有被选中行的索引值,返回值为int数组 表格模型和表格 接口TableModel定义了一个表格模型,抽象类AbstracTableModel实现了TableModel接口的大部分方法,只有以下3个抽象方法没有实现。 public int getRowCount() public int getColumnCount() public Object getValueAt(int rowIndex,int columnIndex) 通过继承AbstractTableModel可以实现上面的3个抽象方法可以创建自己的表格模型类。DefaultTableModel类便是由Swing类提供的继承了AbstractTableModel类并实现了上面3个抽象方法的表格模型类。 从JDK1.6开始,提供了对表格进行排序的功能。通过JTable类的setRowSorter(RowSorter<? extends TableModel> sorter)方法可以为表格设置排序器。TableRowSorter类是由Swing提供的排序类,为表格设置排序器的代码如下: DefaultTableModel tableModel=new DefaultTableModel(); JTable table=new JTable(tableModel); table.setRowSorter(new TableRowSorter(tableModel)); 在使用表格排序器时,通常需要为其设置表格模型,一种方法是通过构造方法TableRowSorter(TableModel model),另一种方法是通过setModel(TableModel model)方法为表格排序器设置表格模型。 维护表格模型 使用表格时,需要经常对表格中的内容进行维护,如向表格中添加新的数据行、修改表格中某一单元格的值、从表格中删除数据行等,这些操作都可以通过维护表格模型来完成。 在向表格模型中添加新的数据行时有两种情况:一种是添加到表格模型的尾部,另一种是添加到表格模型指定的索引处,分别由addRow(Object[] rowData)和insertRow(int row,Object[] rowData)或addRow(Vector rowData)和insertRow(int row,Vector rowData)方法实现。 如果需要修改表格模型中某一个单元格的数据,可以通过方法setValueAt(Object aValue,int row,int column)完成,其中aValue就是修改后的值,可以通过getValueAt(int row,int column)获得单元格的值,该方法返回Object型。 如果需要删除表格模型中某一行的数据,可以通过方法removeRow(int row)来完成,其中row为欲要删除行的索引。 使用TableModel模型案例: import javax.swing.*; import javax.swing.table.AbstractTableModel; import java.awt.*; /** * @author: 我的袜子都是洞 */ public class TestGui extends JFrame { JTable table = new JTable(new FlightTableModel()); TestGui(String title) { super(title); init(); setComponent (); addComponent(); addListener(); setVisible(true); } private void init () { setSize(600, 400); // 设置窗口位置居中 setLocationRelativeTo(null); // 设置布局 setLayout(new BorderLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private void setComponent () { // 设置第一列宽度为40 table.getColumnModel().getColumn(0).setPreferredWidth(40); // 设置第二列宽度为120 table.getColumnModel().getColumn(1).setPreferredWidth(120); } private void addComponent () { // 使用srcllpane会自动显示列名 JScrollPane scrollPane = new JScrollPane(table); add(scrollPane, BorderLayout.CENTER); } private void addListener () { } public static void main(String[] args) { new TestGui("JTable演示"); } } class FlightTableModel extends AbstractTableModel { // 列名 String[] columnName = new String[]{"航班号", "出发时间", "飞行时间", "出发地", "目的地", "余票", "票价"}; // 表格具体数据 String[][] flightDate = new String[][]{ {"1", "2019-01-18 10:05", "90分钟", "北京", "纽约", "50", "500.0"}, {"2", "2019-01-18 10:05", "90分钟", "北京", "纽约", "10", "500.0"}, {"3", "2019-01-18 10:05", "90分钟", "北京", "纽约", "10", "500.0"}, {"4", "2019-01-18 10:05", "90分钟", "北京", "纽约", "40", "500.0"}, }; /** * 返回一共多少行 */ @Override public int getRowCount() { return flightDate.length; } /** * 返回一共多少列 */ @Override public int getColumnCount() { return columnName.length; } /** * 返回每一个单元格的值 */ @Override public Object getValueAt(int rowIndex, int columnIndex) { return flightDate[rowIndex][columnIndex]; } /** * 获取每一列的名称 */ @Override public String getColumnName(int column) { return columnName[column]; } /** * 单元格是否可以修改 */ @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } } 效果: 通过监听选中单元格获取对应数据的实例: import javax.swing.*; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; import java.awt.*; /** * @author: 我的袜子都是洞 */ public class TestGui extends JFrame { FlightTableModel flight = new FlightTableModel(); JTable table = new JTable(flight); TestGui(String title) { super(title); init(); setComponent (); addComponent(); addListener(); setVisible(true); } private void init () { setSize(600, 400); // 设置窗口位置居中 setLocationRelativeTo(null); // 设置布局 setLayout(new BorderLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private void setComponent () { // 设置第一列宽度为40 table.getColumnModel().getColumn(0).setPreferredWidth(40); // 设置第二列宽度为120 table.getColumnModel().getColumn(1).setPreferredWidth(120); } private void addComponent () { // 使用srcllpane会自动显示列名 JScrollPane scrollPane = new JScrollPane(table); add(scrollPane, BorderLayout.CENTER); } private void addListener () { // selection监听器监听表格哪行被选中 table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { // 被选中的行 int row = table.getSelectedRow(); String str = (String)flight.getValueAt(row,0); System.out.println("选中的行号是:"+row+",航班号是:"+str); } }); } public static void main(String[] args) { new TestGui("JTable演示"); } } class FlightTableModel extends AbstractTableModel { // 列名 String[] columnName = new String[]{"航班号", "出发时间", "飞行时间", "出发地", "目的地", "余票", "票价"}; // 表格具体数据 String[][] flightDate = new String[][]{ {"1", "2019-01-18 10:05", "90分钟", "北京", "纽约", "50", "500.0"}, {"2", "2019-01-18 10:05", "90分钟", "北京", "纽约", "10", "500.0"}, {"3", "2019-01-18 10:05", "90分钟", "北京", "纽约", "10", "500.0"}, {"4", "2019-01-18 10:05", "90分钟", "北京", "纽约", "40", "500.0"}, }; /** * 返回一共多少行 */ @Override public int getRowCount() { return flightDate.length; } /** * 返回一共多少列 */ @Override public int getColumnCount() { return columnName.length; } /** * 返回每一个单元格的值 */ @Override public Object getValueAt(int rowIndex, int columnIndex) { return flightDate[rowIndex][columnIndex]; } /** * 获取每一列的名称 */ @Override public String getColumnName(int column) { return columnName[column]; } /** * 单元格是否可以修改 */ @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } } 关键部分: // selection监听器监听表格哪行被选中 table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { // 被选中的行 int row = table.getSelectedRow(); String str = (String)flight.getValueAt(row,0); System.out.println("选中的行号是:"+row+",航班号是:"+str); } }); 获取到的结果图:窗口图: 数据:

优秀的个人博客,低调大师

Slowquery —— 图形化显示 MySQL 慢日志平台

Slowquery是一个开源的PHP Web应用程序,旨在帮助数据库管理员(DBA)和开发者更好地管理和监控MySQL数据库的慢查询日志。它提供了一个简单易用的界面,可以方便地查看和分析慢查询日志,并提供了许多有用的功能,例如慢查询邮件报警和自动发送慢查询分析报告等。 以下是主要功能和特点: 显示慢查询日志:提供了一个实时更新的界面,可以显示数据库中的慢查询日志,包括执行时间、执行次数、SQL语句等信息。用户可以通过界面轻松地查看和分析慢查询日志,找到哪些查询是慢查询,并了解它们的执行情况。 慢查询搜索和筛选:提供了强大的搜索和筛选功能,使用户可以快速找到感兴趣的慢查询。用户可以通过执行时间、执行次数、SQL语句等多个维度进行搜索和筛选,还可以对搜索结果进行排序和过滤,以便更好地了解慢查询的情况。 慢查询分析:提供了慢查询分析功能,可以对慢查询进行深入的分析和诊断。它可以将慢查询与数据库的表结构进行关联,显示每个表的查询次数和平均执行时间等信息,使用户更好地了解慢查询的本质和根源。 邮件报警:支持配置邮件报警功能,可以自动发送慢查询分析报告和警报信息给指定的邮箱。用户可以根据需要设置报警阈值和报警时间等参数,以便及时了解数据库的性能问题。 参考了开源工具Anemometer图形展示思路,开发在页面上点击慢SQL,就会自动反馈优化建议,同时也支持自动发送邮件报警功能。 agent客户端慢日志采集分析是结合Percona pt-query-digest工具来实现。 视频演示:https://www.douyin.com/video/7278552026181586216 服务端部署 拉取镜像 shell> docker pull docker.io/hcymysql/slowquery:2023-09-13 启动 shell> docker run -itd -e "TERM=xterm-256color" --privileged --name slowquery -p 80:80 -p 3306:3306 <IMAGE ID> /usr/sbin/init 进入docker里,启动httpd服务 shell> docker exec -it slowquery /bin/bash shell> systemctl start httpd.service ​录入你要监控的MySQL主库配置信息 mysql> INSERT INTO slowquery.dbinfo VALUES (1,'192.168.148.101','test','admin','123456',3306); 客户端部署 进入到slowquery/client_agent_script目录下,把slowquery_analysis.sh脚本拷贝到生产MySQL主库上做慢日志分析推送,并修改里面的配置信息 定时任务(10分钟一次) */10 * * * * /bin/bash /usr/local/bin/slowquery_analysis.sh > /dev/null 2>&1 打开浏览器,输入http://yourIP/slowquery/slowquery.php 慢查询邮件推送报警配置 进入到slowquery/alarm_mail/目录里,修改sendmail.php配置信息 定时任务(每隔3小时慢查询报警推送一次) 0 */3 * * * cd /var/www/html/slowquery/alarm_mail;/usr/bin/php /var/www/html/slowquery/alarm_mail/sendmail.php

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册