`
vakin.jiang
  • 浏览: 147170 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Swing也疯狂,打造华丽用户界面体验

阅读更多
最近一段时间在公司闲着没事做,一向只倾心与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
38
2
分享到:
评论
27 楼 zh950 2010-01-05  
确实很漂亮,我很想学习一下。
26 楼 wangzaixiang 2009-11-11  
小兄弟,你的帖子好热啊。
继续加油!
25 楼 kavinwang 2009-11-03  
原来的终端框架应该是2003年左右设计的,是应该换了,呵呵!希望早日看到你们辛勤工作的结果!
24 楼 lydawen 2009-11-02  
后面有个疑似 eclipse在跑
23 楼 jiaofei3385140 2009-11-02  
真牛逼,我最近也一直想学习swt了,插件安好了,可苦与没有一本好的教材,以前压根没有好好学,还网博主给推荐本。
22 楼 windows1987 2009-10-31  
牛人,分享了
21 楼 vakin.jiang 2009-10-27  
prothi 写道
主要还是图片效果的功劳吧

说的没错,没有素材怎么弄都不会好看
20 楼 wocsok 2009-10-27  
好厉害 。。。你好 。很高兴认识你  想了解下你的优化   我QQ370841521 邮箱 wocsok@163.com  谢谢哈!
19 楼 redish 2009-10-27  
图片呢?怎么看不到了呢?是不是硬盘坏了的原因呢?
18 楼 yexin218 2009-10-26  
恩,很漂亮啊
17 楼 energykey 2009-10-26  
界面主要是UI吧,不过java本身提供的UI控件太少,导致开发起来有些难度。.net控件拖一拖一个界面就搞定了。。。
16 楼 prothi 2009-10-25  
主要还是图片效果的功劳吧
15 楼 zhang_liang_ran 2009-10-25  
很漂亮,为什么说swing界面不够美观呢,看来是我们都太肤浅了。。。
14 楼 唐木白 2009-10-25  
一直觉得Java做出来的界面很粗糙,没想到也可以这样漂亮,回去多看看swing
13 楼 暗黑HeavyMetal 2009-10-25  
拜读,震撼ing...swing果真能如此疯狂....
12 楼 sdywcd 2009-10-24  
一直想找个理由看看swing,现在有了
11 楼 yuyanshan 2009-10-24  
希望分享哟。。
10 楼 elementstorm 2009-10-24  
右下角有点问题啊,貌似按钮图片没有去掉无用的背景
9 楼 whaosoft 2009-10-23  
很漂亮 不过 你开放下控制样式的代码吧
8 楼 justshare 2009-10-23  
原来好易通是你们公司的,以前在广州的时候还用好易的终端充过话费呢

相关推荐

    swing界面美化包

    总的来说,Swing界面美化是Java GUI开发中的一项重要技能,通过合理利用Look-and-Feel机制和第三方库,开发者可以打造出独特且吸引人的用户界面,提升用户体验。在实际项目中,结合业务需求和个人审美,灵活运用这些...

    Swing 图形描述

    Swing是一个用于开发Java应用程序用户界面的开发工具包。 以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件...

    Swing用户界面组件

    Swing是Java编程语言中用于构建图形用户界面(GUI)的一个强大的工具包,它是Java Foundation Classes(JFC)的一部分。Swing提供了丰富的组件集,允许开发者创建美观且功能丰富的应用程序。在Swing中,组件通常被...

    SWING用户界面组件

    在Java编程领域,Swing库是用于构建图形用户界面(GUI)的一个重要工具包。这个实验报告主要探讨了如何使用Swing组件来创建一个简单的用户界面。Swing提供了一系列的组件,如按钮、文本框、标签、文本区域等,使得...

    java swing漂亮界面(超酷) javaswing教程

    Java Swing 是Java编程语言中用于构建桌面应用程序用户界面的一个库,它是Java Foundation Classes (JFC) 的一部分。Swing 提供了一系列组件,如按钮、文本框、菜单等,用于创建功能丰富的图形用户界面(GUI)。在...

    java swing漂亮界面 超酷 javaswing教程

    Java Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,用于帮助开发者创建桌面应用程序。Swing提供了一系列组件,如按钮、文本框、菜单等,允许开发者构建功能...

    Swing做的高仿QQ登陆界面

    Swing是Java编程语言中的一个图形用户界面(GUI)工具包,它是Java Foundation Classes (JFC)的一部分,用于构建桌面应用程序。本项目“Swing做的高仿QQ登陆界面”旨在为初学者提供一个学习Swing GUI设计和实现简单...

    Java Swing 界面美化包-含源码

    Java Swing 是Java标准库中的一个组件,用于创建图形用户界面(GUI)。Swing 提供了丰富的组件集合,如按钮、文本框、菜单等,用于构建桌面应用程序。然而,Swing 的默认界面风格(LookAndFeel)在视觉上可能相对...

    Java Swing图形用户界面设计

    Java Swing图形用户界面设计课件

    Swing用户界面设计

    Swing用户界面设计是Java编程中一个重要的主题,它提供了丰富的组件库来构建美观且功能强大的图形用户界面。Swing是Java Foundation Classes (JFC)的一部分,完全由Java语言编写,因此具有跨平台的特性,可以在不同...

    java课程设计界面美化包,swing也可以这么漂亮

    在Swing这一Java的图形用户界面(GUI)工具包中,虽然提供了基本的组件和布局管理器,但默认的UI设计往往显得较为朴素。为了使Swing应用看起来更加现代化和吸引人,我们可以引入第三方库,如本案例中的"substance....

    实验七-Java实验报告- Swing图形用户界面

    ### 实验七-Java实验报告-Swing图形用户界面 #### 实验背景与目的 本次实验是基于《Java面向对象程序设计》课程中的一个实践环节,旨在通过实际操作加深对Swing图形用户界面的理解与掌握。实验的具体目的是让学生...

    JavaSwing用户界面设计

    ### Java Swing 用户界面设计知识点详解 #### 一、Swing 的背景及介绍 - **Swing 的起源**:Swing 是 Java 技术中的一个重要组成部分,用于构建图形用户界面(GUI)。它诞生于 Java 早期阶段,主要是为了解决原有 ...

    java swing 用户登录界面设计

    在Java编程领域,Swing库是用于构建图形用户界面(GUI)的重要工具,它提供了丰富的组件和功能,使得开发者能够创建出美观且交互性强的应用程序。在这个特定的项目中,“java swing 用户登录界面设计”涉及到了如何...

    java Swing 设计数据库前台界面

    Java Swing 是Java GUI(图形用户界面)开发的一个重要工具,主要用于构建桌面应用程序。在本项目“java Swing 设计数据库前台界面”中,我们利用Swing组件来创建一个与数据库交互的用户界面,尤其是实现了JTable...

    java Swing用户界面组件

    Java Swing是Java编程语言中用于构建图形用户界面(GUI)的一部分,它属于Java Foundation Classes (JFC)的一部分。Swing提供了丰富的组件集,允许开发者创建功能完备、美观的桌面应用程序。在Swing中,组件是构成...

    java(swing,awt)图形用户界面编程100多个案例

    Java Swing和AWT是Java平台上的两种主要的图形用户界面(GUI)工具包,用于创建桌面应用程序。这两个库提供了丰富的组件、布局管理器以及事件处理机制,使得开发者能够构建功能丰富的交互式用户界面。 首先,AWT...

    java实验报告之图形用户界面程序设计与 AWT/Swing组件

    在本实验报告中,主题是“Java实验报告之图形用户界面程序设计与AWT/Swing组件”,主要目标是让学生熟悉Java GUI设计原理、程序结构,掌握AWT和Swing组件的功能,以及学会应用这些组件来设计应用程序,特别是实现一...

Global site tag (gtag.js) - Google Analytics