nullJava GUI 编程Java GUI 编程目录目录GUI概述
组件与容器
布局管理器
事件处理Java GUI 概述Java GUI 概述Java将创建图形用户界面的元素抽象为组件(component),相应的类位于java.awt和javax.swing两个包中。
AWT包含了早期图形界面元素,主要是调用本地操作系统的图形元素。自从Java 2后,Swing对AWT做了大幅扩充,成为图形界面设计的主要包。
Swing组件是纯Java实现的轻量级组件,不 依赖于本地操作系统的支持,这是与AWT组件的最大区别。组件类的继承关系组件类的继承关系第一个窗口程序第一个窗口程序public class SimpleWindows {
public static void main(String[] args) {
JFrame aWindow = new JFrame();
aWindow.setBounds(40, 100, 400, 150);
aWindow.setVisible(true);
}
}XY组件(component)组件(component)组件指的是任何一个可以显示在屏幕上的图形实体,它是Component类的任何一个子类的对象。
下图显示了Component类及其子类的层次图:组件类的继承关系组件类的继承关系组件(component)组件(component)上图中有四个关键组件:即4个顶层容器(JFrame,JApplet,JDialog和JWindow)和一个轻量级组件(JComponent )。
所有Swing组件都是以JComponent为基类,都定义在包javax.swing中,且类名都以“J”开头。
JComponent类的子类JComponent类的子类常用Java组件常用Java组件容器(container)容器(container)容器指的是可以容纳其它组件的组件。所以容器首先是一个组件,其次是它扩展了包含其它组件的能力。
所有容器类的基类是Container类。
组件不能独立地显示出来,必须将组件放在容器。
容器可以简化图形化界面的设计,以整体结构来布置界面。
所有的容器都可以通过add()方法向容器中添加组件。组件与容器的层次关系组件与容器的层次关系JMenuBarJLayeredPaneJRootPaneJGlassPaneJContentPaneJFrame JDialog JApplet JWindow示例程序见:Demo_Hierarchy.java容器分类容器分类顶层容器窗体
JFrame; JWindow; JApplet;
对话框JDialog(JOptionPane)
中间层容器
面板JPanel; 滚动窗格JScrollPane, JScrollBar; 拆分窗格JSplitPane; 索查标签窗格JTabbedPane
特殊容器
内部窗体JInternalFrame; 分层窗格JLayeredPane; 根窗格JRootPaneJFrameJFrame窗口是最基本的用户界面元素。JFrame是一种窗体,其中带有边框、标题栏及用于关闭和最大/最小化窗口的图标等。在GUI的应用程序中,一般至少应使用一个框架窗口。通常将框架窗口简称为窗口。
JFrame构造方法主要有:
JFrame(),建立一个无标题的JFrame。
JFrame(String title),建立一个标题为title的JFrame。JFrame的基本操作JFrame的基本操作创建窗口:生成一个JFrame类的实例即可建立一个窗口。
设置标题: setTitle(String title)
设置位置: setLocation(int x,int y)
设置大小: setSize(int width,int height)
设置图标: setIconImage(Icon icon)
添加组件:有两种方式:
JPanel conPane=new JPanel();
frame.setContentPane(conPane);
或: frame.getContentPane().add(childComponent); JFrame的基本操作JFrame的基本操作定义关闭行为: 通过setDefaultCloseOperation(int operation)方法设置关闭行为。其中operation的取值可以是以下几种:
DO_NOTHING_ON_CLOSE:当窗口关闭时,不做任何处理;
HIDE_ON_CLOSE:当窗口关闭时,隐藏这个窗口;
DISPOSE_ON_CLOSE:当窗口关闭时,隐藏并处理这个窗口;
EXIT_ON_CLOSE:当窗口关闭时,退出程序。
默认是HIDE_ON_CLOSE。
更多JFrame的操作参加Java说明文档!一个JFrame的例子一个JFrame的例子public class SimpleWindows {
public static void main(String[] args) {
JFrame aWindow = new JFrame();
aWindow.setBounds(40, 100, 400, 150);
aWindow.setTitle("最简单的窗口程序");
aWindow.setResizable(false);
aWindow.setVisible(true);
}
}更多应用参见范例代码:SimpleWindows.javaJWindow & JDialogJWindow & JDialog无边框的窗口JWindow,构造方法有:
JWindow():创建一个无边界的窗口;
JWindow(Frame owner):创建一个依赖Frame对象的窗口。
对话框JDialog,构造方法有:
JDialog(Frame owner);
JDialog(Frame owner,Boolean modal);
JDialog(Frame owner,String title);
JDialog(Frame owner,String title,Boolean modal);范例代码:Demo_JWindow.javaJPannelJPannel面板JPanel:是一个非顶级的通用容器,总是处于其它一些容器中。JPanel不能象JFrame那样能够在桌面上浮动。利用JPanel可以使版面的排列方式更生动,对于复杂GUI,通常由多个面板组成,而每个面板以特定的布局来排列组件。
JPanel的构造方法有:
JPanel();
JPanel(boolean isDoubleBuffered);
JPanel(LayoutManager layout);一个GUI的范例一个GUI的范例范例代码见:GUISample.java布局管理器(layout manager)布局管理器(layout manager)决定组件在容器中的排列方式称为布局管理器。容器通过布局管理器来管理每个组件的位置和大小。每一个容器都有一个默认的布局管理器。
从本质上说,一个布局管理器是对组件的布局的一种管理规则。从Java语言角度看,布局管理器是一个类,是对一种布局规则的Java实现。java.awt和javax.swing包中定义了许多布局管理器类。
容器除了其默认的布局管理器外,也可以通过setLayout()方法改用其它布局管理器。
布局管理器(layout manager)布局管理器(layout manager)Java常见的几种布局管理器有:
FlowLayout
BorderLayout
CardLayout
GridBagLayout
BoxLayout
GridLayout
每种布局管理器都确定了其中的组件的位置和大小,程序员不应自己修改其位置和大小。
布局管理器举例: BorderLayout布局管理器举例: BorderLayoutpublic class Demo_BorderLayout {
frame = new Frame("Border Layout");
frame.setLayout(new BorderLayout());
......
bn = new Button("B1");
......
frame.add(bn, BorderLayout.NORTH);
......
}示例程序见:Demo_BorderLayout.java布局管理器举例: GridLayout布局管理器举例: GridLayoutpublic class Demo_GridLayout {
frame = new Frame("Grid Layout");
frame.setLayout(new GridLayout (3,2));
......
b1 = new Button(“button 1");
......
frame.add(b1);
......
}示例程序见: Demo_GridLayout.java创建复杂布局创建复杂布局示例程序见: Demo_Caculater.javaBorderLayoutGridLayoutJava GUI 设计步骤Java GUI 设计步骤创建顶层窗口,例如JFrame、JApplet等。
构建若干个组件及容器。
确定布局管理器。
将组件添加到容器中。
设置组件的颜色、字体等属性。
添加组件的事件处理。事件(event)事件(event)事件(event):基于窗口的Java应用程序将用户的操作(例如单击按钮、鼠标移动等)抽象为“事件”。Java定义了大量事件类,包含在java.awt.event和javax.swing.event包中。
事件源(event source):每一个可以触发事件的组件被当作事件源。
监听器(listener):用来接收和处理每一种事件。不同类型的事件对应不同的监听器。
Java事件处理机制Java事件处理机制Java采用委托事件模型(delegation event model)来处理事件。即将发生的事件交给专门的监听器去处理,而不是由引发事件的对象本身来处理。事件源事件 监听器
class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e){
//事件处理代码
}
}
注册产生传递给事件处理的软件实现事件处理的软件实现事件类(XXXEvent)
事件监听接口(XXXListener)
组件的注册监听接口方法(addXXXListener()方法)示例程序见:Demo_Event.java实现事件处理的4种方式实现事件处理的4种方式自身类作为事件监听器 (参见EventTester1.java)
外部类作为事件监听器 (参见EventTester2.java)
匿名内部类作为事件监听器 (参见EventTester3.java)
内部类作为事件监听器 (参见EventTester4.java)事件适配器(event adaptor)事件适配器(event adaptor)适配器是实现了监听接口的类,只是在实现中未写入任何代码,目的就是避免下面的问题:如果接口中有很多 方法,而你要处理的事件仅一个或少数几个,而如果用实现接口的方式,须把接口中的其它方法均实现,这样是很麻烦的。所以JDK给提供了事件适配器类,使得程序员只须关注要处理的事件即可。 示例程序见:Demo_Adaptor.javaEclipse的图形界面开发Eclipse的图形界面开发第一步:点击“New-Other”,在“Swing Designer”中选择“JFrame”,点“Next”。 Eclipse的图形界面开发Eclipse的图形界面开发第二步:输入类的名称,点击“Finish”。 Eclipse的图形界面开发Eclipse的图形界面开发第三步:进入图形界面设计模式。
本文档为【Java GUI编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。