Java图形界面知识讲解
- 格式:doc
- 大小:147.01 KB
- 文档页数:11
Java图形用户界面:Swing和JavaFX的简单介绍在计算机科学领域中,图形用户界面(GUI)是指通过图形、图像和视觉元素来与计算机程序进行交互的界面。
Java作为一种广泛使用的编程语言,提供了多种选择来构建图形用户界面。
其中,Swing和JavaFX是最常用的两种选择。
本文将对这两种Java GUI工具进行简单介绍,并探讨它们的特点和用途。
一、SwingSwing是Java提供的一套GUI工具包,旨在提供一种跨平台的解决方案。
它是在AWT(抽象窗口工具包)的基础上开发的,为开发者提供了一系列可重用的GUI组件,如按钮、文本框、标签等。
Swing的特点之一是其轻量级性能,它不依赖于操作系统的原生GUI组件,而是完全由Java代码实现。
这使得Swing应用程序可以在不同操作系统上以相同的方式运行,而无需进行任何修改。
Swing提供了丰富的组件库,使得开发者可以轻松构建复杂的用户界面。
它还支持可定制的外观和感觉,开发者可以根据自己的需求选择不同的外观主题。
此外,Swing还提供了一些高级组件,如表格、树形结构和滚动面板,使得开发者可以创建更复杂和功能强大的界面。
然而,Swing也有一些缺点。
由于其完全由Java代码实现的特性,Swing应用程序可能在性能方面存在一些问题。
尤其是在处理大量数据或复杂图形时,Swing的性能可能会受到影响。
此外,Swing的外观和感觉可能与操作系统的原生界面存在一些差异,这可能会对用户体验造成一定的影响。
二、JavaFXJavaFX是Java平台上的另一种GUI工具,它提供了更现代化和富有表现力的用户界面。
与Swing不同,JavaFX使用了一种基于场景图的方式来构建界面。
它通过使用FXML(一种基于XML的用户界面描述语言)和CSS(层叠样式表)来分离界面的结构和样式,使得界面的定制变得更加灵活和简单。
JavaFX提供了许多内置的UI组件,如按钮、文本框、标签等,这些组件具有更丰富的视觉效果和交互特性。
第4章图形用户界面设计本章要点● Java图形用户界面设计的基本知识●布局管理器的应用● Java常用图形用界面设计组件的应用● Java常用组件事件处理的应用4.1 认识AWT包和Swing包用户界面是计算机用户与软件之间的交互接口。
一个功能完善,使用方便的用户界面可以使软件的操作更加简单,使用户与程序之间的交互更加有效。
因此图形用户界面(graphics user interface,GUI)的设计和开发已经成为软件开发中的一项重要的工作。
Java语言提供的开发图形用户界面(GUI)的功能包括AWT(Abstract Window Toolkit)和Swing两部分。
这两部分功能由Java的两个包来完成-awt和swing。
虽然这两个包都是用于图形用户界面的开发,但是它们不是同时被开发出来了。
awt包是最早被开发出来的。
但是使用awt包开发出来的图形用户界面并不完美,在使用上非常的不灵活。
比如awt包所包含的组件,其外观是固定的,无法改变,这就使得开发出来的界面非常死板。
这种设计是站在操作系统的角度开发图形用户界面,主要考虑的是程序与操作系统的兼容性。
这样做的最大问题就是灵活性差,而且程序在运行时还会消耗很多系统资源。
由于awt包的不足表现,SUN公司于1998年针对它存在的问题,对其进行了扩展,开发出了Swing,即swing包。
但是,SUN公司并没有让swing包完成替代awt包,而是让这两个包共同存在,互取所需。
awt包虽然存在缺点,但是仍然有可用之处,比如在图形用户界面中用到的布局管理器、事件处理等依然采用的是awt包的内容。
Java有两个主要类库分别是Java包和Javax包。
在Java包中存放的是Java语言的核心包。
Javax包是Sun公司提供的一个扩展包,它是对原Java包的一些优化处理。
swing包由于是对awt包的扩展和优化,所以是存放在Javax包下的,而awt包是存放在Java包下的。
java图形化用户界面及Applet学习总结一、javaAppletApplication和Applet是Java程序的两种基本形式。
Applet是特殊的Java程序,它不需要专门的解释器来执行它,相对于Java Appliction 的解释器,如JDK的java.exe,VJ++的jview.exe,Java Applet的解释器就是Internet的浏览器,确切地讲就是兼容Java的Internet浏览器。
Applet的工作原理:1,.class和HTML保存在服务器2,当浏览器向服务器请求下载嵌入了Applet的HTML文件时。
3,下载到客户端后,由浏览器解释HTML中的各种标记并显示在用户屏幕上,当浏览器遇到HTML文件中的一个特殊标记时,表明嵌有Applet程序,浏览器会根据Applet名字和位置把其字节码文件从WWW服务器上下载到本地。
4,利用浏览器本身拥有的Java解释器执行该字节码。
Applet类的使用:Java Applet程序必须有一个主类,其父类是系统的Applet类,正是通过这个类才能完成Applet程序与浏览器的配合存在于java.applet包中,从继承结构上说属于用户图形界面的java.awt包,是系统类java.awt.Panel的子类,由于Applet类的特殊,系统专门为它建立了一个java.applet 包Applet类是Panel的子类Panel类的作用:(1)包容和排列其他的界面元素,如按钮、对话框等;(2)响应它所包容范围之内的事件,或把事件向更高层次传递。
Applet类的作用:Applet在继承上述作用的基础上,还具有一些与浏览器和Applet 生命周期有关的专门方法Applet类的主要方法:1、完成初始化操作的init()方法Applet的字节码文件从WWW服务器下载后,浏览器将自动创建一个Applet 类的实例并调用它从Applet类那里继承来的init()方法。
Frame1.按钮:Frame f =new Frame(“hello”);f.setSize(200,200);f.setVisible(true);//让其显示Panel p=new Panel();f.add(p);Button b= new Button(“确定”);p.add(b);Button对象构造器的参数是按钮上显示的内容2.复选框Checkbox c1=new Checkbox(“汉堡”,true);Checkbox c2= new Checkbox(“薯条”,true);p.add(c1);p.add(c2);注:构造器中第一个参数代表复选框显示的内容,第二个参数true代表该项默认选中3.单选项先创建一个CheckboxGroup对象:CheckboxGroup g=new CheckboxGroup();将g作为参数传递到各个单选按钮,在这一组单选按钮中,用户只能选一个:Checkbox ch1=new Checkbox(“人民币”,g,true);Checkbox ch2=new Checkbox(“美金”,g,false);p.add(ch1);p.add(ch2);4.下拉列表框先创建Choice对象:Choice c=new Choice();利用addItem()方法添加各种选项c.addItem(“男”);c.addItem(“女”);p.add(c);5.列表框先创建List对象,第一个参数指定显示几行,第二个参数为true则支持多选,false则一次只能选中一个:List t=new List(4,true);利用add方法添加各种文本选项:t.add(“今天”);t.add(“昨天”);p.add(t);6.在窗口显示对话框Frame f=new Frame(“hello”);对话框与某个Frame对象关联,但不是放在Frame中。
第二个参数为对话框标题栏的内容。
第三个参数为true代表用户处理玩对话框后才可以和Frame进行交互,flase则代表用户可以同时和Frame交互:Dialog d=new Dialog(f,”hello”,true);D.add(new Button(“OK”));f.setSize(200,200);f.setVisible(true);d.setSize(100,100);d.setVisible(true);7.文件对话框Frame f=new Frame(“hello”);第一个参数指定对话框和哪个Frame相关。
第二个参数指定对话框标题栏内容:FileDialog d=new FileDialog(f,”test”);f.setSize(200,200);f.setVisible(true);d.setVisile(true);得到所选的目录和文件名String s=d.getDirectory()+d.getFile();System.out.println(s);8.标签——显示字符串Frame f=new Frame(“hello”);Lable l1=new Lable(“想吃什么”);Lable l2=new Lable(“付款方式”);Panel p=new Panel();p.add(l1);p.add(l2);f.add(p);f.setSize(200,200);f.setVisible(true);完整的例子Frame f=new Frame(“hello”);Lable l1=new Lable(“想吃什么”);Lable l2=new Lable(“付款方式”);Panel p=new Panel();`Checkbox c1=new Checkbox(“汉堡”,true);Checkbox c2= new Checkbox(“薯条”,true);p.add(c1);p.add(c2);P.add(l2);CheckboxGroup g=new CheckboxGroup();Checkbox ch1=new Checkbox(“人民币”,g,true);Checkbox ch2=new Checkbox(“美金”,g,false);p.add(l1);p.add(l2);f.add(p);f.setSize(200,200);f.setVisible(true);9.滚动面板——可自动产生滚动条Frame f=new Frame(“hello”);ScrollPane sp=new ScrollPane();Panel p=new Panel();f.add(sp);sp.add(p);p.add(new Button(“ok”));p.add(new Button(“cancel”));p.add(new Button(“reset”));f.setSize(100,100);f.setVisible(true);10.单行文本框Frame f=new Frame(“hello”);第一个参数为初始显示的字符串。
第二个参数为文本框最大输入的字符数:TextField t=new TextField(“input”,30);Panel p=new Panel();f.add(t);p.add(p);f.add(p);f.setSize(300,300);f.setVisible(true);11.多行文本输入框Frame f=new Frame(“hello”);第一个参数为初始显示的字符串,第二个参数为显示的行数,第三个参数为显示的宽度:TextArea t=new TextArea(“input”,4,30);Panel p=new Panel();p.add(t);f.add(p);f.setSize(300,300);f.setVisible(true);12.菜单Frame f=new Frame(“hello”);菜单:Menu m1=new Menu(“File”);菜单项:Menu m11=newMenuItem(“Open”);Menu m12=new MenuItem(“Save”);m1.add(m11);m2.add(m12);菜单栏:MenuBar mb=new MenuBar();mb.add(m1);在Frame中使用定义好的菜单栏f.setMenuBar(mb);f.setSize(300,300);f.steVisible(true);13.快捷菜单Frame f=new Frame(“hello”);PopupMenu m1=new PopupMenu(“File”);MenuItem m11=new MenuItem(“Open”);MenuItem m12=new MenuItem(“Save”);m1.add(m11);m1.add(m12);f.add(m1);f.setSize(300,300);f.setVisible(true);第二个和第三个参数指定快捷键菜单对应组件的相对显示位置:m1.show(f,20,50);布局1.边界布局举例Frame f=new Frame(“hello”);Panel p=new Panel();BorderLayout b1=new BorderLayout();p.setLayout(b1);//指定布局p.add(new Button(“ok1”),”East”);p.add(new Button(“ok2”),”West”);p.add(new Button(“ok3”),”South”);p.add(new Button(“ok4”),”North”);p.add(new Button(“ok5”),”Center”);f.add(p);f.setSize(200,200);f.setVisible(true);2.流布局FlowLayout从左到右,自上而下a.创建流布局对象FlowLayout t=new FlowLayout();FlowLayout t=new FlowLayout(FlowLayout.RIGHT);FlowLayout t=new FlowLayout(FlowLayout.LEFT,10,20);b.指定容器使用该布局f.setLayout(t);流布局例子Frame f=new Frame(“hello”);Panel p=new Panel();FlowLayout f1=new FlowLayout();p.setLayout(f1);p.add(new Button(“ok1”));p.add(new Button(“ok2”));p.add(new Button(“ok3”));p.add(new Button(“ok4”));f.add(p);f.pack();f.setVisible(true);3.卡片布局卡片布局将各个界面叠加在一起,每添加一个组件,都为其起一个名字。
举例Frame f=new Frame(“hello”);Panel p1=new Panel();Panel p2=new Panel();Panle p3=new Panel();CardLayout b1=new CardLayout();f.setLayout(b1);p1.add(new Button(“1”));p2.add(new Button(“2”));p3.add(new Button(“3”));f.add(p1,”1”);f.add(p2,”2”);f.add(p3,”3”);b1.show(f,args[0]);f.setSize(200,200);f.setVisible(true);4.网格布局网格布局将窗口分为几行几列的网格,按照从左至右,自上而下的方式依次放置组件。
网格有2行3列:GridLayout b1= new GridLayout(2,3);组件的水平和垂直间隔是10和20:GridLayout b1=new GridLayout(2,3,10,20);例子Frame f=new Frame(“hello”);Panel p=new Panel();GridLayout b1=new GridLayout(2,3,10,20);p.setLayout(b1);p.add(new Button(“1”));p.add(new Button(“2”));p.add(new Button(“3”));p.add(new Button(“4”));p.add(new Button(“5”));p.add(new Button(“6”));f.add(p);f.setSize(200,200);f.setVisible(true);5.null布局使用null布局可以达到精确定位和控制组件大小的要求。