最近一段时间在公司闲着没事做,一向只倾心与java老大就启动了一个实验性项目,也就是用java做前端用户界面取代目前公司普遍用的C++开发的界面。之前用javaFX实验过一段时间,苦于没有好的设计器,完全违背了敏捷开发的初衷。鉴于netbeans目前的设计器还比较OK了,虽然生成的代码冗长拖沓。但是java的最大优势就是开源可以自行修改源码,自行设计组件,自行修改设计器....
说干就干,拿了我们公司业务最复杂的一个页面流程做实验。在设计上采用了界面和数据完全分离,借鉴于javaFx数据绑定概念。UI的操作更新绑定的数据模型内容,数据模型再发布事件通知UI刷新。基于这种思想,我们用设计器设计好界面,基本不要在里面写太多其他业务逻辑除了调用绑定数据模型的get/set方法和注册UI刷新事件外。
也许很多人认为Swing开发界面最大的瓶颈就是速度问题。这个也是我们优先考虑的,因为我们公司很多终端机都是128M内存,奔3时代老掉牙的机器。通过大量优化工作,老大为此鏖战几个通宵哦。目前在老机器下,与原来C++终端程序并行运行,在分配最大32M内存的情况,整个页面加载出来需要2秒,界面切换1秒~1.5秒之间,与原来C++同种程序大概差不多。整个项目图片比较多,就不发布出来了,先看看预览图片,如果有对此感兴趣同仁,我将把我们用到的优化方案分享出来,也大家一起研究学习。
UI部分代码片段:
private void onBallClicked(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_onBallClicked
int index = Integer.parseInt(evt.getActionCommand());
dataModel.setSelectedCoordinate(new Integer[]{row, index});
}//GEN-LAST:event_onBallClicked
private void onBallChooseAction(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_onBallChooseAction
Ball ball = (Ball) evt.getSource();
ball.setImage(ball.getPressedImage());
String cmd = evt.getActionCommand();
dataModel.setChooseBall(Integer.parseInt(cmd),true);
}//GEN-LAST:event_onBallChooseAction
数据模型代码片段:
public void setChooseBall(Integer chooseBall) {
printLog("","当前输入球号码:"+chooseBall);
if(isDuplicate(chooseBall,chooseTotal))
return;
this.chooseBall = chooseBall;
updateSSQdataModel(true);
fireRefreshUIEvent(RefreshUIEvent.DOREFRESH);
}
private void updateSSQdataModel(boolean isAddBall) {
if (isAddBall) {
currentBallAmount++;
int x = (currentBallAmount -1)/ 7;
int y = currentBallAmount % 7 - 1;
if (y < 0) {//选择篮球结束
y = 6;
finishedOne = true;
chooseTotal++;
printLog("当前选择第"+chooseTotal+"注号码",data[x]);
}else{
finishedOne = false;
}
data[x][y] = chooseBall;
nextChooseIsBlue = (y == 5);
sort(x);
}
totalAmount = chooseTotal * multiples * 2;
printLog("","\n下一个球:"+(nextChooseIsBlue?"蓝球":"红球") +
"\n当前完成投注数:"+chooseTotal +"\n倍数:"+multiples + "\n总金额:"+totalAmount);
}
/**
* 自动选号
*/
public void autoChoose(){
//设置当前注生成为未完成状态
finishedOne = false;
if(chooseTotal>=5){
chooseTotal--;
}
currentBallAmount = chooseTotal * 7;
for (int i = 0; i < data[chooseTotal].length - 1; i++) {
currentBallAmount++;
chooseBall = generateRedNumber();
data[chooseTotal][i] = chooseBall;
}
generateBlueNumber();
// printLog("自动选号",data[chooseTotal]);
}
/**
* 生成红球
* @return
*/
private Integer generateRedNumber() {
for (;;) {
double random = Math.random();
int value = (int)(random*34);
if(value<=0 || value>33)
continue;
if(isDuplicate(value,chooseTotal))
continue;
return new Integer(value);
}
}
- 大小: 202.6 KB
- 大小: 182.5 KB
分享到:
相关推荐
总的来说,Swing界面美化是Java GUI开发中的一项重要技能,通过合理利用Look-and-Feel机制和第三方库,开发者可以打造出独特且吸引人的用户界面,提升用户体验。在实际项目中,结合业务需求和个人审美,灵活运用这些...
Swing是一个用于开发Java应用程序用户界面的开发工具包。 以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件...
Swing是Java编程语言中用于构建图形用户界面(GUI)的一个强大的工具包,它是Java Foundation Classes(JFC)的一部分。Swing提供了丰富的组件集,允许开发者创建美观且功能丰富的应用程序。在Swing中,组件通常被...
在Java编程领域,Swing库是用于构建图形用户界面(GUI)的一个重要工具包。这个实验报告主要探讨了如何使用Swing组件来创建一个简单的用户界面。Swing提供了一系列的组件,如按钮、文本框、标签、文本区域等,使得...
Java Swing 是Java编程语言中用于构建桌面应用程序用户界面的一个库,它是Java Foundation Classes (JFC) 的一部分。Swing 提供了一系列组件,如按钮、文本框、菜单等,用于创建功能丰富的图形用户界面(GUI)。在...
Java Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,用于帮助开发者创建桌面应用程序。Swing提供了一系列组件,如按钮、文本框、菜单等,允许开发者构建功能...
Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。本项目“Swing做的高仿QQ登陆界面”旨在为初学者提供一个学习Swing GUI设计和实现简单...
Java Swing 是Java标准库中的一个组件,用于创建图形用户界面(GUI)。Swing 提供了丰富的组件集合,如按钮、文本框、菜单等,用于构建桌面应用程序。然而,Swing 的默认界面风格(LookAndFeel)在视觉上可能相对...
Java Swing图形用户界面设计课件
Swing用户界面设计是Java编程中一个重要的主题,它提供了丰富的组件库来构建美观且功能强大的图形用户界面。Swing是Java Foundation Classes (JFC)的一部分,完全由Java语言编写,因此具有跨平台的特性,可以在不同...
在Swing这一Java的图形用户界面(GUI)工具包中,虽然提供了基本的组件和布局管理器,但默认的UI设计往往显得较为朴素。为了使Swing应用看起来更加现代化和吸引人,我们可以引入第三方库,如本案例中的"substance....
### 实验七-Java实验报告-Swing图形用户界面 #### 实验背景与目的 本次实验是基于《Java面向对象程序设计》课程中的一个实践环节,旨在通过实际操作加深对Swing图形用户界面的理解与掌握。实验的具体目的是让学生...
### Java Swing 用户界面设计知识点详解 #### 一、Swing 的背景及介绍 - **Swing 的起源**:Swing 是 Java 技术中的一个重要组成部分,用于构建图形用户界面(GUI)。它诞生于 Java 早期阶段,主要是为了解决原有 ...
在Java编程领域,Swing库是用于构建图形用户界面(GUI)的重要工具,它提供了丰富的组件和功能,使得开发者能够创建出美观且交互性强的应用程序。在这个特定的项目中,“java swing 用户登录界面设计”涉及到了如何...
Java Swing 是Java GUI(图形用户界面)开发的一个重要工具,主要用于构建桌面应用程序。在本项目“java Swing 设计数据库前台界面”中,我们利用Swing组件来创建一个与数据库交互的用户界面,尤其是实现了JTable...
Java Swing是Java编程语言中用于构建图形用户界面(GUI)的一部分,它属于Java Foundation Classes (JFC)的一部分。Swing提供了丰富的组件集,允许开发者创建功能完备、美观的桌面应用程序。在Swing中,组件是构成...
Java Swing和AWT是Java平台上的两种主要的图形用户界面(GUI)工具包,用于创建桌面应用程序。这两个库提供了丰富的组件、布局管理器以及事件处理机制,使得开发者能够构建功能丰富的交互式用户界面。 首先,AWT...
在本实验报告中,主题是“Java实验报告之图形用户界面程序设计与AWT/Swing组件”,主要目标是让学生熟悉Java GUI设计原理、程序结构,掌握AWT和Swing组件的功能,以及学会应用这些组件来设计应用程序,特别是实现一...