package com.java.service;
import java.util.Random;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swtchart.Chart;
import org.eclipse.swtchart.ILineSeries;
import org.eclipse.swtchart.ISeries.SeriesType;
import org.eclipse.swtchart.LineStyle;
public class TestUIService
{
public static void main(String[] args) {
startUI();
}
public static void startUI() {
Display display = createDisplay();// 显示
Shell shellCpu = createShell(display);
SashForm sashForm = new SashForm(shellCpu, SWT.NONE);//表单
//可以调整顺序,修改展示顺序
addChartComposite(display, sashForm);
createTable1(sashForm);// 数据分页表格
createTable2(shellCpu);
openShell(display, shellCpu,sashForm);
}
public static Display createDisplay() {
final Display display = new Display();// 显示
return display;
}
public static void openShell(Display display,Shell shellCpu,SashForm sashForm) {
sashForm.setWeights(new int[] {600, 600});// 表单,宽度,左宽,右宽
shellCpu.open();// 打开
// 保持界面,持续打开
while (!shellCpu.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
public static Shell createShell(Display display) {
Shell shellCpu = new Shell(display);// 窗体
shellCpu.setSize(1000, 900);// 大小
shellCpu.setText("cpu\u4F7F\u7528\u60C5\u51B5");
shellCpu.setLayout(new FillLayout(SWT.VERTICAL));// 设置布局,才能添加组件
return shellCpu;
}
public static void createTable1(SashForm sashForm) {
{
Composite composite = new Composite(sashForm, SWT.NONE);
composite.setLayout(new FillLayout(SWT.HORIZONTAL));// 必须设置布局,否则不显示
//addButton(composite);
CheckboxTableViewer checkboxTableViewer = CheckboxTableViewer.newCheckList(composite, SWT.BORDER | SWT.FULL_SELECTION);
Table table = checkboxTableViewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
// 创建表头的字符串数组
TestService.createTable1(sashForm, table);
}
}
public static void createTable2(Shell shell) {
{
Composite composite_1 = new Composite(shell, SWT.NONE);
composite_1.setLayout(new FillLayout(SWT.HORIZONTAL));
Table table_1 = new Table(composite_1, SWT.BORDER | SWT.FULL_SELECTION);
table_1.setHeaderVisible(true);
table_1.setLinesVisible(true);
String[] tableHeader1 = {"名称", "坐标"};
for (int i = 0; i < tableHeader1.length; i++)
{
TableColumn tableColumn = new TableColumn(table_1, SWT.NONE);
tableColumn.setText(tableHeader1[i]);
// 设置表头可移动,默认为false
tableColumn.setMoveable(true);
}
TableItem item1;
for(int i=1;i<6;i++){
item1 = new TableItem(table_1, SWT.NONE);
item1.setText(new String[]{"重型泡沫车"+i ,2650+3*(i-1)+",8400"});
}
for(int i=1;i<5;i++){
item1 = new TableItem(table_1, SWT.NONE);
item1.setText(new String[]{"救护车"+i , 2666+3*(i-1)+",8400"});
}
// 重新布局表格
for (int i = 0; i < tableHeader1.length; i++)
{
table_1.getColumn(i).pack();
}
}
}
public static void addChartComposite(Display display,SashForm sashForm) {
Composite composite = new Composite(sashForm, SWT.NONE);
composite.setLayout(new FillLayout(SWT.HORIZONTAL));// 必须设置布局,否则不显示
Chart chart = new Chart(composite, SWT.NONE);
// set titles
chart.getTitle().setText("xxxx");
chart.getAxisSet().getXAxis(0).getTitle().setText("xx");
chart.getAxisSet().getYAxis(0).getTitle().setText("");
Random r = new Random();
int td = 1;
// create scatter series
{
ILineSeries scatterSeries = (ILineSeries) chart.getSeriesSet()
.createSeries(SeriesType.LINE, "LINE");
scatterSeries.setLineStyle(LineStyle.SOLID);//线条样式:NONE显示圆点;DASH显示线条
scatterSeries.setLineWidth(1);
org.eclipse.swt.graphics.Color color = new org.eclipse.swt.graphics.Color(display, 0,0,0);
scatterSeries.setSymbolColor(color);
scatterSeries.setLineColor(color);
scatterSeries.setSymbolSize(1);
scatterSeries.setXSeries(new double[] {
0,90,180,270,360
});
scatterSeries.setYSeries(new double[] {
0,0,0,0,0
});
}
/*
{
ILineSeries scatterSeries = (ILineSeries) chart.getSeriesSet()
.createSeries(SeriesType.LINE, "range");
scatterSeries.setLineStyle(LineStyle.NONE);//线条样式:NONE显示圆点;DASH显示线条
// scatterSeries.setLineWidth(1);
org.eclipse.swt.graphics.Color color = new org.eclipse.swt.graphics.Color(display, 0,0,0);
scatterSeries.setSymbolColor(color);
scatterSeries.setLineColor(color);
scatterSeries.setSymbolSize(0);
scatterSeries.setXSeries(new double[] {
0,90,180,270,360
});
scatterSeries.setYSeries(new double[] {
-200,0,0,0,200
});
}*/
{
ILineSeries scatterSeries = (ILineSeries) chart.getSeriesSet()
.createSeries(SeriesType.LINE, "测试"+td++);
scatterSeries.setLineStyle(LineStyle.NONE);//线条样式:NONE显示圆点;DASH显示线条
scatterSeries.setLineWidth(1);
org.eclipse.swt.graphics.Color color = new org.eclipse.swt.graphics.Color(display, 250,0,0);
scatterSeries.setSymbolColor(color);
//scatterSeries.setSymbolSize(10);
//scatterSeries.setXDateSeries(new Date[]{new Date(),new Date()});
//scatterSeries.setXAxisId(0);
scatterSeries.setXSeries(new double[] {
1,2,3,4,5
});
scatterSeries.setYSeries(new double[] {
300,300,300,300,300
});
}
{
ILineSeries scatterSeries = (ILineSeries) chart.getSeriesSet()
.createSeries(SeriesType.LINE, "测试"+td++);
scatterSeries.setLineStyle(LineStyle.NONE);//线条样式:NONE显示圆点;DASH显示线条
scatterSeries.setLineWidth(1);
org.eclipse.swt.graphics.Color color = new org.eclipse.swt.graphics.Color(display, 250,0,0);
scatterSeries.setSymbolColor(color);
//scatterSeries.setSymbolSize(10);
//scatterSeries.setXDateSeries(new Date[]{new Date(),new Date()});
//scatterSeries.setXAxisId(0);
scatterSeries.setXSeries(new double[] {
1,2,3,4,5
});
scatterSeries.setYSeries(new double[] {
100,100,100,100,100
});
}
{
ILineSeries scatterSeries = (ILineSeries) chart.getSeriesSet()
.createSeries(SeriesType.LINE, "测试"+td++);
scatterSeries.setLineStyle(LineStyle.NONE);//线条样式:NONE显示圆点;DASH显示线条
scatterSeries.setLineWidth(1);
org.eclipse.swt.graphics.Color color = new org.eclipse.swt.graphics.Color(display, 250,0,0);
scatterSeries.setSymbolColor(color);
//scatterSeries.setSymbolSize(10);
//scatterSeries.setXDateSeries(new Date[]{new Date(),
在本文中,我们将深入探讨如何使用Java编程语言,结合Eclipse SWT库,SWTChart组件以及JDBC技术,来创建一个跨平台且安全的应用程序,该程序能够在同一个界面上同时展示散点图和数据表格。这有助于数据分析和可视化,特别适用于处理SQL Server数据库中的数据。 1. **Java SWT (Standard Widget Toolkit)** SWT是Java平台上的一种GUI工具包,它是开源的,并且提供了一种原生的界面,使得Java应用程序能够拥有与平台相同的外观和感觉。SWT提供了各种控件,如按钮、文本框、表格等,用于构建用户界面。 2. **SWTChart组件** SWTChart是SWT的一个扩展,它为开发者提供了创建高质量图表的能力,包括折线图、柱状图、饼图以及我们的重点——散点图。散点图是一种有效的数据可视化方式,尤其适合显示两个变量之间的关系。 3. **JDBC(Java Database Connectivity)** JDBC是Java中用于连接和操作数据库的标准接口,它允许Java程序与各种数据库系统进行交互,如SQL Server。通过JDBC,我们可以执行SQL查询,将数据从数据库中提取出来,并将其呈现在SWT表格和图表中。 4. **SQL Server数据库** SQL Server是Microsoft提供的一个关系型数据库管理系统,广泛应用于企业级数据存储和管理。使用JDBC驱动,我们可以建立到SQL Server的连接,执行CRUD(创建、读取、更新、删除)操作,获取所需的数据。 5. **界面设计** 在SWT中,我们可以创建一个Shell对象作为应用程序的主窗口,然后在其中添加Table和Chart控件。Table控件可以用来显示数据库中的表格数据,支持排序、筛选等功能;而Chart控件则可以渲染从数据库获取的散点数据。 6. **数据绑定** 要在Table和Chart之间同步数据,我们需要在Java代码中处理逻辑。当用户从数据库加载数据时,这些数据既可以填充到Table控件中,也可以用作生成散点图的数据源。这通常涉及到对JDBC查询结果的处理,以及将数据转化为SWTChart能理解的格式。 7. **跨平台性** 由于SWT库的特性,使用SWT开发的应用程序可以在多种操作系统上运行,如Windows、Linux和Mac OS,这使得基于SWT的应用具有广泛的适用性。 8. **安全性** 在处理数据库连接时,应确保遵循最佳实践,如使用预编译的SQL语句防止SQL注入攻击,以及及时关闭数据库连接以避免资源泄漏。同时,对敏感数据的加密和验证也是必不可少的安全措施。 通过上述技术的组合,我们可以创建一个功能强大的数据可视化应用,不仅可以方便地查看和操作数据,还能直观地呈现数据间的关联。这在数据分析、监控或者报告生成等场景下尤为实用。在实际项目中,我们还需要考虑性能优化、用户体验以及错误处理等细节,以确保软件的质量和稳定性。



































































































- 1

- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整
- 甜甜不加糖2023-07-25对于需要分析和展示数据库中数据的项目来说,这个文件是一个不可缺少的工具,非常方便。
- 月小烟2023-07-25使用Java和JDBC来连接数据库、提取数据并展示成图表,这个文件提供了一个高效的解决方案。
- 精准小天使2023-07-25文件中的代码规范良好,注释详细,让开发者能够轻松理解和修改代码。
- 啊看看2023-07-25文件中呈现了清晰的代码结构和易于理解的界面设计,非常适合初学者入门学习。
- 老许的花开2023-07-25这个文件提供了使用Java SWT Table和SWTChart库来创建数据表格和散点图的界面,非常实用。

- 粉丝: 1
- 资源: 5
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源


