当前位置:文档之家› Java图形用户界面设计

Java图形用户界面设计

Java图形用户界面设计
Java图形用户界面设计

前言

随着Internet的飞速发展,Java技术也得到了越来越广泛的应用。而无论我们是采用J2SE、J2EE还是J2ME,GUI都是不能回避的问题。现在的应用软件越来越要求界面友好、功能强大而又使用简单。而众所周知,在Java中进行GUI 设计相对于其跨平台、多线程等特性的实现要复杂和麻烦许多。这也是很多Java 程序员抱怨的事情。但GUI已经成为程序发展的方向,所以我们也必须了解Java 的GUI设计方法和特点。其实,采用Java提供的布局管理器接口和相应的布局管理类,我们也可以做出相当漂亮的界面来,当然实现起来肯定要比VB麻烦许多。本文试图通过自己的开发经历介绍一些具体的应用实例,希望能给那些曾经象我一样苦闷的Java痴迷者一些帮助。

Java中的布局管理器

2.1 为什么要使用布局

在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。为了管理好这些组件的布局,我们就需要使用布局管理器。比如说,设计一个简单的计算器,或一个文本编辑器等等。这些组件是让JVM 自己任意安排呢?还是按照一定的位置关系进行规范的安排呢?当然应该选择后者。将加入到容器的组件按照一定的顺序和规则放置,使之看起来更美观,这就是布局。在Java中,布局由布局管理器 (LayoutManager) 来管理。那么,我们在什么时候应该使用布局管理器?应选择哪种布局管理器?又该怎样使用布局管理器呢?

如果你写的是GUI程序,在使用AWT/Swing组件时就不应硬性设置组件的大小和位置,而应该使用Java的布局管理器(LayoutManager)来设置和管理可视组件的大小和位置,否则就有可能造成布局混乱。不信,你可以新建一个Frame(或JFrame),通过setBounds()方法往其中添加几个Button(或JButton),一旦你将窗体拉大或缩小时,你会发现组件的排列完全不是按你所预想的那样。为了解决这个问题,即当窗体(或容器)缩放时,组件位置也随之合理调整,我们就需要使用布局管理器。

为此,我们首先要知道Java的布局方式,Java提供的API中有些什么布局管理器,它们的布局特点是什么。

2.2 Java的布局方式

我们都知道,Java的GUI界面定义是由AWT类包和Swing类包来完成的。它在布局管理上采用了容器和布局管理分离的方案。也就是说,容器只管将其他组件放入其中,而不管这些组件是如何放置的。对于布局的管理交给专门的布局管理器类(LayoutManager)来完成。

现在我们来看Java中布局管理器的具体实现。我们前面说过,Java中的容器类(Container),它们只管加入组件(Component),也就是说,它只使用自己的add()方法向自己内部加入组件。同时他记录这些加入其内部的组件的个数,可

以通过container.getComponentCount()方法类获得组件的数目,通过container.getComponent(i)来获得相应组件的句柄。然后LayoutManager类就可以通过这些信息来实际布局其中的组件了。

Java已经为我们提供了几个常用的布局管理器类,例如: FlowLayout、BorderLayout、GridLayout、GridBagLayout等。下面列表说明它们的布局特点:

事实上,在大多数情况下,综合运用好这些布局管理器已可以满足需要。当然对于特殊的具体应用,我们可以通过实现LayoutManager或LayoutManager2接口来定义自己的布局管理器。下面我们通过几个实例来了解几个常用的布局管理器的使用方法。

点此发表你的看法>>【已有位网友发表了看法】

3.1 FlowLayout/GridLayout/BorderLayout的应用实例

3.1.1应用背景

假设我们要编写一个简单的计算器JApplet,其基本界面如下:

3.1.2解决方法

通过其界面要求可知,我们可以通过将"BackSpace"和"Clear"JButton放置在一个JPanel(1)中,采用FlowLayout布局;将显示结果的JTextField和该

JPanel一起放置到另外一个JPanel(2),采用GridLayout布局;而将其它的JButton则放置在另外一个JPanel(3)中,采用GridLayout布局;再将JPanel(2)和JPanel(3)加入该JApplet,即可实现界面需求。具体实现方法如下:

这样,就一切OK啦。具体的实现代码可参见附件中的CalculateApplet.java 文件。

3.2 带工具栏和状态栏的GridLayout/BorderLayout应用实例

3.2.1实际问题

在很多情况下我们需要动态设置工具栏和状态栏,看下面的应用实例:

以上是在视图的工具栏和状态栏都被复选的时候,以下分别为某一个没选或都未选的情况。

3.2.2解决方法

1/**工具栏JToolBar采用从左开始的FlowLayout布局*/

2 JToolBar toolBar = new JToolBar();

3 toolBar.setBorderPainted(false); //不画边界

4 toolBar.setLayout(new FlowLayout(FlowLayout.LEFT));

5

6/**窗体采用动态的BorderLayout布局,通过获取工具栏或状态栏的复选标记进行界面的动态调整*/

7 JSplitPane splitPane = new JSplitPane();

8 splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT); //设置统计窗口分隔条的方向

9 splitPane.setDividerLocation(300); //设置分隔条的位置

10 splitPane.setOneTouchExpandable(true);

11 JCheckBoxMenuItem toolBarItem = new JCheckBoxMenuItem("工具栏(T)", true);

12 JLabel statusLabel = new JLabel("当前统计目标:");

13 JCheckBoxMenuItem statusBarItem = new JCheckBoxMenuItem("状态栏(S)", true);

14/**设置系统窗体布局并动态设置工具栏和状态栏*/

15private void setLayout()

16 {

17if (toolBarItem.getState() &&' statusBarItem.getState())

18 {

19this.getContentPane().add(BorderLayout.NORTH, toolBar); 20this.getContentPane().add(BorderLayout.CENTER, splitPa ne);

21this.getContentPane().add(BorderLayout.SOUTH, statusLa bel);

22 }

23else if (toolBarItem.getState() && !statusBarItem.getState ())

24 {

25this.getContentPane().add(BorderLayout.NORTH, toolBar); 26this.getContentPane().remove(statusLabel);

27 }

28else if (statusBarItem.getState() && !toolBarItem.getState ())

29 {

30this.getContentPane().add(BorderLayout.SOUTH, statusLa bel);

31this.getContentPane().remove(toolBar);

32 }

33else if (!toolBarItem.getState() && !statusBarItem.getStat

e())

34 {

35this.getContentPane().remove(toolBar);

36this.getContentPane().remove(statusLabel);

37 }

38this.show(); //添加或移去组件后刷新界面

39 }

40

通过该方法即可实现界面的动态刷新与调整。

3.3 GridBagLayout应用实例

3.3.1实际问题

GridBagLayout是Java API提供的一个较复杂的布局管理器,利用好它可

以解决许多实际编程中的令人烦恼的界面设计问题。看下面的界面应用实例:

3.3.2解决方法

1/**系统的界面布局实现*/

2 GridBagConstraints gridBag = new GridBagConstraints();

3 gridBag.fill = GridBagConstraints.HORIZONTAL; //以水平填充方式布局

4 gridBag.weightx = 0; //行长不变

5 gridBag.weighty = 0; //列高不变

6 fromLabel.setForeground(Color.blue);

7 fromLabel.setFont(new Font("Alias", Font.BOLD, 16));

8this.add(fromLabel, gridBag, 0, 1, 1, 1); //指定发信人标签位置

9 receiveLabel.setForeground(Color.blue);

10 receiveLabel.setFont(new Font("Alias", Font.BOLD, 16));

11this.add(receiveLabel, gridBag, 0, 2, 1, 1); //指定收信人标签位置及大小

12 ccLabel.setForeground(Color.blue);

13 ccLabel.setFont(new Font("Alias", Font.BOLD, 16));

14this.add(ccLabel, gridBag, 0, 3, 1, 1); //指定抄送人标签位置及大小

15 subjectLabel.setForeground(Color.blue);

16 subjectLabel.setFont(new Font("Alias", Font.BOLD, 16));

17 his.add(subjectLabel, gridBag, 0, 4, 1, 1); //指定主题标签位置及大小

18 accessoryLabel.setForeground(Color.blue);

19 accessoryLabel.setFont(new Font("Alias", Font.BOLD, 16));

20this.add(accessoryLabel, gridBag, 0, 5, 1, 1); //指定附件标签位置及大小

21 gridBag.weightx = 100; //行自适应缩放

22 gridBag.weighty = 0;//列高不变

23 fromField.setText("admin@https://www.doczj.com/doc/198120472.html,");

24this.add(fromField, gridBag, 1, 1, 2, 1); //指定发信人文本域(JTextField)位置及大小

25this.add(receiveField, gridBag, 1, 2, 2, 1); //指定收信人文本域(JTextField)位置及大小

26this.add(ccField, gridBag, 1, 3, 2, 1); //指定抄送人文本域(JT extField)位置及大小

27this.add(subjectField, gridBag, 1, 4, 2, 1); //指定主题文本域(JTextField)位置及大小

28 accessoryArea.setEditable(false);

29//设置不显示水平滚动条(该JTextArea置于JScrollPane中)

30 accessoryScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTA L_SCROLLBAR_NEVER);

31this.add(accessoryScroll, gridBag, 1, 5, 2, 1); //指定附件文本区(JTextArea)位置及大小

32 gridBag.fill = GridBagConstraints.BOTH;//采用全填充方式布局

33 gridBag.weightx = 100;//行自适应缩放

34 gridBag.weighty = 100;//列自适应缩放

35 mailArea.setBackground(Color.blue);

36 mailArea.setForeground(Color.yellow);

37 mailArea.setTabSize(4);

38//指定信件主体区(JTextArea)的位置及大小。(该JTextArea也置于JScrollPane中)

39this.add(scroll, gridBag, 0, 6, 3, 1);

40在上面用到一个方法add(),这个方法是自己定义的:

41private void add(Component c, GridBagConstraints gbc, int x, int y, int w, int h)

42 {

43 gbc.gridx = x;

44 gbc.gridy = y;

45 gbc.gridheight = h;

46 gbc.gridwidth = w;

47this.getContentPane().add(c, gbc);

48 }

49

这个界面的设计比较复杂,涉及多个标签域(JLabel)、文本域(JTextField、JTextArea),且标签域的大小还不一样,如附件标签;并当窗体缩放时,标签域的大小应不改变,而文本域则必须自适应缩放。如何来实现呢?请看下面的代码:(工具栏的实现不再赘述)

在用到GridBagLayout布局管理器的组件添加方法中,都可以重用它。事实上,你还可以在方法最前面加一个参数Container cn,而将方法中的this相应的改为cn,就可以通用于所有需要使用GridBagLayout进行布局管理的容器中。在下面的复杂例程中我们就会用到。

3.4 综合多个布局的复杂应用实例

3.4.1实际问题

请看下面的实际应用界面要求:

(图3.4-1)

(图3.4-2)

(图3.4-3)

在这个具体应用中,底部的JButton组是确定的,但JTabbedPane的每一个选项都不同,如何实现呢?

3.4.2解决方案

1 JTabbedPane dbTabPane = new JTabbedPane();

2……//下面需要用到的JButton等组件变量定义(或声明)

3private void initLayout()

4 {

5 initDBTabPane();//初始化JTabbedPane:DBTabPane组件

6this.getContentPane().add(BorderLayout.CENTER, dbTabPane);

7//将JTabbedPane组件:dbTabPane布局于JDialog对话框的中间

8 initButtonPanel();//初始化JPanel:ButtonPanel组件

9this.getContentPane().add(BorderLayout.SOUTH, buttonPanel); 10//将JPanel组件:buttonPanel布局于JDialog对话框的底部(南面)11 }

12private void initDBTabPane()

13 {

14 JPanel loginPanel = new JPanel(new GridLayout(10, 1));

15//为保证两个JCheckBox组件位于顶端,设置为共10行,每行一个组件的布局,但只

16//放置界面要求的两个组件,这样就保持了界面的美观,否则如定义为

17//Gridlayout(2,1)则会使两个组件居中,而且中间会隔开较长的距离。

18 pwdBox.setMnemonic('P');

19 loginPanel.add(pwdBox);

20 dspBox.setMnemonic('D');

21 loginPanel.add(dspBox);

22 dbTabPane.add("Login", loginPanel); //设置"Login"JPanel(图3.4-1)的布局

23 needRadio.setMnemonic('N');

24 allRadio.setMnemonic('A');

25 cacheRadio.setMnemonic('U');

26 radioPanel.setBorder(new TitledBorder("Load Option"));//加上边界标题

27 radioPanel.add(needRadio);

28 radioPanel.add(allRadio);

29 radioPanel.add(cacheRadio);

30//以上为加入需要的JRadioButton组件到指定的JPanel: radioPanel

31 queryPanel.add(radioPanel);//加入含JRadioButton组的JPanel 到queryPanel

32 reqBox.setMnemonic('R');

33 boxPanel.add(reqBox);

34 saveBox.setMnemonic('S');

35 boxPanel.add(saveBox);

36 autoBox.setMnemonic('t');

37 boxPanel.add(autoBox);

38//以上为加入需要的JCheckBox组到指定的JPanel:boxPanel

39 queryPanel.add(boxPanel); //加入含JCheckBox组的JPanel到q ueryPanel

40 dbTabPane.add("Query", queryPanel);//设置"Query"JPanel(图3.4-2)的布局

41 initDrvPanel();

42 }

43/**设置"Drivers"JPanel(图3.4-3)的布局*/

44private void initDrvPanel()

45 {

46 gridBag.fill = GridBagConstraints.HORIZONTAL;

47 gridBag.weightx = 100;

48 gridBag.weighty = 0;

49 tipLabel.setForeground(Color.black);

50this.add(drvPanel, tipLabel, gridBag, 0, 0, 4, 1);

51 urlLabel.setForeground(Color.black);

52this.add(drvPanel, urlLabel, gridBag, 0, 5, 4, 1);

53 urlField.setEditable(false);

54this.add(drvPanel, urlField, gridBag, 0, 6, 4, 1);

55 gridBag.weightx = 0;

56 gridBag.weighty = 0;

57 addButton.setMnemonic('A');

58this.add(drvPanel, addButton, gridBag, 3, 1, 1, 1);

59 editButton.setMnemonic('E');

60this.add(drvPanel, editButton, gridBag, 3, 2, 1, 1);

61 removeButton.setMnemonic('R');

62this.add(drvPanel, removeButton, gridBag, 3, 3, 1, 1);

63 gridBag.fill = GridBagConstraints.BOTH;

64 gridBag.weightx = 100;

65 gridBag.weighty = 100;

66//设置JTable组件:drvTable的从0到7行第0列的值

67for (int i = 0; i < 8; i++)

68 drvTable.setValueAt(drvStrs[i],i,0);

69//设置JTable的列头

70 drvTable.getColumn(drvTable.getColumnName(0)).setHeaderValue("All Drivers");

71 drvTable.setShowGrid(false);//设置不显示网格线

72this.add(drvPanel, drvScroll, gridBag, 0, 1, 3, 4);

73 dbTabPane.add("Drivers", drvPanel);

74 }

75/**初始化底部JButton组的布局*/

76private void initButtonPanel()

77 {

78 JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout. RIGHT));

79//从右边开始进行FlowLayout布局

80 okButton.setMnemonic('O');

81 buttonPanel.add(okButton);

82 cancelButton.setMnemonic('C');

83 buttonPanel.add(cancelButton);

84 helpButton.setMnemonic('H');

85 buttonPanel.add(helpButton);

86 }

87/**给指定的容器cn在指定的(x,y)位置放置指定大小(宽度=w,高度=h)的组件c*/

88private void add(Container cn, Component c, GridBagConstraints gbc, int x, int y, int w, int h)

89 {

90 gbc.gridx = x;

91 gbc.gridy = y;

92 gbc.gridwidth = w;

93 gbc.gridheight = h;

94 cn.add(c, gbc);

95 }

96

首先我们可以采用BorderLayout确定主题对话框的布局方式,实现方法如下:

结束语

以上是本人在两年多J2EE应用开发中,总结的关于用Java进行GUI设计的一些经验,希望能给曾经象我一样迷惘,但依旧对Java一往情深,至今仍在摸索探求Java GUI设计捷径的朋友一些启示。更希望借此机会抛砖引玉,与更多的朋友进行交流与探讨。其实,在Java中所有的布局管理器都要实现一个接口,即LayoutManager Inerface或者是它的一个子接口LayoutManager2 Interface,后者用于更复杂的布局管理。如果在实际应用中,觉得Java API提供的这些布局管理器仍不够用,你完全可以自己来实现其中某一个接口的方法,从而为你自己的具体GUI应用设计提供更好的布局管理。

附件

JavaSrc.zip包含下列java源代码和Class代码:

CalculatorApplet.java为计算器Applet的实现代码。可以通过点击Calculator.html运行;或通过appletviewer来运行。

DBOptions.java为3.4实例的具体实现代码。你可以通过自己编写一个JFrame来调用。

java程序设计实习报告

《Java程序设计》 实 习 报 告 中原工学院信息商务学院 经济管理系 2010年6月20号

目录 一、实习题目 (2) 二、实习目的 (2) 1、社会需求 (2) 2、专业需求 (2) 三、开发环境 (2) 四、实习内容 (3) 1、系统功能需求 (3) 2、数据库需求 (4) 五、设计过程 (4) 1、总体设计 (4) 2、详细设计 (5) 六、调试过程 (5) 七、实习小结 (5) 八、参考资料 (6)

一、实习题目 学生信息管理系统的设计与开发 二、实习目的 1、社会需求 一直以来学生的成绩管理是学校工作中的一项重要内容,随着办学规模的扩大和招生人数的增加,学校工作繁杂、资料重多,普通的成绩管理已不能适应时代的发展,它浪费了许多的人力和物力。在当今信息时代这种传统的管理方法必然被以计算机为基础的信息管理系统所代替。虽然管理信息系统已进入高校,但还未普及而且对于学生成绩管理来说,还没有一套完整的、统一的系统,建立一个成绩维护系统是非常必要的。建立学生成绩管理系统,采用计算机对学生成绩进行管理,能进一步提高办学效益和现代化水平。帮助广大教师提高工作效率,实现学生成绩维护工作流程的系统化、规范化和自动化。2、专业需求 《Java程序设计》课程是电子商务专业的一门专业必修课程,通过java实习不仅可以提升本专业我们对此课程中的理论知识的综合应用能力而且可以提高我们的逻辑思维能力、软件开发能力。我们通过Java技术在Windows平台下开发学生信息管理系统。能够切实提高我们的程序设计水平,在实践中掌握面向对象程序设计的开发思想。 三、开发环境 操作系统;Windows XP 编程环境:MyEclipse 6.0

用户界面设计说明书样本

用户界面设计说明 书

[键入公司名称] [键入文档标题] [键入文档副标题] [键入作者姓名] 2012/11/27

修订历史记录

目录 1 引言................................................... - 3 - 1.1编写目的............................................ - 3 - 1.2项目背景............................................ - 4 - 1.3定义、缩略词........................................ - 4 - 1.4参考资料............................................ - 5 - 2 应当遵循的界面设计规范 ................................. - 5 - 2.1用户界面设计原则.................................... - 5 - 2.2界面一致性.......................................... - 5 - 2.3布局合理化原则.......................... 错误!未定义书签。 3 界面的关系图和工作流程图 ............................... - 7 - 4 主界面................................................ - 10 - 4.1主界面............................................. - 10 - 4.2子界面A ........................................... - 11 - 4.3子界面B ........................................... - 12 - 4.4子界面C ........................................... - 13 - 4.5子界面D ........................................... - 14 - 4.6子界面E ........................................... - 15 - 4.7子界面F ........................................... - 16 - 5 美学设计.............................................. - 17 -

java菜单和工具栏界面代码设计

实验八菜单和工具栏 import java.awt.*; import javax.swing.*; import java.awt.event.*; public class c extends JFrame{ private JMenuBar menuBar; private JMenu xtMenu,xyMenu,zyMenu,xsMenu,kcMenu,cjMenu,jsMenu;// private JMenuItem aItem,bItem,cItem,dItem; // private JMenuItem eItem,fItem,gItem,hItem; private JMenuItem iItem,jItem,kItem,lItem; private JMenuItem mItem,nItem,oItem,pItem; private JMenuItem qItem,rItem,sItem,tItem; private JMenuItem uItem,vItem,wItem,xItem; private JMenuItem yItem,zItem,aaItem,bbItem; public c(String account){ setTitle("学生管理系统"+"当前管理员为"+account); setSize(500,400); center(this);

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); createMenu(); showToolBar(); setVisible(true); } //caidan public void createMenu(){ menuBar=new JMenuBar();//创建菜单栏 xtMenu=new JMenu("系统管理"); aItem=new JMenuItem("学院设置"); bItem=new JMenuItem("专业设置"); cItem=new JMenuItem("修改密码"); dItem=new JMenuItem("退出"); //dItem.setMnemonic('Q'); xtMenu.add(aItem); xtMenu.add(bItem); xtMenu.addSeparator(); xtMenu.add(cItem); xtMenu.addSeparator();

界面设计风格

界面设计规范 1.引言 (2) 1.1概述 (2) 1.2信息位置的安排原则 (2) 2.规范基本规定 (4) 2.1环境 (4) 2.2文字与颜色 (4) 2.3数据格式与显示 (4) 2.4 键盘控制与无鼠标操作 (4) 3.窗口控件 (5) 3.1 MDI与SDI (5) 3.2 快闪窗口(SPLASH) (6) 3.3 登录窗口(LOGIN) (7) 3.4关于窗口(ABOUT) (8) 3.5 响应窗口(RESPONSE) (8) 3.6 系统主窗口 (9) 3.7 业务办理类窗口 (10) 3.8 数据查询类窗口 (12) 4.数据窗口控件 (14) 5.菜单控件 (17) 6. 按钮控件 (17) 7. 输入域 (17) 8. 帮助 (17)

1.引言 用户界面是应用系统的外在表现,是用户工作的接口,它的质量会直接影响系统的友好性与可用性。 本规范用于说明进行管理信息系统(MIS)设计开发时,所应遵循的用户界面开发规范,旨在描述设计怎样的界面风格,为用户所接收。该规范主要针对PowerBuilder开发工具的进行设计。由于PowerBuilde所倡导并提供的风格是基于图形化用户界面GUI的,是与Windows的界面风格相一致的,因此该规范同样可以适用于其他的前台开发工具。 系统界面如果采用WEB页面的方式,则设计原则另行规定。 规范中未做声明的内容,以满足开发总则为准。 1.1概述 有资料调查结果显示,用户希望的最佳屏幕特点为: ●一个规整、清晰、毫不混乱的外观。 ●对于将要显示的内容以及对其将进行的操作有一个明确的提示。 ●所希望的信息出现在其应该出现的位置。 ●清楚地指明标题、小标题、数据、指示、选择等各种项目的关系。 ●平白、简单的文字。 ●通过简单的途径找到系统所含内容及得到它的方法。 ●明确地指出什么时候某个操作能引起数据或系统运行的永久性改变 这样就要求我们所设计的用户界面,应满足如下基本要求: *充分性:用户界面应充分满足功能要求 *一致性:用户界面应满足一致性要求,包括本模块内与分系统之间 *简洁性:用户界面在满足功能的前提下应尽量保持简洁 *合理性:用户界面的布局与设置应满足合理的功能要求 美观性:用户界面应满足美观性要求 1.2信息位置的安排原则 1.在屏幕左上角提供明显的起动点。 2.在屏幕上为诸如菜单、按钮、错误信息、标题、数据区等特定信息保留特定的区域, 并使这些区域在所有屏幕上保持一致。 3.对各种区域的编排应保持均衡、规整、对称、简明、比例协调、整体性。 ●屏幕标题位于上中部,有利于产生对称感;菜单置于屏幕顶部,仅在标题 之下;按钮置于屏幕底部,在信息区之下。

java实验报告实验六Java图形用户界面

信息工程学院 Java程序设计实习报告 JAVA图形用户界面 实验六Java图形用户界面 1.实验目的 (1)掌握图形用户界面基本组件。 (2)了解如何使用布局管理器对组件进行管理。 (3)掌握Java事件处理机制。 2.实验内容 实验题 1 编写一个模拟计算器的程序,使用面板与网格布局,添加一个文本框,10个数字按钮(0-9),4个加减乘除按钮,一个等号按钮,一个清除按钮,要求将计算公式与结果显示在文本框中。 运行结果: 实验报告的内容与格式按任课教师的要求书写。

加法: 主要代码: private void initComponents() { jButton1 = new javax、swing、JButton(); jButton2 = new javax、swing、JButton(); jButton3 = new javax、swing、JButton(); jButton4 = new javax、swing、JButton(); jButton5 = new javax、swing、JButton(); jButton6 = new javax、swing、JButton(); jButton7 = new javax、swing、JButton(); jButton8 = new javax、swing、JButton(); jButton9 = new javax、swing、JButton(); jButton10 = new javax、swing、JButton(); jButton11 = new javax、swing、JButton(); jButton12 = new javax、swing、JButton(); jButton13 = new javax、swing、JButton(); jButton14 = new javax、swing、JButton(); jButton15 = new javax、swing、JButton(); jTextField1 = new javax、swing、JTextField(); setStub(null); jButton1、setText("3"); jButton1、addActionListener(new java、awt、event、

Java注册界面设计

J a v a注册界面设计 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

Java注册界面设计 package test; public class Register_GUI { public Register_GUI() { RegisterFrame rf = new RegisterFrame(); (true); } public static void main(String args[]) { new Register_GUI(); } } class RegisterFrame extends JFrame { rim(); = new String()); = () "男" : "女"; = ().trim(); = ().toString(); (null, "\t 用户名不能为空"); return; } (null, "\t 密码不能为空 "); return; } (null, "密码两次输入不一致,请重新输入"); return; } (null, "\t 年龄不能为空"); return; } int age = ; if (age <= 0 || age > 100) { (null, "\t 年龄输入不合法"); return; } (null, "\t 注册成功!" +" \n 姓名:"++" \n 性别:"++"\n 年龄:"++"\n 班级: "+;

} if () == resetbtn) { (""); (""); (""); (); (""); (0); } if () == cancelbtn) { (); } } } class Register { String name; String password; String sex; String age; String nclass; }

java的界面设计报告

Java 学院:计算机科学学院 班级:计算机科学与技术2班 姓名:雷燕 学号:41209010227 综 合 大 作 业

一、问题背景和描述 针对高等院校的教学过程,开发出相关的教学过程信息管理系统,提高教学质量。教学过程如下图。每项教学活动中都会产生相关信息,利用学习的知识对各种信息进行存储和维护。 二、问题分析及设计思路 1、所需解决问题: 实体功能存放位置界面风格 填空题search&display File Swing 2、实体分析: 有实际意义实体: (1)填空题的存储位置在file中 (2)属性为:题目内容,题目编号以及题目的答案 (3)引用:先存入了F盘,然后再从文件中读取,然后按编号搜索及显示。 3、功能分析:查找功能需要首先输入要查找的题目编号,查找到题

目内容并显示。 4、界面分析:只能用Swing继承自Jframe,界面风格为比较随意,整体风格比Awt显得更美观。其中使用方法与AWT有些区别。 5、程序架构: 查找和显示填空题:在界面上输入所需要查找的题目编号,点击ok,在界面中显示所找题号题目内容。 三、类图 四、程序代码 1.首先我创了一个填空题的类,其中它具有题目的编号,内容,正确答案的属性

package package雷燕; //定义一个填空题的类 public class Fullbank { int number; String connents; String answer; public Fullbank(int a,String b,String c) { number=a; connents=b; answer=c; }} 2.我然后把几个填空题类存入了文件,是按对象存入 public class putinfullbank { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { Fullbank []b=new Fullbank[10]; Scanner c=new Scanner(System.in); for(int i=1;i<=10;i++)

界面设计风格说明

界面设计风格说明 1、引言?错误!未定义书签。 1、1、编写目得?错误!未定义书签。 1、2、?文档范围?错误!未定义书签。 1、3、.................................................................................. 读者对象?错误!未定义书签。 1、4、?参考文献...................................................................................... 错误!未定义书签。 1、5、?术语与缩写解释........................................................................ 错误!未定义书签。 2、目标人群?错误!未定义书签。 3、界面设计原则?错误!未定义书签。 3、1、界面一致性?错误!未定义书签。 3、2、?系统响应时间?错误!未定义书签。 3、3、?出错信息与警告.......................................................................... 错误!未定义书签。 3、4、?一般交互原则.............................................................................. 错误!未定义书签。 3、5、信息显示原则........................................................................... 错误!未定义书签。 3、6、?视觉设计?错误!未定义书签。 4、设计说明............................................................................................... 错误!未定义书签。 1.引言 1.1.编写目得 ?本文档就是对系统界面设计风格进行描述, 1.2.文档范围 ?本文档就是对系统界面设计风格进行描述, 1.3.读者对象 ?本文档得阅读对象就是智能手机系统得设计人员、开发人员、业务规范设计人员、软件测试人员。 1.4.参考文献

java图形化界面练习及答案

作业标题:第四次练习题(总分:得分:分)一、单选题(共有题目15题,共计分) 1. 下列属于容器的组件有 A. ) JButton B. JPane C. Canvas D. JTextArea 学生的答案: B 标准答案: B 该题分数: 学生得分: 分 2. 】 下列方法中,不属于WindowListener接口的是A. windowOpened()

B. windowClosed() C. windowActivated() D. > windowAdapter 学生的答案: D 标准答案: D 该题分数: 学生得分: 分 3. 下列不属于Swing中组件的是( )。 A. JPanel B. JTable C. 《 Menu D. JFrame

学生的答案: C 标准答案: C 该题分数: 学生得分: 分 4. 以下Swing组件中哪一个不是顶层容器组件( )。 A. 框架 B. - 对话框 C. 面板 D. 小程序 学生的答案: C 标准答案: A 该题分数: 学生得分: 0分 5. 对于Swing基本控件单选框,若要使两个单选框对象之间具有相互排斥的关系,需要( )。 A. 》

创建两个单选框对象时定义相同的对象名 B. 将两个单选框对象放在同一个面板上 C. 定义一个ButtonGroup对象group,将两个单选框对象加到group中D. 让两个单选框排成一行或一列 学生的答案: C 标准答案: C 该题分数: 学生得分: 分 6. . 容器被重新设置大小后,( )布局管理器的容器中的组件大小不随容器大小的变化而改变。 A. CardLayout B. FlowLayout C. BorderLayout ?

Java课程设计报告

湖北大学 本科课程设计 题目 ATM 自助机模拟程序姓名 学号 专业年级 指导教师 职称

目录 第一章系统描述 (2) 1 前言 (2) 2 系统功能需求 (2) 第二章系统分析与设计 (3) 1 功能模块划分 (3) 2 功能模块的描述 (3) 3 系统设计流程图 (4) 4 测试数据及期望结果 (6) 第三章系统详细设计 (7) 1 主界面开发设计 (7) 2 功能选择界面开发设计 (7) 3 取款界面开发设计 (7) 4 存款界面开发设计 (8) 5 转账界面开发设计 (8) 6 查询界面开发设计 (9) 7 修改密码界面开发设计 (9) 8 界面开发设计使用函数 (9) 第四章系统测试 (11) 第五章源程序部分清单 (21) 第六章实验心得 (30) 参考文献 (31)

第一章系统描述 1 前言 Java技术是一门简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言,它也是一个平台,它基于Java虚拟机技术,借助这个东西建立了跨平台的优势。Java编程语言与众不同之处在于:Java程序既是编译型的,又是解释型的。 Java平台是一种纯软件平台,它有三个版本Java SE、Java EE、Java ME。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 本课程设计采用Eclipse作为开发工具,并采用Window Builder下的SWT Designer来实现相应的功能。着重通过模拟实现当前非常快捷又使用的ATM机来加深对java开发设计的了解,从而进一步提高自己对java图像界面的设计及相关知识的认识。 2 系统功能需求 当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM 柜员机系统,用户可以按照以下规则进行: (1)查询余额:初始余额为10000元。 (2)ATM取款:每次取款金额为100的倍数,一次取款不能超过1000,总额不 超过5000元,支取金额不允许透支,有快捷取款和用户自定义取款。 (3)ATM存款:每次存款金额为100的倍数,一次存款不能超过1000,不能出 现负存款。 (4)ATM转账:只有在两次输入账号相同且输入转账金额正确的情况下才允许 转账,不允许透支。 (5)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只 有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。

用户界面设计与答案

1.用户满意度=功能+___人机界面_____+响应时间+可靠性+易安装性+____信息____+可维护性+其他因素 2. ____人机交互(人机对话)____是指人与计算机之间使用某种语言、以一定的交互方式,为了完成任务进行的一系列信息交换过程。 3.软件界面设计分为____功能性设计界面____、____情感性设计界面____、____环境性设计界面____。 4.进行系统分析和设计的第一步是___用户分析_____。 5.使用较早,也是使用最广泛的人机交互方式是____交互方式____。 6.软件界面开发流程包括____系统分析____、____系统设计____、____系统实施____三个阶段 7.设计阶段包括界面的____概念设计____、____详细设计____、____原型建立____与界面实现以及综合测试与评估等8.VB 是以结构化___Basic_____语言为基础、以____事件驱动作____为运行机制的可视化程序设计语言。 9.菜单使用形式主要有____菜单操作____和____Tba控件操作____两种。 10.随着计算机图形技术的发展,以直接操纵、桌面隐喻以及所见即所得为特征的____图形用户界面____技术广泛被计算机系统采用。 11.在用VB 开发应用程序时,一般要布置窗体、设置控件的属性、___编写代码___。 12. 假定在窗体上有一个通用对话框,其名称为CommonDialog1,为建立一个保存文件对话框,则需要把Action 属性设置为__value__。 13. 计时器事件之间的间隔通过__interval__属性设置。 14. 语句“Print “5+65=”;5+65”的输出结果为__5+65=70__。 15. 设有下列循环体,要进行4次循环操作,请填空。 x = 1 Do x = x * 2 Print x Loop Until__x<=32__ 16. 下列程序段的执行结果为__2 3 5__。 x = 1 y = 1 For I = 1 To 3 F= x + y x = y y = F Print F; Next I 17. 以下为3个列表框联动的程序,试补充完整。 Private Sub Dir1_Change() File1.Path=Dir1.Path End Sub Private Sub Drive1_Change() Drivel.Path=File1.Path;Dir1.Path=Drivel.Path__[7]__ End Sub 18. 在下列事件过程中则响应该过程的对象名是cmdl,事件过程名是__窗口标题事件__。 Private Sub cmd1_Click() Form1.Caption=“VisualBasic Example” End Sub 19. 当将文本框的SelStar 属性设置为0时,表示选择第开始位置在第一个字符之前,设置为1时表示__[9]__。 20. 以下程序代码实现单击命令按钮Command1 时形成并输出一个主对角线上元素值为“-”,其他元素值为“+”第6*6 阶方阵。 Privas Sub Command1_Click() DimA(6,6) For I = 1 To 6 For J = 1 To 6 If I = J Then Print “-” Else __[10]__ End If Print A (I,J); Next J Print Next I End Sub 21. 字母B的KeyAscii 码值为65,其KeyCode码值___[11]__。 22. Visual Basic 中的控件分为3类:__[12]_、ActioveX 控件和可插入对象。

java简单图形用户界面代码

package dsr; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import https://www.doczj.com/doc/198120472.html,.Socket; public class Login extends JFrame implements ActionListener{ //定义组件 JPanel northPanel,southPanel,centerPanel,centerPanel1,centerPanel11,centerPanel12; JButton loginBtn,registerBtn,cancalBtn; JLabel userLbl,passwordLbl,titleLbl; JTextField userTxt; JPasswordField passwordPwd; static String name; public Login () { super("用户登录"); northPanel=new JPanel(); southPanel=new JPanel(); centerPanel1=new JPanel(); centerPanel11=new JPanel(); centerPanel12=new JPanel(); //标题 titleLbl=new JLabel("欢迎进入考试系统"); titleLbl.setFont(new Font("隶书",Font.BOLD,24)); northPanel.add(titleLbl); this.add(northPanel,BorderLayout.NORTH); //中间部分 centerPanel1.setLayout(new BorderLayout()); userLbl=new JLabel("用户名"); userTxt=new JTextField(12); centerPanel11.add(userLbl); centerPanel11.add(userTxt); centerPanel1.add(centerPanel11,BorderLayout.NORTH); passwordLbl=new JLabel("密码"); passwordPwd=new JPasswordField(12); centerPanel12.add(passwordLbl); centerPanel12.add(passwordPwd);

Java注册界面设计

Java注册界面设计 package test; import https://www.doczj.com/doc/198120472.html,ponent; import java.awt.Dimension; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JRadioButton; import javax.swing.JTextField; import javax.swing.border.Border; import java.util.Vector; public class Register_GUI { public Register_GUI() { RegisterFrame rf = new RegisterFrame(); rf.setVisible(true); } public static void main(String args[]) { new Register_GUI(); } } class RegisterFrame extends JFrame { // 框架类 /** * */ private static final long serialVersionUID = -3779096743730354383L; private Toolkit tool; public RegisterFrame() { setTitle("用户注册");

Java项目设计报告

分类号: 密级:学号:0806888 Java项目报告 ——学生信息管理系统 作者姓名: ````` 所在系部:````` 专业: ```````` 指导教师: `````` 2010 年 06 月 27 日

摘要 现代社会随着科技的发展,如果依然采用人工管理庞大的数据库是一项繁重枯燥的工作,无论是数据录入,查询还是修改都存在着工作量大,效率低下,周期长的缺点。而计算机管理系统的引进将给人工管理数据库的工作带来一次彻底的变革。学校由于学生众多,学生数据信息库庞大,使信息的管理成为了一个复杂繁琐的工作。本系统针对学校,经过实际的需求分析,采用功能强大的VB6.0作为开发工具来开发学生信息管理系统。整个系统从符合操作简便,界面美观、灵活、实用的要求出发,完成学生信息管理的全过程,包括系统管理、基本信息管理、学习管理、奖惩管理和打印报表等功能。经过使用证明,本文所设计的学生信息管理系统可以满足学校对学生信息管理方面的需要。本项目报告主要介绍了本课题的开发背景,所要完成的功能和开发的过程。

目录 摘要 (2) 目录 (3) 前言 (4) 正文 (5) 1需求分析 (5) 1.1 管理学生信息 (5) 1.2 管理课程信息 (5) 1.3 管理选课与成绩 (5) 2系统设计 (5) 2.1结构设计 (5) 2.2 功能流程及工作描述 (6) 4详细设计及功能实现 (8) 4.1学生信息管理系统主界面模块 (8) 4.1.1成绩信息综合管理类 (8) 4.1.2添加成绩功能 (14) 4.1.3修改成绩功能 (17) 4.1.4保存成绩查询功能 (20) 总结 (25) 致谢 (26) 参考文献 (27) 小组成员 (28)

软件工程用户界面设计报告.doc

目录0. 文档介绍2 0.1 文档目的 2 0.2 文档范围 2 0.3 读者对象 2 0.4 参考文献 2 0.5 术语与缩写解释 2 1. 应当遵循的界面设计规范3 2. 界面的关系图和工作流程图 5 3. 主界面 5 4. 子界面A 6 5. 子界面B 7 6. 美学设计7 7. 界面资源设计错误!未定义书签。 8. 其他错误!未定义书签。

文档介绍 0.1 文档目的 界面设计是为了满足软件专业化标准化的需求而产生的对软件的使用界面进行美化优化规范化的设计分支。界面设计文档可以让用户对软件产品有了更直观的了解,并且了解各个模块的设计及用意。 0.2 文档范围 文档包括公用界面设计,学生用户界面设计,教师用户界面设计,其中各个界面包括框架设计,编程设计,按钮设计,面板设计,菜单设计,标签设计,图标设计,滚动条及状态栏设计。 0.3 读者对象 登陆网站的游客、注册成会员的学生、教师以及管理员。 0.4 参考文献 提示:列出本文档的所有参考文献(可以是非正式出版物),格式如下: [1] 张海藩,《软件工程导论(第5版)》,清华大学出版社,1900年01月 [2] 杨培添,《软件界面设计》,电子工业出版社,2007年02月 [3] 林锐,《Web软件用户界面设计指南》,电子工业出版社,2005年5月 [4]吴士力,汪孝宜,胡俦,《网络系统开发实例精粹(JSP版)》,电子工业出版社, 2006年8月 [5] 黄艳群,黎旭,李荣丽,《设计·人机界面》,北京理工大学出版社,2007年5月https://www.doczj.com/doc/198120472.html,/view/43210.html?wtp=tt https://www.doczj.com/doc/198120472.html,/view/119481.htm 0.5 术语与缩写解释

Java基础实验报告-图形用户界面设计

南京工程学院 实验报告 课程名称 JAVA基础 实验项目名称图形用户界面设计 实验学生班级 实验学生姓名 学号 同组学生姓名 实验时间 实验地点 实验成绩评定 指导教师签字年月日

一、实验目的和要求 1.掌握Java Swing组建的使用方法,包括窗口、框架、对话框、面板、文本编辑框、按钮、组合框等多种布局方式,掌握窗口菜单和快捷菜单设计方式。 2.理解委托时间处理模型,掌握不同组件、不同事件的事件处理方法,设计出能够响应事件的Java图形用户界面。 3.熟悉在组件上绘图的方法。 二、实验题目 用表格存储并显示个人所得税税率表,给定一个月收入值,计算应缴的个人所得税。 三、实验方法与步骤(需求分析、算法设计思路、流程图等) 算法设计思路:本次实验题目为计算个人所得税,所以本人从网上找到了国家最新的税收政策,以下为截图:

因此,我设计了以下核心算法 public void actionPerformed(ActionEvent e) { if(e.getSource()==button_b) { double wage=Double.parseDouble((String)text_wage.getText()); double tax = 0; if(wage<=3500) tax=0; if(wage>3500&&wage<=5000) tax=(wage-3500)*0.03; if(wage>5000&&wage<=8000) tax=(wage-3500)*0.1-105; if(wage>8000&&wage<=12500) tax=(wage-3500)*0.2-555; if(wage>12500&&wage<=38500)

javaEE课程设计报告

《JAVAEE课程设计》课程设计报告 (2012— 2013学年第 2 学期) 系别: 专业名称: 课程设计科目: 学生姓名: 学号: 指导教师: 成绩: 完成时间:

项目组成员及分工 目录 一、网上商城系统概述 (1) 二、需求分析与总体设计 (1) 三、界面设计 (14) 四、数据库设计 (19) 五、代码设计................................. 错误!未定义书签。 六、运行调试................................. 错误!未定义书签。 七、结论与心得 (24) 八、致谢 (24) 九、参考文献 (24)

一、网上商城xmutmall系统概述 购物网站网上商城,为用户提供购物需求。拥有前台客户注册、登录、登出,个人信息修改,商品展示,商品详情浏览,搜索商品,购物车,商品评价,网上新闻,后台登录,后台商品管理、用户管理、评论管理、新闻管理、数据库管理等功能。本购物网站是专门针对网上学生和老师而创建的,旨在为网上师生们提供方便快捷的生活。 二、需求分析与总体设计 开发流程图:

图1 开发流程图 需求分析 1、系统名称 网上商城(XMUTMALL) 2、任务概述 应用JSP与Servlet技术,实现B/S三层架构的WEB应用系统设计。WEB容器选用、数据库服务器选用Oracle。要求实现MVC架构,视图用JSP实现、模型用JavaBean实现、控制器用Servlet实现。完成项目的需求分析与设计,包括数据库设计、功能设计、编码与测试;

3、设计目的 这是针对网上师生的购物网站,在注册之后可以进行校内商品销售和购买,每个客户都拥有买卖的权限,同时也包括旧物拍卖等交易方式,同时还有用户评论功能,用户可以对商品进行。同时还有网上实时新闻报道,动态更新各种最新的学校信息。不仅仅可以方便师生们的购物和交易,同时也使师生能够更加实时的了解学校最新的信息。 4、系统功能 1)前台系统 a.注册 b.登录 c.登出 d.个人资料修改 e.商品展示 f.商品详情浏览 g.搜索商品 h.参与评论 i.确定购买 j.网上新闻展示 2)后台管理系统 a.管理员登录 b.账号管理 c.商品管理 d.购物车管理 e.发表网上新闻 f.评论管理

java课程设计报告_简单图形界面计算器的设计

Java 课程设计 简单图形界面计算器的设计 课程名称 Java程序设计 选题名称简单图形界面计算器的设计 专业 班级 姓名 学号 指导教师 简单图形界面计算器的设计

一、设计任务与目标 本次java程序设计我的设计任务是设计一个图形界面(GUI)的计算器应用程序并且能够完成简单的算术运算。本次任务的基本要求是这个计算器应用程序可以完成十进制的加、减、乘、除、求倒、取余、开方运算,且有小数点、正负号、退格和清零功能。而我要在此基础上添加一项千位符分隔符的功能,即以三位为一级,在输入的一串数字中每三位加入一个逗号,这项功能国际通用,并已经成为惯例,会计记账都用这种方法便于账目核算与管理。 GUI计算器设计的具体目标: 1.完成十进制的加、减、乘、除、求倒、取余和开方运算; 2.有小数点和正负号加入运算; 3.有退格、复位和清零的功能; 4.有千位符分隔符的功能,即在输入的一串数字中每三位加入一个逗号。 二、方案设计与论证 1.设计目标的总体分析 (1)设计目标的需求分析:计算器是现在一个普遍应用的工具,能够解决许多人工所无法计算的数据,节省大量宝贵的时间。 (2)设计目标的功能分析:实现计算器系统的功能,主要有两个功能模块:输入和输出。 (3)设计原则:基于计算器系统要具有适用性广、操作简便等特点,本系统预计要达到以下几个目标:①满足以上的基本功能要求;②能够在常见的计算机及其操作系统上运行。 2.设计的基本思路 利用GUI的界面设计,将整个大设计分为三块,分别是数据的输入,运算符

功能符的控制和数据的输入输出显示。利用Swing控件,数据的输入由0~9这10个按钮来表示,用“+”、“-”、“*”、“/”、“1/x”、“%”、“sqrt”这7个按钮来表示加、减、乘、除、求倒、取余、开方运算,用“.”和“±”这2个按钮来表示小数点和正负号,用“Back”、“CE”和“C”这3个按钮来表示退格、复位和清零的功能,数据的输入输出显示由文本字段来表示。将计算器的总体界面设计好后,再将代码分别写入不同的按钮的源程序中。 我要完成的一项改进,即添加一个拥有千位符分隔符功能的按钮,按下这个按钮能够在输入的一串数字中每三位加入一个逗号并且显示出来。我要在之前的界面设计的基础上多添加一个按钮“$”来表示千位符分隔符,并且将功能代码写入这个按钮的源程序中。 三、程序流程图,程序清单与调用关系 1. 程序流程图:

Java图形用户界面设计

前言 随着Internet的飞速发展,Java技术也得到了越来越广泛的应用。而无论我们是采用J2SE、J2EE还是J2ME,GUI都是不能回避的问题。现在的应用软件越来越要求界面友好、功能强大而又使用简单。而众所周知,在Java中进行GUI 设计相对于其跨平台、多线程等特性的实现要复杂和麻烦许多。这也是很多Java 程序员抱怨的事情。但GUI已经成为程序发展的方向,所以我们也必须了解Java 的GUI设计方法和特点。其实,采用Java提供的布局管理器接口和相应的布局管理类,我们也可以做出相当漂亮的界面来,当然实现起来肯定要比VB麻烦许多。本文试图通过自己的开发经历介绍一些具体的应用实例,希望能给那些曾经象我一样苦闷的Java痴迷者一些帮助。 Java中的布局管理器 2.1 为什么要使用布局 在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。为了管理好这些组件的布局,我们就需要使用布局管理器。比如说,设计一个简单的计算器,或一个文本编辑器等等。这些组件是让JVM 自己任意安排呢?还是按照一定的位置关系进行规范的安排呢?当然应该选择后者。将加入到容器的组件按照一定的顺序和规则放置,使之看起来更美观,这就是布局。在Java中,布局由布局管理器 (LayoutManager) 来管理。那么,我们在什么时候应该使用布局管理器?应选择哪种布局管理器?又该怎样使用布局管理器呢? 如果你写的是GUI程序,在使用AWT/Swing组件时就不应硬性设置组件的大小和位置,而应该使用Java的布局管理器(LayoutManager)来设置和管理可视组件的大小和位置,否则就有可能造成布局混乱。不信,你可以新建一个Frame(或JFrame),通过setBounds()方法往其中添加几个Button(或JButton),一旦你将窗体拉大或缩小时,你会发现组件的排列完全不是按你所预想的那样。为了解决这个问题,即当窗体(或容器)缩放时,组件位置也随之合理调整,我们就需要使用布局管理器。 为此,我们首先要知道Java的布局方式,Java提供的API中有些什么布局管理器,它们的布局特点是什么。 2.2 Java的布局方式 我们都知道,Java的GUI界面定义是由AWT类包和Swing类包来完成的。它在布局管理上采用了容器和布局管理分离的方案。也就是说,容器只管将其他组件放入其中,而不管这些组件是如何放置的。对于布局的管理交给专门的布局管理器类(LayoutManager)来完成。 现在我们来看Java中布局管理器的具体实现。我们前面说过,Java中的容器类(Container),它们只管加入组件(Component),也就是说,它只使用自己的add()方法向自己内部加入组件。同时他记录这些加入其内部的组件的个数,可

相关主题
文本预览
相关文档 最新文档