当前位置:文档之家› 图形化界面

图形化界面

图形化界面
图形化界面

查看文章

java图形界面(一)

2008年10月07日星期二 22:22

一. AWT 和 SWING

AWT 和 SWING 是 Java 设计 GUI 用户界面的基础。与 AWT 的重量级组件不同,Swing 中大部分是轻量级组件。正是这个原因,Swing 几乎无所不能,不但有各式各样先进的组件,而且更为美观易用。所以一开始使用 AWT 的程序员很快就转向使用 Swing 了。

那为什么 AWT 组件没有消亡呢?因为 Swing 是架构在 AWT 之上的,没有AWT 就没有 Swing。所以程序员可以根据自己的习惯选择使用 AWT 或者是Swing。但是,最好不要二者混用——除开显示风格不同不说,还很可能造成层次 (Z-Order) 错乱,比如下例:

import javax.swing.*;

import java.awt.*;

public class TestPanels extends JFrame {

public TestPanels() {

setDefaultCloseOperation(EXIT_ON_CLOSE);

JPanel panel = new JPanel();

for (int i = 0; i < 2; i++) {

panel.add(new JButton("Button 00" + i));

}

JTextArea textArea = new JTextArea(5, 15);

textArea.setLineWrap(true);

JScrollPane scrollPane = new JScrollPane(textArea);

getContentPane().add(panel, BorderLayout.NORTH);

getContentPane().add(scrollPane, BorderLayout.CENTER);

pack();

}

public static void main(String[] args) {

TestPanels tp = new TestPanels();

tp.show();

}

}

运行这个程序,并用鼠标拖动那个名为“cover”的子窗口,我们会发现一

个非常有趣的现象,如图:

显然 cover 子窗口是在 controls 子窗口之上的,但是它只罩盖住了Swing Button,没有罩盖住 AWT Button。再看一会儿,你是不是有这样一种感觉:Swing Button 是“画”上去的,而 AWT Button 则是“贴”上去的。这就是二者混用造成层次错乱的一个例子。

Swing 组件有美观、易用、组件量大等特点,也有缺点——使用 Swing 组件的程序通常会比使用 AWT 组件的程序运行更慢。但是大家都还是更喜欢用Swing 组件,原因何在?因为随着计算机硬件的升级,一点点速度已经不是问题。相反的,用户更需要美观的用户界面,开发人员则更需要易用的开发组件。

——好,我这就来教你使用 Swing 组件开发图形用户界面的 Java 应用程序。二. 框架、监听器和事件

框架 (Frame) 是 Java 图形用户界面的基础,它就是我们通常所说的窗口,是 Windows/XWindow 应用程序的典型特征。说到 Windows/XWindow,大家很轻易联想到“事件 (Event) 驱动”。Java 的图形用户界面正是事件驱动的,并且由各种各样的监听器 (Listener) 负责捕捉各种事件。

假如我们需要对某一个组件的某种事件进行捕捉和处理时,就需要为其添加监听器。比如,我们要在一个窗口 (JFrame) 激活时改变它的标题,我们就需要为这个窗口 (JFrame 对象) 添加一个可以监听到“激活窗口”这一事件的监听器——WindowListener。

怎么添加监听器呢?这通常由组件类提供的一个 addXXXXXListener 的方法来完成。比如 JFrame 就提供有 addWindowListener 方法添加窗口监听器(WindowListener)。

一个监听器经常不只监听一个事件,而是可以监听相关的多个事件。比如WindowListener 除了监听窗口激活事件 (windowActivate) 之外,还可以监听窗口关闭事件 (windowClosing) 等。那么这些事件怎么区分呢?就靠重载监听器类 (Class) 的多个方法 (Method) 了,监听器监听到某个事件后,会自动调用相关的方法。我们只要重载这个方法,就可以处理相应的事件了。

不妨先看一个例子:

import javax.swing.*;

import java.awt.event.*;

public class TestFrame extends JFrame {

private int counter = 0;

public TestFrame() {

/* 使用匿名类添加一个窗口监听器 */

addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.out.println("Exit when Closed event");

System.exit(0); //退出应用程序

}

public void windowActivated(WindowEvent e) {

setTitle("Test Frame " + counter++); // 改变窗口标题}

});

setResizable(false); // 设置窗口为固定大小

setSize(200, 150);

}

public static void main(String[] args) {

TestFrame tf = new TestFrame();

tf.show();

}

}

这个例子中,我们设计了一个窗口类(public class TestFrame extends JFrame { ...),并且为这个窗口添加了一个窗口监听器(addWindowListener(new WindowAdapter() ...)。而我们添加的这个窗口监听器主要监听了两个事件:窗口关闭 (public void windowClosing(WindowEvent e) ...) 和窗口激活 (public void windowActivated(WindowEvent e) ...)。在窗口关闭事件中我们退出了整个应用程序(System.exit(0);),而在窗口激活事件中,我们改变了窗口的标题 (setTitle("Test Frame " + counter++);)。最后,我们在 main 方法中显示了这窗口类的一个实例,运行得到下图所示的结果:

这个程序的运行结果就是一个什么东西都没有加的框架,也就是一个空窗口。那么,你知道显示一个窗口最主要的几句代码吗?不知道没关系,我来告诉你,显示一个窗口只需要做三件事:生成实例(对象) -> 设置大小 -> 显示,相应的,就是下面的三句代码:

JFrame frame = new JFrame("Frame's Title");

frame.setSize(400, 300);

frame.show();

也许你会说:第一句的意思我清楚,第三句的意思我也明白,为什么一定要第二句呢?其实想想也就明白了,叫你画一个没法有大小的矩形你能画出来吗?

不能。同样,没有大小的窗口,怎么显示?所以我们需要用 setSize(int width, int height) 方法为其设置大小。我们还有另一种方法:用 JFrame 的 pack() 方法让它自己适配一个大小。pack() 在多数时候是令人满足的,但有时,它也会让你哭笑不得——多试试就知道了。

在JFrame 中,我们使用addWindowListener 方法加入一个监听器WindowListener (addWindowListener(new WindowAdapter() ...) 去监听发生在 JFrame 上的窗口事件。WindowListener 是一个接口,在 java.awt.event 这个包中,但是上例中好象并没有使用WindowListener,而是使用的WindowsAdapter 吧,这是怎么回事?

WindowAdapter 是 WindowsListener 接口的一个最简单的实现,也在包java.awt.event 中。假如我们直接使用 WindowListener 产生一个匿名类,需要实现它的每一个方法 (一共 7 个)。但 WindowAdapter 作为 WindowListener 最简单的实现,已经实现了它的每一个方法为空方法 (即只包含空语句,或者说没有语句的方法)。用 WindowAdapter 就只需要重载可能用到的方法 (上例中只有 2 个) 就行了,而不需要再去实现每一个方法。优点显而易见——减少代码量。

在 JFrame 上发生的窗口事件 (WindowEvent) 包括:

windowActivated(WindowEvent e) 窗口得到焦点时触发

windowClosed(WindowEvent e) 窗口关闭之后触发

windowClosing(WindowEvent e) 窗口关闭时触发

windowDeactivated(WindowEvent e) 窗口失去焦点时触发

windowDeiconified(WindowEvent e)

windowIconified(WindowEvent e)

windowOpened(WindowEvent e) 窗口打开之后触发

上例重载了其中两个方法。假如在上例运行产生的窗口和另外一个应用程序窗口之间往返切换 (在 Windows 操作系统中你可以使用 Alt+Tab 进行切换)……试试看,你发现了什么?有没有现我们的示例窗口标题上的数字一直在增加,这便是在windowActivated 事件中setTitle("Test Frame " + counter++); 的功劳。

而另一个事件处理函数 windowClosing 中的 System.exit(0) 则保证了当窗口被关闭时退出当前的 Java 应用程序。假如不作这样的处理会怎样呢?试验之后你会发现,窗口虽然关闭了,但程序并没有结束,但此时,除了使用 ^C 强行结束之外,恐怕也没有其它办法了。所以,这一点非常重要:假如你想在关闭窗口的时候退出应用程序,需要你自己写代码处理 windowClosing 事件。……也不尽然,其实还有另外一个更简单的办法,让 JFrame 自己处理这件事——你只需要如下调用 JFrame 的 setDefaultCloseOperation 即可:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

我们可以在 JFrame 对象中添加 AWT 或者 Swing 组件。但是,虽然它有

add 方法,却不能直接用于添加组件,否则会抛出异常——不信就试试。造成这个现象的原因只有一个解释:JFrame 不是一个容器,它只是一个框架。那么,应该怎么添加组件呢?

JFrame 有一个 Content Pane,窗口是显示的所有组件都是添加在这个Content Pane 中。JFrame 提供了两个方法:getContentPane 和setContentPane 就是用于获取和设置其 Content Pane 的。通常我们不需要重新设置 JFrame 的 Content Pane,只需要直接获取这个 Content Pane 来添加组件等。如:(new JFrame()).getContentPane().add(new Button("test button")); 三. 按钮、切换按钮、复选按钮和单选按钮

按钮,就是按钮,不会连按钮都不知道吧?

切换按钮,有两种状态的按钮,即按下状态和弹起状态,若称为选择状态或未选择状态。

复选按钮,又叫复选框,用一个小方框中是否打勾来表示两种状态。

单选按钮,又叫收音机按钮,以小圆框打点表示被选中。常成组出现,一组单选按钮中只有一个能被选中。

发现什么了吗?——对了,这一部分是在讲各种各样的按钮,而且后三种按钮都有两种状态。先看看这些按钮都长成什么样:

上图中,从上到下,依次就是按钮、切换按钮、复选按钮和单选按钮。图示的窗口,就是下面这个例子的运行结果:

/**

* TestButtons.java

* @author Fancy

*/

import javax.swing.*;

import java.awt.event.*;

public class TestButtons {

JFrame frame = new JFrame("Test Buttons");

JButton jButton = new JButton("JButton"); //按钮

JToggleButton toggle = new JToggleButton("Toggle Button"); //切换按钮

JCheckBox checkBox = new JCheckBox("Check Box"); //复选按钮JRadioButton radio1 = new JRadioButton("Radio Button 1"); //单选按钮JRadioButton radio2 = new JRadioButton("Radio Button 2");

JRadioButton radio3 = new JRadioButton("Radio Button 3");

JLabel label = new JLabel("Here is Status, look here."); //不是按钮,是静态文本

public TestButtons() {

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().setLayout(new java.awt.FlowLayout());

/* 为一般按钮添加动作监听器 */

jButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent ae) {

label.setText("You clicked jButton");

}

});

/* 为切换按钮添加动作监听器 */

toggle.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent ae) {

JToggleButton toggle = (JToggleButton) ae.getSource();

if (toggle.isSelected()) {

label.setText("You selected Toggle Button");

} else {

label.setText("You deselected Toggle Button");

}

}

});

/* 为复选按钮添加条目监听器 */

checkBox.addItemListener(new ItemListener() {

public void itemStateChanged(ItemEvent e) {

JCheckBox cb = (JCheckBox) e.getSource();

label.setText("Selected Check Box is " + cb.isSelected());

}

});

/* 用一个按钮组对象包容一组单选按钮 */

ButtonGroup group = new ButtonGroup();

/* 生成一个新的动作监听器对象,备用 */

ActionListener al = new ActionListener() {

public void actionPerformed(ActionEvent ae) {

JRadioButton radio = (JRadioButton) ae.getSource();

if (radio == radio1) {

label.setText("You selected Radio Button 1");

} else if (radio == radio2) {

label.setText("You selected Radio Button 2");

} else {

label.setText("You selected Radio Button 3");

}

}

};

/* 为各单选按钮添加动作监听器 */

radio1.addActionListener(al);

radio2.addActionListener(al);

radio3.addActionListener(al);

/* 将单选按钮添加到按钮组中 */

group.add(radio1);

group.add(radio2);

group.add(radio3);

frame.getContentPane().add(jButton);

frame.getContentPane().add(toggle);

frame.getContentPane().add(checkBox);

frame.getContentPane().add(radio1);

frame.getContentPane().add(radio2);

frame.getContentPane().add(radio3);

frame.getContentPane().add(label);

frame.setSize(200, 250);

}

public void show() {

frame.show();

}

public static void main(String[] args) {

TestButtons tb = new TestButtons();

tb.show();

}

}

除一般按钮外,其余三种按钮都有两种状态,即选择 (按下) 状态和未选择(弹起) 状态。那么我们又该如何判定呢?切换按钮 (JToggleButton) 提供了一个 isSelected() 方法用来判定当前所处的状态,返回值为真 (true) 时表示它处于选择状态,返回值为假 (false) 时表示它处于未选择状态。而复选按钮(JCheckBox) 和单选按钮 (JRadioButton) 都是从 JToggleButton 继续的,所以也具有 isSelected() 方法。如上例中 if (toggle.isSelected()) { ... 等。

单选按钮由自身的特点决定了它们必须成组出现,而且一组中只能有一个能

被选中。因此我们需要用一个专门的类——ButtonGroup——来治理。添加到ButtonGroup 的多个单选按钮中,假如有一个被选择中,同组中的其它单选按钮都会自动改变其状态为未选择状态。在 ButtonGroup 中添加按钮,是使用它的add 方法,如上例中的 group.add(radio1);。

既然我们已经将多个单选按钮添加到一个 ButtonGroup 中了,那么我们是不是可以将一个包含多个单选按钮的 ButtonGroup 对象添加到 JFrame 的Content Pane 中,以达到添加其中所有单选按钮的目的呢?不行!ButtonGroup 不是一个可显示的组件,它仅用于治理。所以,在往 JFrame 中添加一组JRadioButton 的时候,需要一个一个的添加 JRadioButton,而不是笼统的添加一个 ButtonGroup。

上例中还用到了 JLabel,这不是按钮,而是一个静态文本组件,主要用于显示提示文本。要获得一个 JLabel 对象当前显示的文本内容,可以使用它的getText() 方法;反之,要改变一个 JLabel 对象显示的文本内容,应该使用它的 setText(String text) 方法,如上例中的 label.setText("You selected Toggle Button");。

其实这两个方法同样可以用于 JButton 等类。比如上例中我们使用 new JButton("JButton") 构造了一个按钮 jButton,假如使用 jButton.getText() 就可以得到字符串 "JButton"。而 jButton.setText("A Button"),则可以改变按钮上显示的文字为 "A Button"。这两句代码没有写出来,你可以自己试试。

上例中大量使用了动作监听器 (ActionListener)。ActionListener 只监听一个事件,这个事件在其相关组件上产生了动作时被触发,因此叫作动作事件(ActionEvent)。ActionListener 只有一个方法需要实现,就是actionPerformed(ActionEvent ae)。按钮、切换按钮和单选按钮被单击时都会触发动作事件,引起动作监听器调用 actionPerformed 方法。因此,假如你想在单击按钮之后做什么事,当然应该重载 ActionListener 的 actionPerformed 方法了。各种按钮都提供了 addActionListener 方法以添加动作监听器。

复选框就要非凡一些。虽然它也有 addActionListener 方法,意味着可以使用动作监听器,但是使用之后你会发现动作监听器并没有起到预想的作用。为什么?原来,单击一个复选按钮,触发的不是动作事件,而是条目事件(ItemEvent) 中的状态变化(itemStateChanged) 事件,由条目监听器(ItemListener) 监听,相应需要重载的方法是ItemListener 的itemStateChanged 方法。

上例中我们将一个名为 al 的 ActionListener 添加到了每一个单选按钮中,如何判定是哪个单选按钮触发了事件并被 al 监听到了呢?我们可以从ActionEvent 的 getSource() 方法得到触发事件单选按钮。由于 getSource() 返回的是一个 Object 引用,虽然这个引用指向的是一个单选按钮的实例,但我们还是需要将这个引用的类型转换为 JRadioButton,如上例中的:JRadioButton radio = (JRadioButton) ae.getSource();,只有这样我们才能调用JRadioButton 有而 Object 没有的方法。

续上下一篇

Java图形界面(二)

2008年10月07日星期二 22:23

同时,还需要说明的一点是,每个单选按钮都可以添加一个单独的ActionListener 实例,而不一定要添加同一个。同样的道理,若干毫不相干的、需要添加 ActionListener 的若干组件,也可以添加同一个 ActionListener 实例。要害在于编程者对 actionPerformed 方法的重载。比如下面这段代码就为一个 JButton 对象和一个 JRadioButton 对象添加了同一个动作监听器实例:

/**

* Test.java

* @author Fancy

*/

import javax.swing.*;

import java.awt.event.*;

public class Test {

JButton b;

JRadioButton rb;

public Test() {

JFrame f = new JFrame("Test");

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.getContentPane().setLayout(new java.awt.FlowLayout());

b = new JButton("JButton");

rb = new JRadioButton("RadioButton");

ActionListener a = new ActionListener() {

public void actionPerformed(ActionEvent ae) {

if (ae.getSource() == b) {

System.out.println("You clicked the JButton");

} else {

System.out.println("You clicked the RadioButton");

}

}

};

b.addActionListener(a);

rb.addActionListener(a);

f.getContentPane().add(b);

f.getContentPane().add(rb);

f.pack();

f.show();

}

public static void main(String[] args) {

new Test();

}

}

运行程序后,分别单击两个按钮,相应的,在控制台能分别得到如下输出:

You clicked the JButton

You clicked the RadioButton

这说明多个不用的组件添加同一个监听器是可行的——不过前提是这些组件都能添加这个监听器。四. 文本输入框、密码输入框

文本输入框包括两种,单行文本输入框 (JTextField) 和多行文本输入框(JTextArea)。密码输入框则只有一种 (JPassWordField)。JPasswordField 是JTextField 的子类,它们的主要区别是 JPasswordField 不会显示出用户输入的东西,而只会显示出程序员设定的一个固定字符,比如 '*'。

下面的示例图和代码是 JTextField、JPasswordField 和 JTextArea 的示例:

/**

* TestTexts.java

* @author Fancy

*/

import javax.swing.*;

import javax.swing.event.*;

public class TestTexts extends JFrame {

private JLabel label = new JLabel("Status");

private JTextField textField;

private JPasswordField pwdField;

private JTextArea textArea;

public TestTexts() {

super("Test Texts");

setDefaultCloseOperation(EXIT_ON_CLOSE);

getContentPane().setLayout(new java.awt.FlowLayout());

textField = new JTextField(15);

/* 监听文本光标移动事件 */

textField.addCaretListener(new CaretListener() {

public void caretUpdate(CaretEvent e) {

// 假如改变了内容,就可以即时更新 label 显示的内容

label.setText(textField.getText());

}

});

pwdField = new JPasswordField(15);

pwdField.setEchoChar('#');

textArea = new JTextArea(5, 15);

textArea.setLineWrap(true);

getContentPane().add(textField);

getContentPane().add(pwdField);

getContentPane().add(textArea);

getContentPane().add(label);

setSize(200, 200);

}

public static void main(String[] args) {

TestTexts tt = new TestTexts();

tt.show();

}

}

上例中,我们构造了一个宽度为 15 个字符的单行文本框 (textField = new JTextField(15);),并使用 addCaretListener 方法添加了一个 CaretListener (textField.addCaretListener ...)。CaretListener 监听文本光标的移动事件。当用户使用键盘、鼠标等移动了文本光标在 JTextField 中的位置时触发这个事件。我们需要重载 caretUpdate(CaretEvent e) 对事件进行处理 (public void caretUpdate(CaretEvent e) ...)。这样,我们可以在这里做类似 VB 中TextBox 的 OnChange 事件中做的事情。

JTextField 有 5 个构造方法,常用其中的四个:

JTextField()

JTextField(int columns),如上例 textField = new JTextField(15);

JTextField(String text)

JTextField(String text, int columns)

其中,参数 text 是单行文本框的初始内容,而 columns 指定了单行文本框的宽度,以字符为单位。JTextField 中的文本内容可以用 getText() 方法获

得。也可以用 setText 方法指定 JTextField 中的文本内容。

JPasswordField 是JTextField 的子类,其构造方法也是类似的。JPasswordField 提供了 setEchoChar(char ch) 方法设置为了隐藏密码而显示的字符,默认为'*' 字符,上例中则设置为了'#' 字符(pwdField.setEchoChar('#');)。与 JTextField 一样,JPasswordField 也用getText 方法和 setText 获得或者设置文本内容 (当然在用户界面上是隐藏的)。

JTextField 是单行文本框,不能显示多行文本,假如想要显示多行文本,就只好使用多行文本框 JTextArea 了。JTextArea 有六个构造方法,常用的也是四个:

JTextArea()

JTextArea(int rows, int columns)

JTextArea(String text)

JTextArea(String text, int rows, int columns)

text 为 JTextArea 的初始化文本内容;rows 为 JTextArea 的高度,以行为单位;columns 为 JTextArea 的宽度,以字符为单位。如上例中就构造了一个高 5 行,宽 15 个字符的多行文本框 (textArea = new JTextArea(5, 15);)。

多行文本框默认是不会自动折行的 (不过可以输入回车符换行),我们可以使用JTextArea 的setLineWrap 方法设置是否答应自动折行。setLineWrap(true) 是答应自动折行,setLineWrap(false) 则是不答应自动折行。多行文本框会根据用户输入的内容自动扩展大小,不信,自己做个实验——假如不自动折行,那么多行文本框的宽度由最长的一行文字确定的;假如行数据超过了预设的行数,则多行文本框会扩展自身的高度去适应。换句话说,多行文本框不会自动产生滚动条。怎么办?后面讲到滚动窗格 (JScrollPane) 的时候,你就知道了。

多行文本框里文本内容的获得和设置,同样可以使用 getText 和 setText 两个方法来完成。五. 窗格、滚动窗格和布局治理

窗格 (JPanel) 和滚动窗格 (JScrollPane) 在图形用户界面设计中大量用于各种组件在窗口上的布置和安排。这里所谓的布置和安排,就是布局(Layout),因此不得不先说说布局。

将加入到容器(通常为窗口等) 的组件按照一定的顺序和规则放置,使之看起来更美观,这就是布局。布局由布局治理器 (Layout Manager) 来治理。那么,我们在什么时候应该使用布局治理器?应用选择哪种布局治理器?又该怎样使用布局治理器呢?

往往,我们设计一个窗口,其中是要添加若干组件的。为了治理好这些治理的布局,我们就要使用布局治理器。比如说,设计一个简单的编辑器,这个编辑

器中只需要放置两个按钮和一个多行文本框。这些组件是让 Java 自己任意安排呢?还是按照一定的位置关系较规范的安排呢?当然应该选择后者。那么,为了按照一定的位置关系安排这些组件,我们就需要用到布局治理器了。

然后我们碰到了一个选择题——使用哪种布局治理器。为此,我们首先要知道有些什么布局治理器,它们的布局特点是什么。常用的布局治理器有:FlowLayout、BorderLayout、GridLayout、BoxLayout 等,其中 FlowLayout 和BorderLayout 最常用,本文主要也就只谈谈这两种布局治理器。下面列表说明它们的布局特点:

布局治理器布局特点 FlowLayout 将组件按从左到右从上到下的顺序依次排列,一行不能放完则折到下一行继续放置 BorderLayout 将组件按东、南、西、北、中五个区域放置,每个方向最多只能放置一个组件 GridLayout 形似一个无框线的表格,每个单元格中放一个组件 BoxLayout 就像整洁放置的一行或者一列盒子,每个盒子中一个组件

就上述的编辑器为例,假如选用 FlowLayout,那么两个按钮和一个多行文本框就会排列在一行——当然这是窗口足够宽的情况;假如窗口稍窄一些,则可能分两行排列,第一行有两个按钮,而第二行是多行文本框——这是最理想的情况;假如窗口再窄一些,就可能分三行排列,第一行和第二行分别放置一个按钮,第三行放置多行文本框。因此,假如窗口大小可以改变,那么三个组件的位置关系也可能随着窗口大小的变化而变化。所以,FlowLayout 不适用。其实上面所举的例程中,大部分都是用的 FlowLayout,那是因为我们没有要求组件的布局。

假如选用 BorderLayout 的情况又如何呢?我们可以试着加入一个窗格(JPanel,稍后讲解),并将两个按钮放置在其中,然后将这个窗格加入到BorderLayout 的北部 (即上部);再将多行文本框加入到 BorderLayout 中部。结果类似使用 FlowLayout 的第二种可能,是最理想的情况。而且,假如改变窗口大小,它们的位置关系仍然是北-中的关系,不会随之改变。

剩下的两种布局治理器,加以窗格 (JPanel) 的配合,也能够很好的安排上述编辑器所需的三个组件。但是由于它们的使用稍为复杂一些,所以就不讲了。下面就讲讲如何使用 FlowLayout 和 BorderLayout。

任何布局治理器,都需要用在容器上,比如 JFrame 的 Content Pane 和下面要说的 JPanel 都是容器。容器组件提供了一个 setLayout 方法,就是用来改变其布局治理器的。默认情况下,JFrame 的Content Pane 使用的是BorderLayout,而 JPanel 使用的是 FlowLayout。但不管怎样,我们都可以调用它们的 setLayout 方法来改变其布局治理器。比如上述的编辑器中,我们要让窗口(JFrame 对象,假设为frame) 使用BorderLayout,就可以使用frame.getContentPane().setLayout(new BorderLayout()); 来改变其布局治理器为一个新的 BorderLayout 对象。

然后,我们对布局治理器的直接操作就结束了,剩下的只需要往容器里添加组件。假如使用 FlowLayout,我们只需要使用容器的 add(Component c) 方法

添加组件就行了。但是,假如使用 BorderLayout 就不一样了,因为要指定是把组件添加到哪个区域啊。那我们就使用容器的 add(Component c, Object o) 方法添加组件,该方法的第二个参数就是指明添加到的区域用的。例如,上述编辑器中要添加一个多行文本框到BorderLayout 的中部,就可以用frame.getContentPane().add(new JTextArea(5, 15), BorderLayout.CENTER) 来实现。

BorderLayout 的五个区域分别是用下列五个常量来描述的:

BorderLayout.EAST 东

BorderLayout.SOUTH 南

BorderLayout.WEST 西

BorderLayout.NORTH 北

BorderLayout.CENTER 中

刚才已经提到了使用 JPanel。JPanel 作为一个容器,可以包容一些组件,然后将这个 JPanel 对象作为一个组件添加到另一个容器 (称作父容器) 中。这个功能有什么好处呢?

上面不是提到 BorderLayout 的一个区域中只能添加一个组件吗?但是我们的编辑器需要添加两个按钮到它的北部,怎么办?上面的例子中,我们就是用的一个 JPanel 包容了这两个按钮,然后再将这个 JPanel 对象作为一个组件添加到设置布局治理器为 BorderLayout 的 Content Pane 中。

上面说到各布局治理器的布局特点的时候,几乎每一种都是一个区域只能添加一个组件,那我们想添加多个组件到一个区域的时候,就要用到 JPanel 了。假如还没有明白,稍后看一段程序可能更易于理解。

而滚动窗格 (JScrollPane) 呢?它是一个能够自己产生滚动条的容器,通常只包容一个组件,并且根据这个组件的大小自动产生滚动条。比如上面讲JTextArea 的时候提到:JTextAera 会随用户输入的内容自动扩展大小,很轻易打破各组件的布局。但是,假如我们将它包容在一个滚动窗格中,它的扩展就不会直接反映在大小的变化上,而会反映在滚动窗格的滚动条上,也就不会打破各组件的布局了。稍后的例子会让你清清楚楚。

是不是等着看例子了?好,例子来了:

import javax.swing.*;

import java.awt.*;

public class TestPanels extends JFrame {

public TestPanels() {

setDefaultCloseOperation(EXIT_ON_CLOSE);

JPanel panel = new JPanel();

for (int i = 0; i < 2; i++) {

panel.add(new JButton("Button 00" + i));

}

JTextArea textArea = new JTextArea(5, 15);

textArea.setLineWrap(true);

JScrollPane scrollPane = new JScrollPane(textArea);

getContentPane().add(panel, BorderLayout.NORTH);

getContentPane().add(scrollPane, BorderLayout.CENTER);

pack();

}

public static void main(String[] args) {

TestPanels tp = new TestPanels();

tp.show();

}

}

这个例子的运行结果如下图,正是我们想要的结果——上面两个按钮,下面是一个可以滚动的多行文本框:

上例中首先产生了一个 JPanel 对象 (JPanel panel = new JPanel();),然后将两个按钮置于其中(panel.add ...);然后产生了一个多行文本框(JTextArea textArea = new JTextArea(5, 15);),并使用一个滚动窗格将它包裹起来 (JScrollPane scrollPane = new JScrollPane(textArea);),使之成为可以滚动的多行文本框。最后将两个容器 (JPanel 对象和 JScrollPane 对象) 分别添加到了窗口的北部(getContentPane().add(panel, BorderLayout.NORTH);) 和中部(也就是剩余部分,getContentPane().add(scrollPane, BorderLayout.CENTER);)。

似乎有点不对劲,是什么呢?对了,我们没有设置 Content Pane 的布局治理器为 BorderLayout 啊,为什么……刚才不是说了吗,JFrame 的 Content Pane 的默认布局治理器就是 BorderLayout,所以不用再设置了。

好了,《Java 的图形用户界面设计》就告一段落了。由于篇幅有限,这里说的都是初级知识,有此基础,设计复杂一点的图形用户界面也就不是难事了!

查看文章

java 图形界面设计

2008-11-23 16:41

一. AWT 和SWING

AWT 和 SWING 是 Java 设计 GUI 用户界面的基础。与 AWT 的重量级组件不同,Swing 中大部分是轻量级组件。正是这个原因,Swing 几乎无所不能,不但有各式各样先进的组件,而且更为美观易用。所以一开始使用 AWT 的程序员很快就

转向使用 Swing 了。

那为什么 AWT 组件没有消亡呢?因为 Swing 是架构在 AWT 之上的,没有 AWT 就没有 Swing。所以程序员可以根据自己的习惯选择使用 AWT 或者是 Swing。但是,最好不要二者混用——除开显示风格不同不说,还很可能造成层次

(Z-Order) 错乱,比如下例:

运行这个程序,并用鼠标拖动那个名为“cover”的子窗口,我们会发现一个非常有趣的现象,如图:

显然 cover 子窗口是在 controls 子窗口之上的,但是它只罩盖住了 Swing Button,没有罩盖住 AWT Button。再看一会儿,你是不是有这样一种感觉:Swing Button 是“画”上去的,而 AWT Button 则是“贴”上去的。这就是二者混用造成层次错乱的一个例子。

Swing 组件有美观、易用、组件量大等特点,也有缺点——使用 Swing 组件的程序通常会比使用 AWT 组件的程序运行更慢。但是大家都还是更喜欢用 Swing 组件,原因何在?因为随着计算机硬件的升级,一点点速度已经不是问题。相反的,用户更需要美观的用户界面,开发人员则更需要易用的开发组件。

——好,我这就来教你使用 Swing 组件开发图形用户界面的 Java 应用程序。

二. 框架、监听器和事件

框架 (Frame) 是Java图形用户界面的基础,它就是我们通常所说的窗口,是Windows/XWindow 应用程序的典型特征。说到 Windows/XWindow,大家很容易联想到“事件 (Event) 驱动”。

Java 的图形用户界面正是事件驱动的,并且由各种各样的监听器 (Listener) 负责捕捉各种事件。

如果我们需要对某一个组件的某种事件进行捕捉和处理时,就需要为其添加监听器。比如,我们要在一个窗口 (JFrame) 激活时改变它的标题,我们就需要为这个窗口 (JFrame 对象) 添加一个可以监听到“激活窗口”这一事件的监听器——WindowListener。

怎么添加监听器呢?这通常由组件类提供的一个 addXXXXXListener 的方法来完成。比如 JFrame 就提供有 addWindowListener 方法添加窗口监听器(WindowListener)。

一个监听器常常不只监听一个事件,而是可以监听相关的多个事件。比如WindowListener 除了监听窗口激活事件 (windowActivate) 之外,还可以监听窗口关闭事件 (windowClosing) 等。那么这些事件怎么区分呢?就靠重载监听器类 (Class) 的多个方法 (Method) 了,监听器监听到某个事件后,会自动调用相关的方法。我们只要重载这个方法,就可以处理相应的事件了。

不妨先看一个例子:

这个例子中,我们设计了一个窗口类(public class TestFrame extends JFrame { ...),并且为这个窗口添加了一个窗口监听器 (addWindowListener(new WindowAdapter() ...)。而我们添加的这个窗口监听器主要监听了两个事件:窗口关闭 (public void windowClosing(WindowEvent e) ...) 和窗口激活(public void windowActivated(WindowEvent e) ...)。在窗口关闭事件中我们退出了整个应用程序(System.exit(0);),而在窗口激活事件中,我们改变了窗

口的标题 (setTitle("Test Frame " + counter++);)。最后,我们在 main 方法中显示了这窗口类的一个实例,运行得到下图所示的结果:

这个程序的运行结果就是一个什么东西都没有加的框架,也就是一个空窗口。那么,你知道显示一个窗口最主要的几句代码吗?不知道没关系,我来告诉你,显示一个窗口只需要做三件事:生成实例(对象) -> 设置大小 -> 显示,相应的,就是下面的三句代码:

也许你会说:第一句的意思我清楚,第三句的意思我也明白,为什么一定要第二句呢?其实想想也就明白了,叫你画一个没法有大小的矩形你能画出来吗?不能。同样,没有大小的窗口,怎么显示?所以我们需要用 setSize(int width, int height) 方法为其设置大小。我们还有另一种方法:用 JFrame 的 pack() 方法让它自己适配一个大小。pack() 在多数时候是令人满意的,但有时,它也会让你哭笑不得——多试试就知道了。

在 JFrame 中,我们使用 addWindowListener 方法加入一个监听器WindowListener (addWindowListener(new WindowAdapter() ...) 去监听发生在 JFrame 上的窗口事件。WindowListener 是一个接口,在 java.awt.event 这个包中,但是上例中好象并没有使用 WindowListener,而是使用的WindowsAdapter 吧,这是怎么回事?

WindowAdapter 是 WindowsListener 接口的一个最简单的实现,也在包

java.awt.event 中。如果我们直接使用 WindowListener 产生一个匿名类,需要实现它的每一个方法 (一共 7 个)。但 WindowAdapter 作为 WindowListener 最简单的实现,已经实现了它的每一个方法为空方法 (即只包含空语句,或者说没有语句的方法)。用 WindowAdapter 就只需要重载可能用到的方法 (上例中只有 2 个) 就行了,而不需要再去实现每一个方法。优点显而易见——减少代码量。

在 JFrame 上发生的窗口事件 (WindowEvent) 包括:

windowActivated(WindowEvent e) 窗口得到焦点时触发

windowClosed(WindowEvent e) 窗口关闭之后触发

windowClosing(WindowEvent e) 窗口关闭时触发

windowDeactivated(WindowEvent e) 窗口失去焦点时触发

windowDeiconified(WindowEvent e)

windowIconified(WindowEvent e)

windowOpened(WindowEvent e) 窗口打开之后触发

上例重载了其中两个方法。如果在上例运行产生的窗口和另外一个应用程序窗口之间来回切换 (在 Windows 操作系统中你可以使用 Alt+Tab 进行切换)……试试看,你发现了什么?有没有现我们的示例窗口标题上的数字一直在增加,这便是在 windowActivated 事件中 setTitle("Test Frame " + counter++); 的功劳。

而另一个事件处理函数 windowClosing 中的 System.exit(0) 则保证了当窗口被关闭时退出当前的 Java 应用程序。如果不作这样的处理会怎样呢?试验之后你会发现,窗口虽然关闭了,但程序并没有结束,但此时,除了使用 ^C 强行结束之外,恐怕也没有其它办法了。所以,这一点非常重要:如果你想在关闭窗口的时候退出应用程序,需要你自己写代码处理 windowClosing 事件。……也不尽然,其实还有另外一个更简单的办法,让 JFrame 自己处理这件事——你只需要如下调用 JFrame 的 setDefaultCloseOperation 即可:

我们可以在 JFrame 对象中添加 AWT 或者 Swing 组件。但是,虽然它有 add 方法,却不能直接用于添加组件,否则会抛出异常——不信就试试。造成这个现象的原因只有一个解释:JFrame 不是一个容器,它只是一个框架。那么,应该怎么添加组件呢?

JFrame 有一个 Content Pane,窗口是显示的所有组件都是添加在这个 Content Pane 中。JFrame 提供了两个方法:getContentPane 和 setContentPane 就是用于获取和设置其 Content Pane 的。通常我们不需要重新设置 JFrame 的Content Pane,只需要直接获取这个 Content Pane 来添加组件等。如:(new JFrame()).getContentPane().add(new Button("test button"));

三. 按钮、切换按钮、复选按钮和单选按钮

按钮,就是按钮,不会连按钮都不知道吧?

切换按钮,有两种状态的按钮,即按下状态和弹起状态,若称为选择状态或未选择状态。

复选按钮,又叫复选框,用一个小方框中是否打勾来表示两种状态。

单选按钮,又叫收音机按钮,以小圆框打点表示被选中。常成组出现,一组单选

实验三图形用户界面设计(汽院含答案)

实验三图形用户界面设计 实验目的 1.掌握Java语言中GUI编程的基本方法 2.掌握Java语言中AWT组件的基本用法 3.掌握Java语言中Swing组件的基本用法 实验导读 1.通过图形用户界面(GUI:Graphics User Interface),用户和程序之间可以方便地进行 交互。 AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。 Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。 JDK写程序所有功能都是靠虚拟机去操作本地操作系统。比如window下,就是JDK 用windows API实现功能。而awt包中很多组件是组件自身去调用本地操作系统代码swing包中的组件采用的是调用本地虚拟机方法,由虚拟机再调用本地操作系统代码。意思就是中间多了一层,这样就加强了swing包的移植性,与本地关系不那强了。 图AWT常用组件继承关系图 Container为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。 2.布局,容器中的组件的排放方式。常见的布局管理器: FlowLayout(流式布局管理器):从左到右的顺序排列。Panel默认的布局管理器。 BorderLayout(边界布局管理器):东,南,西,北,中。Frame默认的布局管理器。 GridLayout(网格布局管理器):规则的矩阵

ui用户界面设计课程设计报告

UI用户界面设计 大作业课程设计报告 题目:依依旅行系统前台应用及后台管理院别:信息与控制学院 专业:计算机科学与技术 学生姓名: 7宋依依 指导教师:孙丽云 成绩: 2015年 6 月 12 日 一、系统概述 1.1课程设计题目: 依依旅行系统前台及后台管理 1.2 课程设计运行环境: Java,MyEclipse6.5,Tomcat5.x Microsoft SQL Server 2008 360安全浏览器7.1 1.3 课程设计实现技术: 基于HTML,CSS,JSP等技术的应用 二、依依旅行系统需求分析 2.1系统功能需求:

系统的功能需求包括一下几个方面 (1)游客在不登录的情况下只可以进行相关旅行,车票,酒店信息的查询。(2)游客通过注册登录或者登录后,可以通过网络查询景点的信息概况和预定景点票,酒店,车票(飞机票,火车票,或者租车)。 (3)游客登录后还可以进行各种订单的退订,个人信息的修改。 (4)系统管理员可以查看游客的预定请求和取消预定的请求。 (5)系统管理员可以对系统的数据库进行维护,例如增加、删除和修改景点信息,增加、删除工作人员帐户,增加和删除旅行用户。 三、依依旅行系统概要分析 3.1旅游系统模块介绍 满足以上需求的管理系统主要包括以下几个模块。 (1)旅游数据维护模块 基本数据维护模块提供了使用者录入、修改并维护基本数据的途径。例如对游客及导游及工作人员各项信息的更新和修改。 (2)旅游业务模块 基本业务模块主要用于实现游客查询景点信息和预定的管理,可以登陆系统预定景点游票和导游预定,工作人员可以处理预定信息和取消预定信息等操作。 (3)数据库管理模块 在系统中,所有景点信息以及工作人员和导游的帐户信息都要进行统一管理,景点的使用情况和预定情况也要进行详细的记录,要用统一的数据库平台进行管理。 (4)旅游信息查询模块 信息查询模块主要用于查询景点的信息和游客的预定信息。 下图所示表示了旅游开发管理系统的功能需求: 3.2旅游数据维护模块 数据维护模块包括如下图所示的几个方面: (1)修改更新景点信息:系统管理员可以更新和修改景点信息。 (2)更新和修改信息:系统管理员可以更新和修改旅游景点和酒店出行,删除游客的信息。 (3)添加景点信息:系统管理员可以添加景点及景点信息。 (4)删除景点信息:系统管理员可以删除景点及景点信息。 3.3旅游业务模块 旅游业务模块包括一下几个方面: (1)注册登陆后,更改个人信息 (2)查询信息:游客查询景点使用信息及景点概括信息。 (3)预定取消景点:游客预定景点票。 (4)酒店预订:游客可一根据情况预定酒店。 (5)出行方式:游客可以根据自己的情况选择出行方式。 3.4数据库管理模块 数据库模块包括一下一个方面: (1)游客信息管理:信息包括游客的姓名,电话号码,及联系方式等。(2)景点信息管理:景点信息包括景点的名称,代号,概况等。

网站界面(UI)设计课程考试复习题(含答案)

精品文档 网站界面(UI)设计复习题 一、多选题 1.设计师在开展具体网站界面设计之前需要了解的信息包括() A. 建站目标 B. 目标用户特征 C. 商业模式 D. 网站特征和优势 2.在开展设计工作之前,我们力求做到知己知彼,这里的“彼”指() A. 对所服务的客户的认知,和客户保持良好的沟通 B. 对网站目标用户的深入理解 C. 对竞争对手的了解 D. 对网站目标用户的深入理解 3.关于网站策划书描述准确的有() A. 对于建设网站的想法、创建流程及相关事宜书写下来,成为建站工作的总领。 B. 网站策划书包含了多个方面的内容,可以对市场、设计、技术、营销等相关人员下达指导工作的指令,帮助建站团队中不同岗位的人相互了解工作的重心。 C. 网站策划书由客户提供。 D. 网站策划书往往包含很多有效的指引设计方向的信息。 4. 对于网站界面设计起着决定性作用() A. 视觉审美 B. 建站目的 C. 网站定位 D. 客户意见 5.对于用户导向原则在网站界面设计中的具体体现描述准确的是() A. 明确体现网站的核心功能和服务 B. 符合用户在使用网站时的心智模型和场景中的思维状态 C. 尊重人机交互中用户的生理特征 D. 符合用户的认知习惯 6.下列关于心智模型表述准确的有() A. 根据用户的心智模型来选择信息的组织方式是优秀网站成功的重要因素。 B. 人们通常基于自身经验和现有知识来理解新事物。 C. 有助于用户理解如何使用网站的设计属于符合心智模型的设计。 D. 重视情景因素对用户行为的影响。 7.保持一致性是提升网站的可用性的重要手段,它体现在() A. 布局设计 B. 导航设计 C. 交互操作

实验一:图形用户界面设计

实验一图形用户界面设计 一实验目的和要求 1)熟悉图形用户界面的设计原则 遵循用户友好原则、一致性原则、帮助和提示等原则设计用户界面。 2)利用一种设计工具完成图形化的用户界面设计 二实验内容与步骤 (一)实验内容 利用常用的设计工具(UI界面设计工具GUI Design Studio)完成一个通用图形用户界面设计,要遵循界面设计的一般原则(一致性、快捷方式、提供错误处理),注意颜色的使用,学会图标、按钮、屏幕布局、菜单和对话框的设计。 软件的界面如同人的脸一样,软件界面的好坏决定了用户对软件的第一印象。设计好的界面能够引导用户自己完成相应的操作,起到引导作用。设计合理的界面能给用户带来轻松愉悦的感受。一些专家指出:对于用户,人机界面就是系统本身。这充分说明了软件界面设计的重要性。请完成各自的系统用户界面的设计。 (二)实验步骤 1.设计多个对话框,完成填表输入界面的设计,合理使用图标、按钮、颜色; 2.设计不同形式的菜单,完成对不同对话框的调用; 3.提供简单的错误处理、联机帮助。 GUI Design Studio主界面

三界面示例1、登录界面 2、主界面

3、聊天界面 4、QQ空间界面

四实验总结 1.界面要具有一致性、常用操作要有快捷方式、提供简单的错误处理、对操作人员的重要操作要有信息反馈、操作可逆、设计良好的联机帮助、合理划分并高效地使用显示屏、保证信息显示方式与数据输入方式的协调一致。 2.颜色是一种有效的强化手段,同时具有美学价值。使用颜色时应注意如下几点:限制同时显示的颜色数;画面中活动对象的颜色应鲜明,而非活动对象应暗淡;尽量避免不相容的颜色放在一起,如黄与蓝,红与绿等,除非作对比时用;若用颜色表示某种信息或对象属性,要使用户理解这种表示,并尽量采用通用的表示规则。 3.图标是可视地表示实体信息的简洁、抽象的符号。图标设计是方寸艺术,需要在很小的范围内表现出图标的内涵。设计图标时应该着重考虑视觉冲击力,要使用简单的颜色,利用眼镜对色彩和网点的空间混合效果,做出精彩图标。 1)设计按钮应该具有交互性,应该有3到6种状态效果(点击时的状态、鼠标放在上面但未点击的状态、点击前鼠标未放在上面时的状态、点击后鼠标未放在上面时的状态、不能点击时的状态、独立自动变化的状态),按钮应具备简洁的图示效果,应能够让使用者产生功能上的关联反应。属于一个群组的按钮应该风格统一,功能差异大的按钮应该有所区别。 2)设计屏幕布局(Layout)时应该使各功能区重点突出,应遵循如下几条原则:平衡原则、预期原则、经济原则、顺序原则、规则化。 3)菜单在图形界面的应用程序中使用得非常普遍,是软件界面设计的一个重要组成方面,描述了一个软件的大致功能和风格。菜单中的选项在功能上与按钮相当,一般具有下列一种或几种类型的选项:命令项、菜单项和窗口项。菜单的结构一般有单一菜单、线状序列菜单、树状结构菜单、网状结构菜单等,其中树状结构菜单是最常见的结构。 设计菜单界面时应注意一般性原则:功能组织菜单,合理分类,并力求简短,前后一致;合理组织菜单界面的结构与层次;按一定的规则对菜单项进行排序;菜单选项的标题要力求文字简短、含义明确,并且最好以关键词开始;常用选项要设置快捷键;充分利用菜单选项的使能与禁止、可见与隐藏属性;使用弹出式菜单。 4)在处理大量相关数据的场合下,需要输入一系列的数据,这时填表输入界面是最理想的数据输入界面。在设计填表输入界面时应遵循的原则:一致性;有含义的表格标题;使用易于理解的指导性说明文字;栏目按逻辑分组排序;表格的组织结构和用户任务相一致;光标移动方便;出错提示;提供帮助;表格显示应美观、清楚,避免过分拥挤。

网页设计大作业

网页设计与制作报告书 课程名称:网页设计与制作 报告题目:几米的空间 专业班级:旅管1002班 学号:100104110221 姓名:杨玉颖 指导教师:胡一波

目录 一、................................. 开发背景 二、................................. 网页设计技巧 三、................................. 网站结构 四、................................. 应用工具方案 五、................................. 频道栏目划分 六、................................. 测试 七、................................. 周期与成本估算 八、................................. 结论

摘要: 在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。因此网站建设在Internet应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。 关键字:网页制作;制作方法;设计要素;网页测试

一、网页制作开发背景 Dreamweaver以其功能强大、容易上手、界面亲切而著称。它采用所见即所得的方式编辑网页,利用它可以轻松的组织、编辑网页并将其发布到指定的站点上,而且在发布之后还能对更新情况进行监控以更新站点的内容。现在流行的网页制作软件有很多,如Macromedia 公司的Dreamweaver、微软公司的Dreamweaver、还有Adobe Pagemill 3.0--制作多框架,表单和Image map 图像的网页工具、Netscape等等。其中Dreamweaver更以其功能强大、容易上手、界面亲切而著称。它采用所见即所得的方式编辑网页,利用它可以轻松的组织、编辑网页并将其发布到指定的站点上,而且在发布之后还能对更新情况进行监控以更新站点的内容。工具准备好了,可根据你的个人喜好来选择一些素材,如图片、喜欢的文章等。 二、网页制作设计技巧 首先,我们来看一下创建一个只包含一个网页的站点。选择“文件”菜单的“新建”选项,单击“站点”命令,这时新建站点对话框就弹出来了,在“指定新站点位置”文本框中输入新站点的位置,单击“只有一个网页的站点”图标,单击“确定”按钮。这就建立好站点了,我们现在来看一下新的站点里有什么,单击“视图”工具条的“文件夹”按钮。在文件夹列表里有一个网页文件,名字叫做“index.htm”。我们知道,每

(完整版)UI设计师试题(带答案)

UI设计师试卷 试卷编号:(182) 试题总分:150分 ----------------------------------------------------------------------- 单选题共20题:(60分,每小题3分) 1. 题干:UI设计是什么意思?(A) A:User Interface的缩写,是指用户界面设计 B:User Identity的缩写,是指用户识别设计 C:User Ideal的缩写,是指用户目标设计 D:UserIntention的缩写,是指用户意图设计 2. 题干:网页设计中的网页界面栅格化是指(C) A:使用ps设计网页界面过程中,将所有的层都格式化图层 B:在页面制作时,将所有的层宽度统一 C:栅格系统英文为“grid systems”,是从平面栅格系统中发展而来,以规则的网格阵列来指导和规范网页中的版面布局以及信息分布。通俗点讲是在网页界面设计中,运用固定的格子设计版面布局,使页面风格工整简洁 D:网页设计中,使用背景是格子样式的背景图案 3. 题干:以下AB两组色彩中,哪组色彩体现了“安宁、平静”的感觉?(A) A:

B: 4. UI设计交付物都包含哪些?( C ) A.UI设计规范 B.产品原型 C.PSD效果图 D.HTML页面 5. 题干:网页设计Web UI中,针对现在主流浏览器的大小设定,最常见的页面宽度为 (A) A:960px、970px、980px、990px、1000px B:1680px、2400px、3200px C:180px、240px、360px、400px D:无相关具体数值要求 6. 题干:网页界面设计中,一般使用的分辨率的显示密度是多少dpi(C) A:300dpi B:200dpi C:72dpi

网站界面UI设计课程考试复习题含答案

网站界面(UI)设计复习题 一、多选题 1.设计师在开展具体网站界面设计之前需要了解的信息包括() A. 建站目标 B. 目标用户特征 C. 商业模式 D. 网站特征和优势 2.在开展设计工作之前,我们力求做到知己知彼,这里的“彼”指() A. 对所服务的客户的认知,和客户保持良好的沟通 B. 对网站目标用户的深入理解 C. 对竞争对手的了解 D. 对网站目标用户的深入理解 3.关于网站策划书描述准确的有() A. 对于建设网站的想法、创建流程及相关事宜书写下来,成为建站工作的总领。 B. 网站策划书包含了多个方面的内容,可以对市场、设计、技术、营销等相关人员下达指导工作的指令,帮助建站团队中不同岗位的人相互了解工作的重心。 C. 网站策划书由客户提供。 D. 网站策划书往往包含很多有效的指引设计方向的信息。 4. 对于网站界面设计起着决定性作用() A. 视觉审美 B. 建站目的 C. 网站定位 D. 客户意见 5.对于用户导向原则在网站界面设计中的具体体现描述准确的是() A. 明确体现网站的核心功能和服务 B. 符合用户在使用网站时的心智模型和场景中的思维状态 C. 尊重人机交互中用户的生理特征 D. 符合用户的认知习惯 6.下列关于心智模型表述准确的有() A. 根据用户的心智模型来选择信息的组织方式是优秀网站成功的重要因素。 B. 人们通常基于自身经验和现有知识来理解新事物。 C. 有助于用户理解如何使用网站的设计属于符合心智模型的设计。 D. 重视情景因素对用户行为的影响。 7.保持一致性是提升网站的可用性的重要手段,它体现在() A. 布局设计 B. 导航设计 C. 交互操作 视觉要素D. 8.图片的挑选原则包括() A. 使用能够有效传达信息的图片

第4课 图形化操作界面

第四课图形化操作界面 教学目的和要求 1、认识Windows窗口,了解窗口的组成。 2、掌握窗口的基本操作。 3、初识菜单命令。 4、进一步掌握鼠标器的基本操作方法。 教学重点与难点:1、重点:窗口的基础知识和基本操作。 2、难点:菜单命令。 教学准备:1、计算机、网络及辅助教学软件。 2、自制的Powerpoint教学软件 教学过程 一、新课导入 同学们,上节课,冯老师和大家一起学生了Windows98的最基本知识,大家还记得我们讲了那些内容吗? 二、新课教学 (一)、窗口的组成 我们知道,在Windows环境下的所有应用程序都是在窗口中执行的,关闭窗口,也就关闭了程序。 下面我们就来一起认识一个最常见到的窗口,它具有Windows窗口的许多共同特点。(师给出一张“我的电脑”的图,同时就着图讲解,过程中注意突出最大化按钮和还原按钮的区别。(二)、窗口的基本操作 1、最小化窗口 下面我们就来看看刚才讲过的窗口右上角的那三个按钮的作用。先来看最小化按钮的作用(师做示范操作)。让学生自己练习一下,同时找学生做给其它学生看。 2、最大化(还原)窗口 让学生自己试,然后总结得出:单击“最大化”按钮,窗口会扩大到整个屏幕,此时“最大化”按钮变成了“还原”按钮;单击“还原”按钮,窗口恢复原状。 3、切换窗口 师打开两个窗口,请同学观察两个窗口的标题条有什么不同(生答),师给出当前窗口的概念:把标题栏呈深颜色的窗口称为当前窗口。单击任务栏中的某个窗口的图标按钮,就可以切换为当前的窗口(师作操作)。学生自己试。 4、移动窗口师作讲解:指针指向“我的电脑”窗口标题栏,进行拖动操作,可以移动窗口。 5、改变窗口的大小 下面请同学们观察老师的鼠标指针的形况是什么样子的()。对,当指针成这种形状的时候我们只要向左右拖动就可以改变窗口的宽度。 那么我们又怎么来改变窗口的高度呢?下面老师想请同学来完成这个任务。(请同学来操作)。 师把鼠标的指针形状变为,提问:有谁知道老师现在这种指针能改变窗口的什么大小(生答,师总结,能同时改变高度和宽度。) 6、关闭窗口 有没有同学知道怎么关闭窗口(生答单击“关闭”按钮,窗口关闭。) (三)、菜单命令 打开“我的电脑”,以“编辑”命令为示范作讲解。(1)以颜色看;(2)以后面的符号看(四)、窗口的滚动 教师做演示,学生自己练习。 全课总结这节课同学们学习了有关初识Windows XP的知识。下面老师想请哪位同学来说一说,你这节课学习到的具体内容有那些。能熟练操作。

VB程序设计(2015大作业)

《VB程序设计》大作业 一、大作业的内容 本次大作业要求学生根据所学知识以及个人爱好,设计开发一个VB应用小程序。要能体现出: 1.《VB程序设计》各种语句的综合使用能力; 2.《VB程序设计》各种相关控件的使用能力; 3.根据具体的设计题目,设计清晰、美观界面的能力; 4.一定的综合设计能力。 二、大作业的要求 本次大作业应满足以下要求: 实用性:应用程序要有明确的应用主题,有一定的实用价值。 结构性:应用程序具有良好的程序结构。 可读性:应用程序具有较好的可读性。 全面性:应用程序应包含比较全面的功能。 友好性:合理使用VB提供的各种控件,设计友好、美观的使用界面。 三、大作业的步骤 1.根据个人兴趣、爱好,以及提交时间的要求,自己确定设计题目(可参考附件1); 2.查找与设计题目相关的资料; 3.进行应用程序总体结构、使用功能的设计; 4.进行应用程序的界面设计和源程序代码的编写; 5.上机编辑、调试程序; 6.保存应用程序, 并生成可执行文件; 7.撰写设计报告。 四、设计报告的基本格式 设计报告的基本内容至少包括封面、正文、总结三部分。 (1).封面(包括:题目、班级、姓名、指导教师、完成日期等信息) (2).正文 1、课题的选材过程(设计思路); 2、设计的将要达到的目标; 3、总体设计结构与功能; (1)总体设计结构介绍(绘制:结构流程图) (2)各功能模块运行界面的功能、算法和操作步骤; 4、设计结果分析;(运行结果展示、正确性分析) (3).总结(感想、收获、启发、存在的问题) 五、课程大作业提交 (1)形式设计报告+ 源程序文件(含可执行文件) 其中:<1>设计报告的封面统一(附件2); <2>源程序文件(含*.vbp;*.frm;*.exe)打包压缩成一个文件, 以学号+姓名(例如:12020741姓名)为文件名。 (2)时间2015年6月1日之前; (3)方法纸质报告及压缩文件交各班学委,按顺序排好后由学委统一上交;

用户界面设计与答案

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 控件和可插入对象。

TetraMax软件图形化界面使用详细介绍

TetraMax GUI使用介绍 Tetramax主界面: Netlist(读取网表): ·Nelist file --可以使用所提供的文本字段手动指定要读入的netlist文件的位置和名称。·Browse -- 可以通过单击Browse按钮来通过图形界面选择想要读取的netlist文件。

·File Type -- 默认情况下,netlist格式是由TetraMAX自动检测的。也可以手动选择EDIF、Verilog 或VHDL netlist格式。 ·Clear previous netlist -- 指定在内存中当前读取的所有netlist将被删除。如果文件名称也被指定,那么在读取该文件之前,将清除内存。 ·Abort on error -- 当这个框被选中(默认选中)时,当多个netlist被读取时,TetraMAX将会终止它。这就允许使用通配符(*)文件名读取所有的netlist。TetraMAX忽略了这个选项,如果你使用这个选项来读取单个的netlist,就会发出一个警告信息。 ·Verbose -- 指定使用通配符文件名时显示单个netlist信息。默认情况下,只对所读取的所有netlist 进行简单的总结。 ·Library Module -- 指定在指定的文件名称中定义的所有模块应该被视为是库模块。 ·Master Module -- 指定被读取的文件定义的所有模块应该被标记为主模块。通常,当读取多个具有相同名称的模块时,最后一个模块将确定最终模块定义 ·Max errors --指定在当前文件终止netlist解析之前允许的最大解析错误数。默认设置为10。·Conservative Mux -- 指定保守的MUX门是否从MUX的保守UDP模型中提取出来。 其中: None --所有提取的MUXes都是规则的(如果必要的话,会发出适当的违规)。 Combinational udp (default) --可以从组合的UDPs中提取保守的MUXes,但不能从序列的UDPs中提取。 All --可以从任何UDP、组合或序列中提取保守的MUXes。当选择此设置时,顺序UDPs的提取对不完整和不一致的UDPs的容忍度较低,这可能会被提取到TIEX,尽管如果-保守的mux被设置为none或- combinational_udp,则可以提取gor级别的模型。只有当解析的顺序UDPs被正确定义时,才使用所有设置 Escape Char -- 指定转义字符是否作为标识符名称的一部分保存。选择是:只有在需要时,总是,或者从不。例如,选择一个没有原因的“\ net[4]”成为“net[4]”;这个名字与一个矢量网“net”的第4位无法区分,所以这个选项应该非常小心使用。默认是在需要时。 ·Dominance Detection –指定派生的ATPG模型是否识别设置/重置/时钟引脚之间的主导行为。选择关闭可禁用此检查,而启用它。一个布尔值的选择允许检查,但只检查时钟/设置/重置为布尔值的状态表项,并忽略它们是Xs的条目。默认的是打开的。 ·Redefined Module -- 指定如何处理模块的重新定义。在多个定义的情况下,一个定义被保留,而另一个定义被忽略。您可以指定第一个或最后一个遇到的netlist定义作为保留。默认的是最后一次。 ·Cell Define -- 选择是否忽略netlist中Verilog编译器指令的celldefine。 ·enable port_faults -- 启用端口故障,默认开启 ·suppress faults -- 抑制故障,默认开启 ·model X for UDPs –- 使用UDP模式,默认开启 ·enhanced seq modeling -- 增强序列建模,默认关闭 ·check only used UDPs -- 检查只使用UDP协议的网表文件 ·fault assign statements –- 故障分配报表 ·net[n:n] is scalar 网[n:n]是标量的

软件工程大作业.

软件工程大作业 题目:学生档案管理系统 小组成员:戚盈洁( 王大伟( 王磊( 霍成海( 目录 第一章. 系统调查 (3 1.1系统调查内容 (3 1.2系统调查方法 (3 第二章. 系统分析 (3 2.1 系统分析 (3 2.2 系统调结构图 (4 2.3 子系统功能描述 (4 第三章. 系统设计 (6 3.1 界面设计原则 (6 3.2 数据库设计 (6 3.3 代码设计 (10 第四章. 学生照片管理模块设计 (14

4.1 ImageFunc模块 (14 4.2 设计照片管理窗体 (16 4.3 在学生信息管理窗体中添加照片管理代码 (17 第五章. 系统测试 (18 5.1 系统测试项目 (18 5.2 系统评估 (20 第一章. 系统调查 1.1系统调查内容 学校各院系基本概况:院系名称,专业设置,课程设置,课时安排,学生人数,学生班级数等。 学校资源条件调查,包括计算机配备,网络支持条件等。 各院系专业设置概况:现有开设专业及规划中开设专业设置,专业开设课程,各课程授课教师与成绩处理。 学校各部门(学生处、教务处、档案管理室、各院系对学生基本情况的需求与掌握,对学生基本信息的处理方式与业务流程。 学校各部门、单位、教师、学生对系统的其他要求和希望。 1.2系统调查方法 通过对部分高校学生档案管理人员的访问,了解到目前大部分高校的档案管理工作存在工作效率低,成本高,保密性差,查询困难等问题。大部分工作人员都提出需要一个具有检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本

低等优点的现代化信息管理系统。为解决此问题我们决定开发一个既方便又操作简单,功能较为齐全的学生档案管理系统。 第二章. 系统分析 2.1 系统分析 1 系统开发的总体任务是学生档案管理的系统化和规范化。 2 系统开发的目标是使档案管理工作科学化和规范化,提高安全系数。 3 系统功能树本系统主要功能是实现学生基本情况的管理。 图3.1学生档案管理系统功能模块 2.2 系统调结构图

MAYA基本操作界面介绍

第一章:基本功能与操作 Alias的工程师们花费了大量的时间和精力,使得MAYA这个复杂的软件成为有用的工具。要使用像MAYA这样大型复杂的软件,如果能有一个对该软件各部分的详细介绍,则会加快用户的学习速度。在这一章里,我们就来介绍MAYA的基本功能与操作。 1.1 鼠标之于窗口 我们打开一个model为例: ●1-1-1 旋转 以Persp窗口为例,一般时候光标在画面中是呈箭头状。如图1-1-2:

●1-1-2 当我们按住Alt键不放再按住鼠标左键的时候,光标会变成两个弯曲旋转的箭头,如图1-1-3所示: ●1-1-3 这时我们可以平移鼠标,就会看到整个画面都随着鼠标的移动而转动(Alt键不能放开)。如图1-1-4:

●1-1-4 当放开鼠标左键以后,光标即恢复成箭头的状态。如图1-1-5: ●1-1-5 移动 按住Alt键不放,再按住鼠标中键的时候,我们会看到光标变成了十字标,如图1-1-6:

●1-1-6 这时我们可以上、下、左、右移动鼠标(Alt键不能放开)。如图1-7-7、1-1-8: ●1-1-7 向上移动

●1-1-8向左移动 ●1-1-9向右下移动 当放开鼠标中键时,光标恢复为箭头状态。 镜头的伸缩 当我们按住Alt键不放,再按住鼠标右键,光标会变成形状的箭头如图1-1-10所示:

●1-1-10 我们可以按住鼠标右键向左移动(要一直按住Alt键),会看到整个画面是向后缩的,这是Zoom Out,如图1-1-11 ●1-1-11 向后Zoom Out 然后我们按住右键向右移动,画面是想前放大的,也就是Zoom In,如图1-1-12:

用户界面设计实例

用户界面设计实例 ● 设计的系统名称:个人日常事务管理系统 ● 针对用户群是:广大电脑用户(有一定的电脑操作基础),officer 和广大学 生。 一、系统需求分析(The system requirement ) 针对officer 和学生们的需求分析,从我自身分析:对于我日常的安排我平 时会用专门的记事本记录和更改,对于日常各种事务可能会冲突或不变携带,现在针对这些需求,设计出符合此人群适合的一款系统来帮助人们更好的安排日程和完成工作。此系统是要面向个人的,同企业系统相比,此软件要力求操作简单,效率要高效,由于针对的人群是officer 和大学生,这些人都是年轻的一代人,对计算机和系统都比较了解,而且倾向于华丽的界面,但是该系统同时要解决高效,较少的操作较快地达到用户的需求。由于工作原因或计算机系统崩溃等用户在本机保存的日程安排等数据可能丢失的情况,同时,有些情况下可能无法连接网络,此系统应支持 1.、本机数据保存。2、可以上传到服务器数据库,用户注册可获得免费的空间,用户注册后,只要登录就能在随时随地获得自己的日程安排等信息。 二、系统功能定义(The function definitions ) 个人日程管理系统主要是提供个人时间日程安排系统软件,它具有相当方便的操作接口,让用户能够对所安排的行程一目了然,除去主要功能还附带了更多功能和小工具,安排的行程可以生成通行路线,并会根据天气预报提醒当天安排是否影响。而且用户可以注册,注册后用户有更多的服务,安排的日程数据可以保存到本地同时可以更新到服务器,这样用户就算到外地也可以随时查看自己的日程安排,同时其他功能有:时钟提醒、通讯录、效率评估等。 实现功能(主界面导航): 个人日常事 务管理系统

网页开发与设计课后习题答案.(DOC)

习题1 1.HTML指的是( A )。 A超文本标记语言(Hyper Text Markup Language) B家庭工具标记语言(Home Tool Markup Language) C超链接和文本标记语言(Hyperlinks and Text Markup Language) 2.web标准的制定者是( B )。 A 微软B万维网联盟(W3C)C网景公司(Netscape) 3.用HTML标记语言编写一个简单的网页,网页最基本的结构是( D )。 A … … B … C … D … … 4.从IE浏览器菜单中选择____查看 源文件______命令,可以在打开的记事本中查看到网页的源代码。 5.实现网页交互性的核心技术是_______ JavaScript _______________。 6.CSS的全称是________ Cascading Style Sheet __________ ______。 7.写出你了解的专业网页编辑制作工具_____Dreamweaver_,_ EditPlus ___________。8.URL的全称是____Uniform Resource Locator _____________________________。 9.写出URL包含的三个部分内容的作用。 URL通常包括三个部分,第一部分是Scheme,告诉浏览器该如何工作,第二部分是文件所在的主机,第三部分是文件的路径和文件名。 习题2 以下标记符中,用于设置页面标题的是( A )。 A B <caption> C <head> D <html> 以下标记符中,没有对应的结束标记的是( B )。 A <body> B <br> C <html> D <title> 文件头标记也就是通常所见到的____<head>…</head>_____标记。 创建一个HTML文档的开始标记符是___<html>______,结束标记符是____</html>_____。 标记是HTML中的主要语法,分____单_____标记和____双_____标记两种。大多数标记是____成对_____出现的,由____开始_____标记和_____结束____标记组成。 把HTML文档分为__头部_______和______主体___两部分。___主体______部分就是在Web浏览器窗口的用户区内看到的内容,而__头部_______部分用来设置该文档的标题(出现在Web 浏览器窗口的标题栏中)和文档的一些属性。 HTML4或XHTML1.0的三种文档风格是__严格型、过渡型____、框架型_____。 简述一个HTML文档的基本结构。 一个完整的HTML文件包含头部和主体两个部分的内容,在头部内容里,可定义标题、样式等,文档的主体内容就是要显示的信息。<html>标记通常会作为HTML 文档的开始代码,出现在文档的第一句,而</html>标记通常作为HTML文档的结束代码,出现在文档的尾部,其他的所有的HTML代码都位于这两个标记之间,该标</p><h2>app用户界面设计大作业</h2><p>教学站:杭州前进学号:201812925310039 姓名:詹浩裕 医护app用户界面设计说明书 修订历史记录</p><p>目录 1 引言................................................... - 2 - 1.1编写目的............................................ - 2 - 1.2项目背景............................................ - 2 - 1.3主要功能 (2) 2 应当遵循的界面设计规范 ................................. - 3 - 2.1用户界面设计原则.................................... - 3 - 2.2界面一致性 (4) 2.3布局合理化原则.......................... 错误!未定义书签。 3 引导页..................................... 错误!未定义书签。 4 主界面................................................. - 5 - 4.1主界面.............................................. - 6 - 4.2登录页面................................ 错误!未定义书签。 4.3各子界面 (7) 5 美学设计 (10) 6 界面资源设计 (10) 6.1图标资源 (10) 7 投诉与建议 (11) - 1 -</p><h2>19春北理工《用户界面设计》在线作业答案</h2><p>(单选题)1: 在计算机系统用来处理大量相关数据信息的场合下,例如数据库系统、信息系统等都需要输入一系列的数据,此时______是最理想的数据输入界面。 A: 直接操纵界面 B: 条形码 C: 填表界面 D: 声音数据输入 正确答案: (单选题)2: 把命令集中地按某种结构显示在屏幕上,让用户通过上下箭头选择,或把命令编号,让用户输入相应的命令编号来选择命令,即所谓的 A: 命令格式 B: 命令编码 C: 命令语言 D: 命令菜单 正确答案: (单选题)3: 以下哪个选项不是针对软件界面分析的描述 A: 功能性设计界面 B: 使用性设计界面 C: 情感性设计界面 D: 环境性设计界面 正确答案: (单选题)4: 为避免人的习性弱点而引起的人机交互的混乱、失败,应该要求系统能在各种情况下提供及时的响应,就用户习性方面对系统的要求不包含下列哪个选项 A: 系统应该让在终端工作的用户有耐心 B: 系统应该很好的对付人的易犯错误、健忘等习性 C: 应该减轻用户使用系统的压力 D: 系统对不同经验知识水平的用户做出不同反应 正确答案: (单选题)5: _________是传统书本的替代品。 A: 联机演示 B: 联机培训 C: 联机用户手册 D: 上下文帮助 正确答案: (单选题)6: _________是一个很小的弹出窗口,也是一种上下文用户帮助。 A: 工具提示 B: 状态栏消息 C: 帮助提示 D: 上下文相关帮助 正确答案: (单选题)7: 在对于不具备专门知识的操作人员中,有一项图形用户界面设计原则能够减少用户对可能错误的担心 A: 操作可逆 B: 信息反馈 C: 界面一致 D: 错误处理 正确答案: (单选题)8: 很多软件在使用需要时使用对话框、消息框来接收或显示信息,它们都属于_________。 A: 开关式窗口 B: 分裂是窗口 C: 瓦片式窗口 D: 弹出式窗口</p><h2>Java大作业设计报告</h2><p>《Java程序设计》大作业设 计报告 设计名称多人聊天室 组员姓名 学生班级 设计时间 2013.12.15 设计成绩</p><p>一、问题描述及设计思路 设计多人聊天程序,能进行多人实时聊天,其中服务器为PC端,客户端为安卓端。 在服务器上,不断监听来自客户端的接入请求,对于接入的客户端加入线程池,同时为之开启独立线程,等待从该客户端发来的信息,再转发给其他客户端。 在客户端上,首先布局简单的安卓界面,开启客户端并且登录后,设置button 按钮监听想服务器发送信息请求,同时开启独立线程接收来自服务器的信息(即来自其他客户端的信息)。 二、详细设计过程 服务器开发 1.首先,导入了我们完成服务器端所要完成的各种类: 能,辅助以GUI界面进行美化。 2.在Server类里面的私有成员函数里,有以下定义: 程运行做准备, 同时创建了一个广义的ArrayList<Socket>vector,用来存放客户端的套接字。创建了两个file类的文件,分别用于记录客户端的链接信息和保存客户端的聊天记录。</p><p>一个独立的线程,互不干扰。接下来则是采用GUI组件进行简单的界面设计,在try-catch块里完成主要功能。 首先,采用ServerSocket serverSocket = new ServerSocket(port);建立套接字,一旦建立成功,则在服务器端的界面上会出现创建的日期信息。又使用Socket socket = serverSocket.accept();连接客户端,采用while语句不断监听客户端连接,收到请求后,则在服务器端显示客户端的信息,如连接到服务器的时间,客户端的主机名称和IP地址,这些信息会被写进txt文本进行保存。 mExecutorService.execute(new Thread (newHandleAClient(socket)));则是向线程池中添加线程,这里使用了一个内部类HandleAClient用于处理服务器和单独一个客户端之间的问题。请看下面的继续解析。 4.采用一个内部类HandAClient完成一个客户端和服务器之前互相传输信息的</p> <div> <div>相关主题</div> <div class="relatedtopic"> <div id="tabs-section" class="tabs"> <ul class="tab-head"> <li id="10173561"><a href="/topic/10173561/" target="_blank">图形化操作界面</a></li> <li id="13853494"><a href="/topic/13853494/" target="_blank">图形化用户界面设计</a></li> <li id="10103106"><a href="/topic/10103106/" target="_blank">操作界面介绍</a></li> <li id="2473096"><a href="/topic/2473096/" target="_blank">用户界面设计及答案</a></li> <li id="17728855"><a href="/topic/17728855/" target="_blank">用户界面设计大作业</a></li> </ul> </div> </div> </div> <div class="container"> <div>文本预览</div> <div class="textcontent"> </div> </div> </div> <div class="category"> <span class="navname">相关文档</span> <ul class="lista"> <li><a href="/doc/e214891171.html" target="_blank">Java图形化界面设计(绘图)</a></li> <li><a href="/doc/221407978.html" target="_blank">java图形化界面练习及答案</a></li> <li><a href="/doc/7112011614.html" target="_blank">图形操作界面</a></li> <li><a href="/doc/ed4249178.html" target="_blank">实验6-图形化用户界面编程</a></li> <li><a href="/doc/609351387.html" target="_blank">图形化用户界面</a></li> <li><a href="/doc/a810758395.html" target="_blank">22-功能流、图形化界面</a></li> <li><a href="/doc/e210414161.html" target="_blank">Linux系统界面操作介绍</a></li> <li><a href="/doc/0811179717.html" target="_blank">1图形化用户界面概述</a></li> <li><a href="/doc/7310672516.html" target="_blank">第3章XWindow图形化用户界面</a></li> <li><a href="/doc/cf10309256.html" target="_blank">2图形界面和字符界面操作剖析</a></li> <li><a href="/doc/5e3067234.html" target="_blank">TetraMax软件图形化界面使用详细介绍</a></li> <li><a href="/doc/97358096.html" target="_blank">图形用户界面设计</a></li> <li><a href="/doc/e97639420.html" target="_blank">【H3C】图形化SIMWARE配置界面使用指南</a></li> <li><a href="/doc/0c4736199.html" target="_blank">图形用户界面使用</a></li> <li><a href="/doc/6317944399.html" target="_blank">RedHatEnterpriseLinux6XWindow图形化界面</a></li> <li><a href="/doc/b57359392.html" target="_blank">图形用户界面操作</a></li> <li><a href="/doc/f413814402.html" target="_blank">2图形界面和字符界面操作.ppt</a></li> <li><a href="/doc/4d15087465.html" target="_blank">第4课 图形化操作界面</a></li> <li><a href="/doc/861047759.html" target="_blank">【H3C】图形化SIMWARE配置界面使用指南</a></li> <li><a href="/doc/eb7075376.html" target="_blank">操作图形化界面doc资料</a></li> </ul> <span class="navname">最新文档</span> <ul class="lista"> <li><a href="/doc/0619509601.html" target="_blank">幼儿园小班科学《小动物过冬》PPT课件教案</a></li> <li><a href="/doc/0a19509602.html" target="_blank">2021年春新青岛版(五四制)科学四年级下册 20.《露和霜》教学课件</a></li> <li><a href="/doc/9619184372.html" target="_blank">自然教育课件</a></li> <li><a href="/doc/3319258759.html" target="_blank">小学语文优质课火烧云教材分析及课件</a></li> <li><a href="/doc/d719211938.html" target="_blank">(超详)高中语文知识点归纳汇总</a></li> <li><a href="/doc/a519240639.html" target="_blank">高中语文基础知识点总结(5篇)</a></li> <li><a href="/doc/9019184371.html" target="_blank">高中语文基础知识点总结(最新)</a></li> <li><a href="/doc/8819195909.html" target="_blank">高中语文知识点整理总结</a></li> <li><a href="/doc/8319195910.html" target="_blank">高中语文知识点归纳</a></li> <li><a href="/doc/7b19336998.html" target="_blank">高中语文基础知识点总结大全</a></li> <li><a href="/doc/7019336999.html" target="_blank">超详细的高中语文知识点归纳</a></li> <li><a href="/doc/6819035160.html" target="_blank">高考语文知识点总结高中</a></li> <li><a href="/doc/6819035161.html" target="_blank">高中语文知识点总结归纳</a></li> <li><a href="/doc/4219232289.html" target="_blank">高中语文知识点整理总结</a></li> <li><a href="/doc/3b19258758.html" target="_blank">高中语文知识点归纳</a></li> <li><a href="/doc/2a19396978.html" target="_blank">高中语文知识点归纳(大全)</a></li> <li><a href="/doc/2c19396979.html" target="_blank">高中语文知识点总结归纳(汇总8篇)</a></li> <li><a href="/doc/1619338136.html" target="_blank">高中语文基础知识点整理</a></li> <li><a href="/doc/e619066069.html" target="_blank">化工厂应急预案</a></li> <li><a href="/doc/b019159069.html" target="_blank">化工消防应急预案(精选8篇)</a></li> </ul> </div> </div> <script> var sdocid = "1d98bd22192e45361066f5c5"; </script> <script type="text/javascript">bdtj();</script> <footer class="footer"> <p><a href="/tousu.html" target="_blank">侵权投诉</a> © 2022 www.doczj.com <a href="/sitemap.html">网站地图</a></p> <p> <a href="https://beian.miit.gov.cn" target="_blank">闽ICP备18022250号-1</a>  本站资源均为网友上传分享,本站仅负责分类整理,如有任何问题可通过上方投诉通道反馈 <script type="text/javascript">foot();</script> </p> </footer> </body> </html>