java有什么好的gui框架知乎

Python0308

java有什么好的gui框架知乎,第1张

 1:java GUI框架类型

一种是比较老的AWT框架,一种是新的Swing框架。awt(Abstract window toolkit)的消息机制是基于分层处理的,事件沿着层次结构沿着容器的上方传递。自从java1.1开始,java开始采用新的事件处理模型,采用委托事件模型。

2:委托事件处理

事件源与事件处理程序分开,其实就是建立一种事件源,监听器的模式,事件源就是产生消息的源头,指的是Button,Checkbox ,CheckboxGroup,Choice,List,TextArea,TextField,Menu等各种各样的空间。

监听器就是各种各样的接口,程序要处理相应的时间就必须实现这些接口。

事件处理的逻辑步骤,(1)事件源添加监听器(2)实现监听器的接口。

3:事件类型,监听器相关接口

事件 监听器

ActionEvent ActionListener

AdjustmentEvent AdjustmentListener

ComponentEvent ComponentListener

Containe rEvent ContainerListener

FocusEvent FocusListener

KeyEvent KeyListener

MouseEvent MouseListener

WindowEvent WindowListener

ItemEvent ItemListener

TextEvent TextListener

事件添加以及删除函数,形式都如下所示:

addActionListener( ) //添加监听器

removeActionListener( ) //删除监听器

每个事件监听器都有一个或者几个接口,当implements interface时必须实现所有的的监听器的接口函数,即便函数什么也不做,为了减少这种写空函数的麻烦,java为监听器中函数多于一个提供了一个适配器,适配器里面有默认的函数,需要的时候仅仅重写需要重写的函数即可,如下所示:

class MyWindowListener extends WindowAdapter {

public void windowClosing(WindowEvent e) {

System.exit(0)

}

}

4:applet

applet是可以在HTML网页中运行的程序,它在运行的时候会有安全限制,它可以不需要main函数,一个典型的applet程序如下所示:

import java.awt.*

import java.applet.*

public class Applet1 extends Applet {

public void paint(Graphics g) {

g.drawString("First applet", 10, 10)

}

}

所有public类必须继承Applet类,Applet中主要的方法有 init(),start(),paint(),stop(),destroy(),

init 在程序片被创建时候调用start在程序片进入web浏览器后调用,是在Init之后stop是在程序片离开浏览器中的视野时关闭响应操作destroy是在程序片不再被需要时销毁程序片。

5:常用组件类型

(1)Button 按键

public Button()public Button(String label)

(2)TextFiled 输入框

TextField()TextField(int columns)TextField(String text)TextField(String text, int columns)

(3)TextArea 文本输入区域

TextArea()TextArea(int rows,int columns)TextArea(String text)

TextArea(String text,int rows,int columns)TextArea(String text,int rows,int columns,int scrollbars)

(4)Lable 标签

Label()Label(String text)Label(String text,int alignment)

(5)Checkbox 复选框

Checkbox()Checkbox(String label)Checkbox(String label, boolean state)

Checkbox(String label, boolean state, CheckboxGroup group)

Checkbox(String label, CheckboxGroup group, boolean state)

(6)CheckboxGroup 单选按钮

CheckboxGroup()

它把Checkbox 放在一起,如下所示:

CheckboxGroup cbg = new CheckboxGroup()

add(new Checkbox("one", cbg, true))

add(new Checkbox("two", cbg, false))

add(new Checkbox("three", cbg, false))

(7)Choice 下拉列表

Choice()

点击会会出现一个下拉列表,可以向其中添加Item,如下程序所示:

Choice ColorChooser = new Choice()

ColorChooser.add("Green")

ColorChooser.add("Red")

ColorChooser.add("Blue")

被Swing取代。第一代的javagui工具包,现在基本不在使用其中的组件,已经被Swing取代,但是Swing是扩展AWT而来。Swing是一种轻量级组件,底层以AWT为基础由Java语言开发,使跨平台应用程序可以使用任何可插拔的外观风格。

其实无论在什么平台下,GUI应用程序的基本开发方法都是相似的。一般都包括下面这样四个步骤:

①创建容器

首先要创建一个GUI应用程序,需要创建一个用于容纳所有其它GUI组件元素的载体,Java中称为容器。典型的包括窗口(Window)、框架(Frame/JFrame)、对话框(Dialog/JDialog)、面板(Panel/JPanel)等。只有先创建了这些容器,其它界面元素如按钮(Button/JButton)、标签(Label/JLabel)、文本框(TextField/JTextField)等才有地方放。 ②添加组件

为了实现GUI应用程序的功能,为了与用户交换,需要在容器上添加各种组件/控件。这需要根据具体的功能要求来决定用什么组件。例如,如果需要提示信息,可用标签(Label/JLabel)如果需要输入少量文本,可用文本框(TextField/JTextField)如果需要输入较多文本,可用文本区域(TextArea/JTextArea)如果需要输入密码,可用密码域(JPasswordField)等等。

③安排组件

与传统的Windows环境下的GUI软件开发工具不同,为了更好地实现跨平台,Java程序中各组件的位置、大小一般不是以绝对量来衡量,而是以相对量来衡量。例如有时候,程序的组件的位置是按"东/East"、"西/West"、"南/South"、"北/North"、"中 /Center"这种方位来标识的。因此,在组织界面时,除了要考虑所需的组件种类外,还需要考虑如何安排这些组件的位置与大小。这一般是通过设置布局管理器(Layout Manager)及其相关属性来实现的。事实上上述按方位来安排组件就是采用了Java中多种布局管理器里的BorderLayout布局管理器。

④处理事件

为了完成一个GUI应用程序所应具备的功能,除了适当地安排各种组件产生美观的界面外,还需要处理各种界面元素事件,以便真正实现与用户的交换,完成程序的功能。在Java程序中这一般是通过实现适当的事件监听者接口来完成的。比如如果需要响应按钮事件,就需要实现 ActionListener监听者接口如果需要响应窗口事件,就需要实现WindowListener监听者接口。