`
braveCS
  • 浏览: 73937 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

JavaSE的UI界面编程

阅读更多
public class GatherPanel extends JFrame {
{
    public GatherPanel() 
    {
        initComponents();
    }

    private void initComponents() 
    {
         //。。。。。。。。。
          btnCS = new JButton();
         btnCS.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent evt) {
			btnCSActionPerformed(evt);
			}
		});
         //。。。。。。。。
   }
	
    private void btnCSActionPerformed(ActionEvent evt) 
    {//也在事件队列线程里
         new CsFrame().setVisible(true);
         btnCS.setText("xfsdfsdf");
    }
	
    public static void main(String args[]) {
         EventQueue.invokeLater(new Runnable() {
           	public void run() {
	          	new GatherPanel().setVisible(true);
		}
           });
    }
		
    private JButton btnCS;
}


1)匿名内部类(来自thingking in Java)
①内部类继承自某个类或实现某个接口,内部类的代码操作创建它的外围类的对象。所以可以任务内部类提供某种进入其外围类的窗口。(内部类都能独立继承自一个接口的实现,所以无论外围类是否已经继承了某个接口,对应内部类都没有影响)
②对于多重继承,java的接口解决了部分问题,而内部类则有效地实现了“多重继承”
③应用:闭包、回调、控制框架(解决响应事件的需求,主要用来响应事件的系统——事件驱动系统,JavaSE的Swing就是一个事件驱动系统)。JavaSE UI编程的主框架可以用匿名内部类实现,用到闭包、回调(事件注册)、中介者模式、观察者模式。

2)当事件发生的时候,事件被添加postEvent到系统的事件队列EventQueue中。该事件AWTEvent中包含了产生事件的源对象和相关元数据[如事件类型标识符]。事件队列按照顺序依次对其中包含的事件进行处理。在处理时,调用事件的dispatch方法或事件源组件对象的dispatchEvent方法。当dispatchEvent方法会调用当前Component类的对象上已经注册的事件监听器中的方法,从而完成对事件的处理。不过监听器方法被调用顺序不确定。

2)线程AWT-EventQueue-0
Swing是单线程的,所有与组件绘制有关的操作都必须在单一线程中完成。这个线程——事件队列线程。EventQueue类static的invokeLater\invokeAndWait就将Swing组件相关操作的线程加入事件队列中。这样可以把界面绘制与业务处理线程分开,避免执行业务处理是导致界面出现卡死或假死现象。
EventQueue.invokeLater(new Runnable() {
public void run()
         {
            //Swing组件相关操作
    System.out.println(Thread.currentThread().getName());
}
});
怎么调用上面语句结果都是AWT-EventQueue-0,没有新的线程出现。
invokeLater:调用指定Runnabel接口实现对象中的run方法,执行该方法中的业务逻辑,这些业务逻辑将被异步执行。
InvokeAndWait:将等待Runnabel对象的run()方法确定被执行后才返回。
=>此外还有SwingWorker类很好完成后台计算和页面操作分开,Android里面也有。
=>Java7中新增第二事件队列SecondaryLoop是通过EventQueue的createSecondaryLoop方法创建,enter进入处理循环,exit退出。可以用来原来的事件队列阻塞的时候可以用到。

3)MVC1
MVC模式,使用MVC1,视图->控制器->模型->视图。而网页使用MVC2,如struts2。具体另请看:http://hi.baidu.com/jspzelgtegdgxze/item/f072cd4d8cade60f6dc2f015

4)来自《深入理解Java7》成富。
Java在桌面上的应用没有流行起来的原因:
①应用需要JRE支持
②存在一个JRE中间层,应用的性能要比原生代码编写的应用差一些
当时在开发Eclipse案例上比较成功(SWT)

图形用户界面库通常包含3个要素:组件、布局、事件
Java平台可选的图形界面库
①AWT:Abstract Window Toolkit:它在底层操作系统提供的原生图形用户界面的基础上,提供了一个新的抽象
②Swing:相对于重量级的AWT,Swing是轻量级的,而且提供了一些常用的复杂组件。Swing仍然是基于AWT。一个Swing用户界面是在一个空白的AWT组件上绘制的。
③SWT:Standard Widget ToolKit。是Eclipse使用的底层图形用户界面框架。和AWT类似,也采用创建底层操作系统中的原生控件的做法。也提供了和Swing可匹敌的组件库。
④JavaFX:因为现代的桌面应用对交互性提出了更高的要求,这些应用一般大量使用图片、音频和视频等多媒体内容。运行JavaFX开发的程序,还要安装JavaFX运行时。JavaFX未来将成为Java平台上主流的图形用户界面开发库。

分享到:
评论
1 楼 braveCS 2012-08-21  
    Android用户界面框架也是单线程用户界面。J2SE界面编程有两个主要的线程:main线程和事件队列线程。而android系统在程序开始时创建一个"main"线程负责向各个UI组件分发事件绘制组件,所以android的main线程也是UI线程。
    每个UI组件都是一个MVC模式,model组件显示内容的数据结构/数据模型,view绘制视图树,control控制器使用数据队列处理外部动作,可以将事件分配给对应的事件处理函数。

相关推荐

    javase可视化编程插件

    总的来说,JavaSE可视化编程插件通过图形化界面极大地提高了开发者的生产力,降低了编程复杂性,使非专业程序员也能轻松创建Java应用。对于教学、快速原型设计或者简单的应用开发,它都是一个非常有价值的工具。同时...

    13、JavaSE:Gui编程.pdf

    尽管Swing和AWT在外观上可能不如现代的UI工具包,但学习它们仍然具有重要意义,原因在于它们能够帮助我们理解和掌握GUI编程的基础,并且在维护老旧系统和进行小规模应用开发时,仍会用到这些知识。 在学习Swing和...

    JAVA低级UI写的一个手机界面

    7. **调试和测试**:由于UI界面涉及大量交互,测试和调试是非常重要的。开发者可能会使用Java的调试工具,如JConsole或VisualVM,以及JUnit进行单元测试,确保每个功能都能正常工作。 8. **性能优化**:虽然这是一...

    JavaSE项目最终总结

    JavaSE还包含了Swing和JavaFX两个图形用户界面(GUI)库,用于创建桌面应用程序。Swing基于轻量级组件模型,而JavaFX提供更现代的UI设计和动画支持。 在最新的JavaSE版本中,JDK(Java Development Kit)引入了许多...

    基于javase学生信息管理系统

    在这个系统中,JavaSE的特性如面向对象编程、异常处理、多线程等被广泛应用。通过JavaSE的Swing或JavaFX库,可以创建用户友好的图形用户界面(GUI),使得用户能直观地进行信息输入、查询和修改。同时,JavaSE的网络...

    大一-酒店管理系统javaSE

    5. 用户接口(UI)设计:定义了界面布局和样式,可能包括XML文件或自定义的Java类。 通过这个项目,学生可以学习到以下知识点: 1. Java编程基础,包括语法、类、对象和面向对象编程概念。 2. Swing组件的使用,...

    javaSE入门级PPT

    这份"javaSE入门级PPT"提供了全面的Java编程基础知识,适合初学者深入理解这个强大的编程语言。 1. **Java简介**:Java是由Sun Microsystems(现为Oracle公司所有)于1995年发布的面向对象编程语言,以其“一次编写...

    javaSE画图工具

    考虑到复杂的绘图操作可能会影响UI的响应速度,画图工具可能会使用异步处理,如SwingWorker,来执行耗时的任务,如加载大图像或保存文件,确保界面保持流畅。 9. 自定义绘图: 用户可能希望自定义图形,为此,...

    java期末大作业(orcal+javaSE源码)

    在本项目中,JavaSE主要负责图形化用户界面(GUI)的创建,可能是通过Swing或JavaFX库。用户可以通过GUI与系统交互,如输入查询条件、预订机票等。 GUI设计涉及JFrame、JButton、JLabel、JTextField等组件的使用,...

    JavaSE上机练习13.zip

    JavaSE是Java编程语言的基础,它提供了开发和运行桌面应用程序、服务器应用程序和嵌入式系统的环境。在这个练习集中,我们可以推测作者田超凡设计了一些针对初学者或进阶学习者的编程任务,帮助他们巩固和提升JavaSE...

    基于javase的网上商城例子程序

    在本项目中,“基于javase的网上商城例子程序”是一个使用Java标准版(Java SE)技术实现的电子商务平台示例。这个程序展示了如何利用Java语言和相关库来构建一个基本的网上购物系统,涵盖了用户注册、商品浏览、...

    JavaSE_Demo

    这个"JavaSE_Demo"很可能是包含了一系列的Java编程实例,帮助学习者深入理解Java SE的各种特性和功能。以下是对Java SE的一些关键知识点的详细说明: 1. **基础语法**:Java是一种面向对象的编程语言,其基础语法...

    JavaSE上机练习15.zip

    这个练习可能涉及到Java语言的基础知识,面向对象编程,以及GUI(图形用户界面)的开发。在WindowsFormsApplication3这个子文件中,我们可以推测作者可能是使用JavaFX或者Swing库来创建了一个基于Windows操作系统的...

    javaSE经典笔记( 完整)

    以下是对标题“javaSE经典笔记( 完整)”和描述中涉及的Java SE主要知识点的详细阐述: 1. **Java基础**:这是学习Java的第一步,包括Java语言的基本语法,如数据类型(基本类型和引用类型)、变量、运算符、流程...

    JAVA网上考试系统简单界面

    如果系统界面设计得更加现代化,JavaFX也可能被用到,因为它提供了更丰富的UI元素和动画效果。 三、MVC模式 在构建网上考试系统时,模型-视图-控制器(MVC)设计模式通常被采用。在这个模式中,模型负责处理数据和...

    聊天软件(JavaSE)

    3. **模型-视图-控制器(MVC)模式**:这是一种常见的软件设计模式,聊天软件的UI部分可以按照MVC模式进行组织,分离逻辑控制和界面展示。 五、数据库交互 1. **JDBC**:Java的JDBC(Java Database Connectivity)...

    javase做的坦克游戏

    这个坦克游戏项目不仅展示了JavaSE的基本编程技能,还涵盖了游戏开发的一些核心概念。通过学习和分析这个游戏,可以深入了解Java语言在实际项目中的应用,同时也能提高对游戏开发流程的理解。尽管项目可能并不全面,...

    记录JavaSE学习历程 Java学习资料

    在Java的学习过程中,JavaSE是基础,涵盖了语言语法、类库、面向对象编程以及异常处理等多个方面。本压缩包“java-se-getting-started-master”很可能是某个Java初学者或教育者整理的一系列学习资料,旨在帮助读者...

    JavaSE:java学习练习

    它是Java技术的基础,提供了核心的类库和API,包括集合框架、多线程、网络编程、I/O流、数据库连接(JDBC)、图形用户界面(GUI)等。JavaSE是学习Java编程语言的起点,掌握它对于进一步学习JavaEE(企业版)和...

    JAVASE 猜拳游戏

    3. **用户界面(UI)设计**:尽管没有具体提及,但游戏可能有一个简单的命令行界面或者图形用户界面(GUI)。如果是后者,那么可能使用了Java Swing或JavaFX库来构建,涉及到组件布局、事件监听等概念。 4. **...

Global site tag (gtag.js) - Google Analytics