GUI图形界面
一、简介
在一个系统中,良好的人机界面非常重要。
GUI:Graphical User Interface。
GUI有以下特征:
1.布局
2.组件
3.事件响应
在Java中有两种可使用的图形界面技术:AWT、Swing。
AWT大量地去调用操作系统的函数库,是一个重量级的框架。
【重量级:与别的函数的耦合度问题】
Swing全部由Java实现的用户界面类。大部分会依赖AWT。
Java主要是Web端。
二、AWT简介
AWT(Abstract Windowing ToolKit)抽象工具包。是Java用来设置和建立图形界面的基本工具。一般位于java.awt包下,主要包含以下类:
容器,容纳组件,Container
组件:Component
布局管理器:LayoutManager
组件
AWT是由Component和MenuComponent扩展而来。
MenuComponent包含MenuBar和MenuItem两个类,其中MenuItem包含Menu。
Swing特色是:AWT中组件加上一个单词J。
例如:AWT:Button Swing :JButton
容器
布局管理器
使容器中的组件按照特定的顺序进行排放。LayoutManager包含FlowLayout、BorderLayout、BoxLayout、CardLayout、GridLayout、GridBagLayout。
三、Swing简介
所在的包:javax.swing
四、基本容器JFrame
构建方式
1.空的构造函数
JFrame frame = new JFrame();
2.带标题的构造函数
JFrame frame = new JFrame("第一个JFrame");
注意:此时生成JFrame是不可见的,如果要让其可见,需要调用Window类上的setVisible方法。
frame.setVisible(true);
为什么new JFrame不用try...catch?
因为HeadLessException是运行期异常。
方法
?setVisible(boolean b):让生成的窗体是否可见
?setSize(300, 200):设置窗体的宽度和高度
?setSize(new Dimension(300, 200))
?setBackground(Color.BLACK):设置背景颜色
设置Color的方式:
1.静态属性
Color.BLACK
2.构造函数
new Color(0,255,0);范围0-255
?frame.getContentPane().setBackground(new Color(0,255,0))设置窗体内容的背景颜色
?getContentPane():返回此窗体的容器对象
?setLayout(new FlowLayout()):设置窗体的布局
?setLocation(0, 0):设置窗体的位置
注意:计算机中X轴为顶端的,Y轴向下。
?pack():调整窗体大小,以适合子组件的首选大小和布局。
扩展:
?setResizable():设置窗体是否可扩展
?setExtendedState(frame.MAXIMIZED_BOTH):设置窗体全屏效果
?frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE):达到关闭的效果
?frame.getToolkit().getScreenSize().getWidth():获取电脑分辨率五、组件JLabel
JLabel表示的是一个标签,用于显示信息。
初始化
1.JLabel label = new JLabel("用户名");
2.Icon icon = new ImageIcon("images/a.jpg");
JLabel label = new JLabel(icon);
3.JLabel label = new JLabel("用户名",icon,SwingConstants.CENTER)
不是文字的背景图片,而只是文字前面有一张图片。
方法
getText():获取标签组件的内容
setText():设置标签组件内容
setIcon():设置标签的图像
注意上面三个方法结合事件编程发挥其作用。
更改JLabel字体样式
1.Font类介绍
①PLAIN:普通样式
②BOLD:粗体样式
③ITALIC:斜体样式
2.构造函数
Font(String name,int style,int size):
Name:表示字体名字
Style:字体类型,例如粗体等
Size:字体的大小。
3.效果代码
Font fnt =new Font("楷体_GB2312",Font.BOLD,26);
label.setFont(fnt);
4.如何获取系统的字体
需要使用GraphicsEnvironment。
private static void getAllFontsName(){
GraphicsEnvironment env =
GraphicsEnvironment.getLocalGraphicsEnvironment();
String [] str =env.getAvailableFontFamilyNames();
for(String fontName : str){
System.out.println("字体名称:"+fontName);
}
}
5.设置字体的颜色
label.setForeground(Color.RED);
六、组件JButton
JButton是一个普通的按钮。
初始化
1.JButton btn = new JButton("按钮");
2.JButton btn2 = new JButton(new ImageIcon("images/a.jpg"))
3.JButton btn3 =
new JButton("按钮3",new ImageIcon("images/a.jpg"))
注意:利用Icon和text的构造函数,Icon没有起到背景图片的效果,只是在文字前面有一个图片。
方法
setText():用来设置按钮显示文字
getText():用来打印按钮显示文字
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setLayout(new FlowLayout());
JButton btn = new JButton("按钮");//实例化Button
JButton btn2 = new JButton(new ImageIcon("images/a.jpg"));//实例化Button
JButton btn3 =
new JButton("按钮3",new ImageIcon("images/a.jpg"));//实例化Button
frame.add(btn);
frame.add(btn2);
frame.add(btn3);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
System.out.println(btn3.getText());
btn3.setText("登录");
}
作业
1.在Frame窗体上添加JButton,并要求修改按钮字体的颜色、大小等。
2.在上面的基础上添加一功能,要求当将鼠标放置于该按钮时,此时鼠标变为手形状。setCursor方法
public static void main(String[] args) {
Font font =new Font("楷体_GB2312", Font.BOLD+Font.ITALIC, 20);
JFrame frame = new JFrame();
frame.setLayout(new FlowLayout());
JButton btn = new JButton("按钮");//实例化Button
btn.setFont(font);//设置按钮的字体
btn.setForeground(Color.RED);//设置字体的颜色
btn.setCursor(new Cursor(Cursor.HAND_CURSOR));
frame.add(btn);
SwingTool.managerFrame(frame);//设置JFrame共同代码块}
七、布局管理器
如果不对窗体进行版面设置,那么第一后面的组件会覆盖前面的组件,第二组件会充满整个屏幕,因此需要通过布局管理器来管理组件。
所有的布局管理器都实现了LayoutManager。
布局管理器位于java.awt包
FlowLayout
属于流式布局管理器,所有的组件依次进行排列。
常用属性:
LEFT:组件左对齐
RIGHT:组件右对齐
CENTER:组件中间设置
LEADING:
TRAILING:
构造函数:
1.空构造函数
FlowLayout fl = new FlowLayout()
2.带组件对齐方式的构造函数
FlowLayout fl = new FlowLayout(FlowLayout.LEFT)
3.对齐方式以及水平垂直间隙的构造函数
FlowLayout fl = new FlowLayout(FlowLayout.LEADING,100,100)
GridLayout
GridLayout将容器分割成纵横线分割的网格,每个网格所占的区域大小是相同的。默认从左到右,从上到下的顺序进行填充。所以Gridlayout需要设置行数和列数。
1.构造函数
空构造函数
new GridLayout() 一行一列
指定行和列的构造函数
new GridLayout(3,3)
指定行和列并且指定水平和垂直间隙的构造函数
frame.setLayout(new GridLayout(3,3,20,20))
2.代码例子
public static void main(String[] args) {
JFrame frame= new JFrame();
// frame.setLayout(new GridLayout());
// frame.setLayout(new GridLayout(3,3));
frame.setLayout(new GridLayout(3,3,20,20));
frame.add(new JButton("A"));
frame.add(new JButton("B"));
frame.add(new JButton("B"));
frame.add(new JButton("A"));
frame.add(new JButton("A"));
frame.add(new JButton("A"));
frame.add(new JButton("A"));
SwingTool.managerFrame(frame);
}
BorderLayout
BorderLayout会将窗体的版本分为东、西、南、北、中五个区域。
基本常量:
NORTH:
SOUTH:
WEST:
EAST:
CENTER:
构造函数:
1.空构造函数
new BorderLayout()
2.指定水平和垂直间隙的构造函数
new BorderLayout(3,3)
在指定的区域显示组件:
frame.add(new JButton("A"),BorderLayout.NORTH)
作业:做计算器
1.JPanel容器,放置组件
2.JTextField组件
3.结合BorderLayout以及GridLayout进行组件的布局
家庭作业:
1.各组项目确定题目。
2.模拟美萍中某一个软件,使用今天学过的布局方式进行组件的布局,模拟登陆界面。要求提交代码中附带效果图。
绝对布局
直接通过坐标方式进行定位。X轴从左上角开始水平线,Y轴从左上角开始垂直线。
通过组件的setBounds(int x, int y ,int width ,int height)方法进行设置。
public static void main(String[] args) {
JFrame frame = new JFrame();//实例化一窗体
frame.setLayout(null);//将布局管理器设置为空
JLabel label = new JLabel("120班");
JButton btn1 = new JButton("进入");
JButton btn2 = new JButton("设置");
frame.setSize(new Dimension(300, 200));//设置窗体大小
label.setBounds(40, 5, 100, 20);
btn1.setBounds(40, 25, 100, 22);
btn2.setBounds(40, 45, 100, 20);
frame.add(label);//将组建放置于窗体中
frame.add(btn1);
frame.add(btn2);
// frame.pack();//根据子窗体的大小进行调整
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭按钮有效
frame.setVisible(true);//设置窗体可见
}
步骤:
第一:设置布局管理器为空
第二:针对组件设置位置以及宽和高。
使用绝对布局,无论窗体如何改变大小,组建的位置是固定不变的。
CardLayout
卡片布局,将一组组件依次重叠进行布局,但是出现的界面只有一个界面。
1.初始化
CardLayout card = new CardLayout();
2.方法
?Next():翻转到容器的下一张卡片
?First():翻转到容器的第一张卡片
?Last():翻转到容器的最后一张卡片
?Show():翻转到指定的卡片,由name确定
?Previous():翻转到上一张卡片
public static void main(String[] args) {
JFrame frame = new JFrame();//初始化窗口
final Container cont = frame.getContentPane();//获取容器
final CardLayout card = new CardLayout();
frame.setLayout(card);//设置Frame 卡片布局
frame.add(new JLabel("1"),"first");//将标签放置于JFrame
frame.add(new JLabel("2"),"second");
frame.add(new JLabel("3"),"third");
// frame.setSize(200,100);
//card.show(cont, "second");
frame.setBounds(200, 100, 200, 200);
frame.setVisible(true);
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
card.next(cont);
}
}, 1000, 1000);
}
3.作业
利用卡片布局实现图片切换功能。
GridBagLayout
绝对布局相反的性质:相对布局
同GridLayout相似,也是采用网格形式来管理组件。
但是GridBagLayout可以对单元格进行控制:
第一:可以控制到每个单元格。
第二:可以实现多个单元格的合并【行、列合并】。
其布局用的类:GridBagLayout
需要依赖GridBagContains,其用于设置组件显示的坐标位置以及网格大小等。
属性介绍:
Gridx、gridy
Gridx和gridy用于描述组件在布局中处于哪个网格位置。
public static void main(String[] args) {
JFrame frame = new JFrame();//初始化窗体
GridBagLayout gbl =new GridBagLayout();//定义GridBagLayout布局
frame.setLayout(gbl );//设置frame布局方式
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0 ; //设置显示的网格位置,注意从0开始算
gbc.gridy = 0;
JButton btn = new JButton("登录1");
gbl.setConstraints(btn, gbc);//布局管理器利用GridBagConstraints处理组件
frame.add(btn);
gbc.gridx = 1; //设置显示的网格位置,注意从0开始算
gbc.gridy = 1;
JTextField jtf2 = new JTextField(10);
gbl.setConstraints(jtf2, gbc);
frame.add(jtf2);
gbc.gridx = 2 ; //设置显示的网格位置,注意从0开始算
gbc.gridy = 2;
JTextField jtf = new JTextField(10);
gbl.setConstraints(jtf, gbc);
frame.add(jtf);
frame.pack();
frame.setVisible(true);
}
Gridwidth、gridheight
描述组件在布局中所占的网格的个数。Gridwidth表示在横向上占的网格个数,gridheight表示纵向上占的网格的个数。
public static void main(String[] args) {
JFrame frame = new JFrame();//初始化窗体
GridBagLayout gbl =new GridBagLayout();//定义GridBagLayout布局
frame.setLayout(gbl );//设置frame布局方式
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0 ; //设置显示的网格位置,注意从0开始算
gbc.gridy = 0;
JButton btn = new JButton("登录1");
gbl.setConstraints(btn, gbc);//布局管理器利用GridBagConstraints处理组件
frame.add(btn);
gbc.gridx = 1 ; //设置显示的网格位置,注意从0开始算
gbc.gridy = 0;
JButton btn1 = new JButton("登录2");
gbl.setConstraints(btn1, gbc);//布局管理器利用GridBagConstraints处理组件
frame.add(btn1);
gbc.gridx = 2 ; //设置显示的网格位置,注意从0开始算
gbc.gridy = 0;
JButton btn2 = new JButton("登录3");
gbl.setConstraints(btn2, gbc);//布局管理器利用GridBagConstraints处理组件
frame.add(btn2);
gbc.gridx = 3 ; //设置显示的网格位置,注意从0开始算
gbc.gridy = 0;
JButton btn3 = new JButton("登录4");
gbl.setConstraints(btn3, gbc);//布局管理器利用GridBagConstraints处理组件
frame.add(btn3);
gbc.gridx = 0 ; //设置显示的网格位置,注意从0开始算
gbc.gridy = 1;
gbc.gridwidth = 4;
// gbc.fill = GridBagConstraints.VERTICAL;
JButton btn4 = new JButton("登录5");
gbl.setConstraints(btn4, gbc);//布局管理器利用GridBagConstraints处理组件
frame.add(btn4);
frame.pack();
frame.setVisible(true);
}
Insets
设置网格之间间距。
gbc.insets = new Insets(4, 4, 4, 4);
Fill
垂直方向:GridBagConstraints.VERTICAL
水平方向:GridBagConstraints.HORIZONTAL
双方向:GridBagConstraints.BOTH
Weightx、weighty
设置窗体变化时填充的比值。
例如:按钮设置Weightx=0.1,那么在扩展10像素的基础上,该按钮只扩展1个像素。
Ipadx、ipady
在以前网格基础上做扩展。
gbc.ipadx = 4;
gbc.ipady = 4;
Box:
八、文本组件JTextComponent
单行文本框
JTextField类
初始化:
1.空的构造函数
2.指定长度的构造函数
new JTextField(50)
3.指定初始内容的构造函数
方法:
获取输入框中数据:getText()
多行文本框
类名:JTextArea。
构造方法
1.空的构造方法
JTextArea area = new JTextArea();
2.指定行和列
JTextArea area = new JTextArea(20,20)
3.指定文字以及行和列
方法
Append方法:用于指定内容追加到文档结尾
getText方法:获取输入框中数据
密码输入框
JTextField是以明文形式进行显示,而JPasswordField则以密文的形式进行展示。
构造方法
1.空的构造函数
2.指定长度的构造函数
new JPasswordField(50)
3.指定初始内容的构造函数
方法
setEchoChar(char word):设置显示的字符
getEchoChar():返回显示的字符
getPassword():返回密码输入框中实实在在存在的数据。
char []passwords = jpf.getPassword();
String password = new String(passwords);
System.out.println(password);
九、单选按钮
类名:JRadioButton,实现一个单选按钮功能。
构造函数
1.空构造函数
JRadioButton jrb1 = new JRadioButton();
2.带文字的构造函数
JRadioButton jrb1 = new JRadioButton("苹果");
3.选中状态的构造函数
JRadioButton jrb3 = new JRadioButton("香蕉",true)
方法
getText():获取标签值
isSelected():用于判断单选按钮是否被选中
setSelected():设置按钮被选中
但是发现没有达到单选的效果,因此需要用到另一个类:ButtonGroup
add():在组中添加单选按钮
remove():在组中删除按钮
getButtonCount():获取组中有多少个按钮
getElements():获取组中的按钮元素
public JRadioButtonDemo2(){
jframe = new JFrame("单选按钮");
jframe.setLayout(new FlowLayout());
JRadioButton jrb1 = new JRadioButton("苹果");
JRadioButton jrb2 = new JRadioButton("橘子");
JRadioButton jrb3 = new JRadioButton("香蕉",true);
ButtonGroup group = new ButtonGroup();//实例化ButtonGroup
group.add(jrb1);//在组中添加按钮
group.add(jrb2);
group.add(jrb3);
// group.remove(jrb1);//在组中删除按钮
System.out.println(group.getButtonCount());
Enumeration
while(buttons.hasMoreElements()){
JRadioButton jrb =(JRadioButton)buttons.nextElement();
System.out.println("是否被选中"+jrb.isSelected());
}
jframe.add(jrb1);
jframe.add(jrb2);
jframe.add(jrb3);
System.out.println(jrb1.getText());
System.out.println(jrb3.isSelected());
SwingTool.managerFrame(jframe);
}
【事件扩展部分】
ItemListener:项目内容的监听
ItemEvent:监听事件类
getItem():返回受事件影响的项
getStateChange():返回状态更改的类型(已选定或已取消选定)。
静态属性:
ItemEvent.SELECTED:表示单选按钮被选中
ItemEvent.DESELECTED:表示单选按钮取消选中
jrb1.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
System.out.println(e.getStateChange());//返回状态改变值
System.out.println(ItemEvent.SELECTED);//返回被选中的状态值
JRadioButton btn = (JRadioButton)e.getItem();
if(e.getStateChange() == ItemEvent.DESELECTED){
JOptionPane.showMessageDialog(null,
btn.getText()+"被选中");
}else{
JOptionPane.showMessageDialog(null,
btn.getText()+"被取消");
}
}
});
作业:
实现复选框被勾选上,当点击按钮时,打印被勾选上的值。
public class ItemListenerDemo2 {
private JFrame frame = null; //定义窗口
private JPanel panel =null;
private JCheckBox chk1 =null;
private JCheckBox chk2 =null;
private JCheckBox chk3 =null;
private JButton btn = null;
private List
public ItemListenerDemo2(){
frame = new JFrame("复选框");
panel = new JPanel();
btn = new JButton("提交");
panel.setBorder(BorderFactory.createTitledBorder("选择你喜欢的水果"));
initJCheckBox();//初始化复选框按钮
fruits.add("苹果");
chk1.addItemListener(il);
chk2.addItemListener(il);
chk3.addItemListener(il);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
StringBuilder sb = new StringBuilder();
for(String name : fruits){
sb.append(name).append("、");
}
JOptionPane.showMessageDialog(null, "选中的水果:"+sb.toString());
}
});
panel.add(btn);
frame.add(panel);
SwingTool.managerFrame(frame);
}
private void initJCheckBox(){
chk1 = new JCheckBox("苹果",true);
chk2 = new JCheckBox("香蕉");
chk3 = new JCheckBox("李子");
panel.add(chk1);
panel.add(chk2);
panel.add(chk3);
}
private ItemListener il = new ItemListener() { @Override
public void itemStateChanged(ItemEvent e) {
JCheckBox jcb =(JCheckBox)e.getItem();
if(e.getStateChange() == ItemEvent.SELECTED){ fruits.add(jcb.getText());
}else{
fruits.remove(jcb.getText());
}
}
};
public static void main(String[] args) {
new ItemListenerDemo2();
}
}
十、复选框
类名:JCheckBox。
实现多选的功能。
构造函数
1.空构造函数
JCheckBox jrb1 = new JCheckBox();
2.带文字的构造函数
JCheckBox jrb1 = new JCheckBox("苹果");
3.选中状态的构造函数
JCheckBox jrb3 = new JCheckBox("香蕉",true)
方法
getText():返回复选框标签值
isSelected():是否被选中
public class JCheckBoxDemo1 {
private JFrame frame = null; //定义窗口
private JPanel panel =null;
private JCheckBox chk1 =null;
private JCheckBox chk2 =null;
private JCheckBox chk3 =null;
public JCheckBoxDemo1(){
frame = new JFrame("复选框");
panel = new JPanel();
panel.setBorder(BorderFactory.createTitledBorder("选择你喜欢的水果"));
initJCheckBox();//初始化复选框按钮
System.out.println(chk1.getText());
System.out.println(chk1.isSelected());
frame.add(panel);
SwingTool.managerFrame(frame);
}
private void initJCheckBox(){
chk1 = new JCheckBox("苹果",true);
chk2 = new JCheckBox("香蕉");
chk3 = new JCheckBox("李子");
panel.add(chk1);
panel.add(chk2);
panel.add(chk3);
}
public static void main(String[] args) {
new JCheckBoxDemo1();
}
}
作业:
做一个界面:
1.用户名单文本输入框
2.密码密码输入框
3.性别单选按纽框
4.爱好复选按纽框
5.描述多文本输入框
6.注册按钮
7.布局管理器
扩展:
定义面板的边框显示条?
panel.setBorder(BorderFactory.createTitledBorder("选择水果"));十一、列表框JList
将多个选项信息以列表的形式展示给用户。
初始化:
1.空构造函数
2.JList(ListModel dataModel)
private ListModel lm =new ListModel(){
private String [] fruits = {"苹果","李子","香蕉"};
@Override
public int getSize() {
return fruits.length;
}
/**
* 根据索引获取JList列表中的值
*/
@Override
public Object getElementAt(int index) {
if(index < fruits.length){
return fruits[index];
}
return null;
}
实验一图形用户界面设计 一实验目的和要求 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)在处理大量相关数据的场合下,需要输入一系列的数据,这时填表输入界面是最理想的数据输入界面。在设计填表输入界面时应遵循的原则:一致性;有含义的表格标题;使用易于理解的指导性说明文字;栏目按逻辑分组排序;表格的组织结构和用户任务相一致;光标移动方便;出错提示;提供帮助;表格显示应美观、清楚,避免过分拥挤。
人机交互基础教程 实验报告 实验题目:图形用户界面的设计 专业计算机科学与技术 学生姓名 班级学号 教师 指导单位计算机软件学院 日期
教师 评语教师签名: 年月日 成绩评定 备注
一、实验目的 (1)熟悉图形用户界面的设计原则 (2)利用一种设计工具完成图形化的用户界面设计 二、预备知识 图形用户界面又称为WIMP界面,由窗口(windows)、图标(icons)、菜单(menu)、指点设备(pointing device)四位一体,形成桌面(desktop) ,如图所示。 WIMP界面 用 户 手 眼 击键/指点 窗口、图标 菜单、文本 应用例程 图形用户界面是当前用户界面的主流,广泛应用于各档台式微机和图形工作站。图形用户界面的共同特点是以窗口管理系统为核心,使用键盘和鼠标器作为输入设备。窗口管理系统除了基于可重叠多窗口管理技术外,广泛采用的另一核心技术是事件驱动(event-driven)技术。 WIMP界面可看作是第二代人机界面,是基于图形方式的人机界面。在WIMP界面中,人被称为用户,人机通过对话进行工作。用户只能使用手这一种交互通道输入信息,通过视觉通道获取信息。在WIMP界面中,界面的输出可以为静态或动态的二维图形或图像等信息。
这种方式能同时输出不同种类的信息,用户也可以在几个工作环境中切换而不丢失几个工作之间的联系,通过菜单可以执行控制型和对话型任务。由于引入了图标、按钮和滚动条技术,大大减少键盘输入,提高了交互效率。基于鼠标和图形用户界面的交互技术极大地推动了计算机技术的普及。 (1)图形用户界面的三个重要思想 1)桌面隐喻(desktop metaphor) 指在用户界面中用人们熟悉的桌面上的图例清楚地表示计算机可以处理的能力。隐喻的表现方法:静态图标、动画、视频2)所见即所得(What You See Is What You Get,WYSIWYG) 显示的用户交互行为与应用程序最终产生的结果是一致的。 3)直接操纵(direct manipulation) 直接操纵是指可以把操作的对象、属性、关系显式地表示出来,用光笔、鼠标、触摸屏或数据手套等指点设备直接从屏幕上获取形象化命令与数据的过程。直接操纵的对象是命令、数据或是对数据的某种操作。 (2)设计图形用户界面的原则 1) 一般性原则:界面要具有一致性、常用操作要有快捷方式、提供简单的错误处理、对操作人员的重要操作要有信息反馈、操作可逆、设计良好的联机帮助、合理划分并高效地使用显示屏、保证信息显示方式与数据输入方式的协调一致 2) 颜色的使用:颜色是一种有效的强化手段,同时具有美学价
C语言课程设计计算器图形界面
扬州大学 C语言课程设计报告 题目一个简易计算器的设计与实现 班级 学号 姓名 指导教师 成绩 老师评语: 扬州大学信息工程学院 年 6 月 25 目录
一、程序设计目的: (1) 二、程序设计内容: (1) 三、课程设计所补充的内容:补充的函数或算法…………3,4 四、系统总体设计 (4) 五、系统详细设计………………………………………5,6,7,8 六、运行结果………………………………………………8,9,10 七、系统调试…………………………………………8,9,10,11 八、课程设计体会总结………………………………8,9,10,11 1 课程设计目的 (1).课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于C语言对初学者较难掌握,因而对一个完整的C语言程序不适合平时实验。
经过课程设计能够达到综合设计C语言程序的目的。 (2)经过本课程设计,能够培养独立思考,综合运用所学有关相应知识的能力,能更好地使用C语言的知识,更好地了解C语言的好处和其可用性!掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础! (3)经过本程序训练程序设计的基本技能,掌握字符串的表示方法和字符串函数的功能、自学掌握四则运算的算法及WIN-TC的图形操作的基本知识、键盘上特殊键的获取及图形方式下光标的显示。 2 课程设计内容 目的:本课程的课程设计要求学生模拟实现一个简单计算器,要求(1)能够实现四则运算,并能支持优先级运算。(2)三角与反三角运算:如sinx,cosx等。(3)指数对数运算:如log (x),lnx,e的x次方等。(4)其它运算:如X!,x的累加等。(4)不允许调用库函数,使用自行开发的程序实现常见函数运算。(5)进一步考虑计算器外观设计,用可视化界面给出计算器外观、功能按键及输入界面。 使用说明:执行加法运算,'—'表示执行减法运算,表示执行乘法运算,'/'表示除法运算.‘Q’表示退出计算器‘C’表示清零,’=’表示得出结果'^'表示执行x的y次方,'e'表示执行e的x次方操
图形用户界面编程(设计性实验) 一、实验目的 1、熟悉Swing的基本组件,包括文本输入框、多行文本输入框、按钮、列表框等; 2、熟悉常用的布局管理器 3、了解GUI图像用户界面的设计方法 4、掌握Java组件的事件处理机制 5、熟悉基于内部类和匿名类的事件处理方式 二、实验要求 1、学生应做到独立上机操作 2、编程前应将程序的设计构想完成,主要包括所要创建的类的结构及属性和行为。 3、上机输入和调试自己所编的程序,并存在自己的软盘上。 4、检查实验结果是否正确。 5、上机结束后,写出实验报告,要求附运行界面、源代码。实验报告中应对实验结果进行分析,尤其是针对错误输出的分析。 三、实验内容 1.编写程序,显示一个窗口,窗口中包含一个按钮。当单击按钮时将弹出另一个窗 口。 2. 编写一个简单的计算器程序,实现两个数相加。 在文本框输入两个实数,点击“相加”按钮实现两个实数相加,并在标签中显示相加结果。点击“清除”完成对文本框和运行结果的清除。 四、实验代码及结果: 第一题代码: TestFrame.Java import javax.swing.*; import java.awt.event.*; import java.awt.*; public class TestFrame{ public static void main(String args[]){ JFrame f=new JFrame("Test"); f.setSize(400,200); f.setLayout(new FlowLayout(FlowLayout.CENTER)); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton b=new JButton("确定"); b.addActionListener(new ButtonHandler()); f.add(b); f.setVisible(true);} } class ButtonHandler implements ActionListener{ public void actionPerformed(ActionEvent e){ JFrame fr=new JFrame("Hello"); fr.setSize(200,100); fr.setVisible(true);} }
目录 第一章设计任务及要求 ---------------------------------------------------------------------------------------------------------------- 1 1.1设计依据-------------------------------------------------------------------------------------------------------------------------- 1 1.2课程设计内容 ------------------------------------------------------------------------------------------------------------------- 1 1.3课程设计要求 ------------------------------------------------------------------------------------------------------------------- 1 第二章设计原理-------------------------------------------------------------------------------------------------------------------------- 2 2.1设计题目分析 ------------------------------------------------------------------------------------------------------------------- 2 2.2 设计原理------------------------------------------------------------------------------------------------------------------------- 2 第三章设计实现-------------------------------------------------------------------------------------------------------------------------- 4 3.1 菜单栏编辑---------------------------------------------------------------------------------------------------------------------- 4 3.2 控件及代码的加入 ------------------------------------------------------------------------------------------------------------ 6 3.2.2 控件按钮的创建 ------------------------------------------------------------------------------------------------------ 7 3.2.3 控件代码加入 --------------------------------------------------------------------------------------------------------- 8 3.4 图像灰度处理 ------------------------------------------------------------------------------------------------------------------ 9 3.5 亮度调节------------------------------------------------------------------------------------------------------------------------- 9 3.6 底片处理----------------------------------------------------------------------------------------------------------------------- 11 3.7 直方图均衡化 ---------------------------------------------------------------------------------------------------------------- 12 第四章结果分析及总结 -------------------------------------------------------------------------------------------------------------- 13 第五章参考文献------------------------------------------------------------------------------------------------------------------------ 14 第六章附录 ------------------------------------------------------------------------------------------------------------------------------ 15
GUI指导教程系列(1):GUI入门基本操作 为什么在MATLAB中要使用GUI呢?其实GUI就是Matlab中的Visual Basic,是面向对象的编程,可以使Matlab程序的终端用户,即使不懂的Matlab也可以轻易操作该程序! 如果没有图形用户界面(GUI)我们只能从命令行(Command Window)中调用相关程序,这相对比较繁琐,并且不是所有用户都是这个能力。就好比计算机的DOS 系统,在有windows的情况下,您会选择DOS吗?当然我们也不排除骨灰级的人物! 在本节教程我们主要针对没有GUI创建和使用经历的网友,但是必要的MATLAB 基础知识是需要的。在教程中我们将创建一个简单的GUI程序,它执行两个数的加法运行,然后显示其运算结果。 好下面开始我们的教程! 一、打开和创建GUI界面 1、首先打开Matlab,在Command Window中输入guide回车 2、此时打开GUI编辑器GUIDE(GUI Developer的缩写) 2.1 界面上有两个标签也“Creat New GUI”和“Open Existing GUI” 如果创建新的GUI此时我们选择第一个标签页,但如果打开其它已经存在的GUI 就点击第二个标签吧
2.2 这里我们选择第一个标签下的“Blank GUI”(空白GUI),下面还有几个系统GUI模版,你可以根据需要选择其它的。 2.3 点击“OK”我们正式进入GUIDE界面,呵呵,是不是感觉似曾相识 3、添加你需要的控件到figure中 在添加控件之前,您最好对您的GUI界面布局已经有一定的构思了,否则盲目性太大了不利于您的编程。下面是我们构思的布局。
目录 1引言 ........................................................................................................................ 11.1课题背景......................................................................................................................................................... 11.2课程设计目的................................................................................................................................................. 21.3课程设计任务................................................................................................................................................. 22系统需求分析.......................................................................................................... 32.1功能需求分析................................................................................................................................................. 32.2 性能需求分析................................................................................................................................................ 33总体设计................................................................................................................. 43.1功能模块分析与设计..................................................................................................................................... 43.2 系统功能模块设计........................................................................................................................................ 44系统功能测试.......................................................................................................... 94.1一个Helloworld窗口.................................................................................................................................... 9 4.2计算器功能测试......................................................................................................................................... 10 5 课程设计总结...................................................................................................... 14参考文献................................................................................................................. 14 1引言 1.1课题背景 简单的计算器是一种能实现加、减、乘、除等简单运算的工具。要实现计算功能,可以用C语言的知识和GTK+编写程序来解决此问题。该计算器大大的降低了数字计算的难度及提高了计算的准确度和精确度。该计算器使用非常简单和方便,对广大中小学生的学习有巨大帮助作用,也对在职人员的工作有点帮助作用。 GTK+2.0 是自由软件,并且是GNU 工程的一部分[1]。GTK+2.0 的许可协议LGPL,
Linux字符界面切换到图形界面 由字符界面切换到图形界面可用两种简单方法实现: 1、在字符界面输入startx或init 5 。 2、通过编辑/etc/inittab文件实现默认进入图形界面。 把其中的id:3:initdefault中的3改为5,这样以后系统启动后将直接进入文本模式。 以下是配置引导进入图形模式的etc/inittab文件的部分内容: #Default runlevel.The runlevels used by RHS are: # 0-halt(Do NOT set initdefault to this) # 1 -Single user mode # 2-Multiuser,without NFS(The same as 3,if you do not have networking) # 3-Full multiuser mode # 4-unused # 5-X11 //选择此项,系统在登录时将进入图形化登录界面 # 6-reboot(Do NOT set initdefault to this) # id:3:initdefault: //此处若改为3,系统将被引导进入文本登录提示符界面 linux切换到图形界面与多种模式 1.开机进入文本模式 如果想让开机自动进纯文本模式,修改/etc/inittab,找到其中的id:5:initdefault:,这行指示启动时的运行级是5,也就是图形模式,改成3就是文本模式了id:3:initdefault:,这是因为Linux操作系统有六种不同的运行级(run level),在不同的运行级下,系统有着不同的状态,这六种运行级分别为: 0:停机(记住不要把initdefault 设置为0,因为这样会使Linux无法启动) 1:单用户模式,就像Win9X下的安全模式。 2:多用户,但是没有NFS 。 3:完全多用户模式,标准的运行级。 4:一般不用,在一些特殊情况下可以用它来做一些事情。 5:X11,即进到X-Window 系统。 6:重新启动(记住不要把initdefault 设置为6,因为这样会使Linux不断地重新启动)。其中运行级3就是我们要进入的标准Console字符界面模式。 2.强行退出X-Window进入文本模式 打开一个终端,输入init 3,(注意init后面有一个空格),等一会就进入了图形界面,以上方法切换后,窗口模式完全关闭.如果窗口中有文件未保存,将丢失.(用init 5可以回到图形界面,但原来的进程已死) 方法1:运行命令 #startx ,需要先配置图形界面信息,(暂时不会~); 方法2:修改/etc/inittab文件中的 id:3:initdefault ,将3改为5 ,重新启动系统; linux字符界面和图形界面切换 Linux忘记root密码怎么办?
实验三图形界面程序的界面设计 一、实验目的 1、掌握Java 图形界面程序设计的基本思想和步骤。 2、掌握JDK 中AWT 包和Swing 包的基本使用方法和区别。 3、掌握容器和布局的概念和使用。 4、掌握图形界面程序的界面设计方法和步骤。 二、实验内容 自己编写所有代码,设计一个程序的界面。该程序的功能要求是:运行之后,界面要求基本如左图所示。其中界面设计时的顶层容器要求使用JFrame(或Frame),界面上的“简易计算器”、“运算数一”、“运算数二”、“运算结果”些提示标签使用组件JLabel(或Label),输入运算数和输出运算结果使用JTextField (或TextField),“相加”、“相减”和“全部清零”使用按钮JButton(或Button)。请注意查阅JDK 的API文档中这些相关的类,看看它们具有哪些构造函数可以用来生成所需的对象,它们具有哪些方法可以用来进行调用。注意保存好本次实验代码,下一次实验将会要求实现其事件处理以继续完善。(由于实验三为选作,因此只做了第一题) 三、分析与设计 1、分析:这次实验主要是图形界面程序的界面设计,设计界面时,先定义“容器对象”作为载体,然后定义按钮,输入框之类的普通图形界面组件对象,把这些组件对象添加(调用容器对象的add方法)到容器上,才构成界面。而对于容器对象设置布局的方法都是调用该容器对象的setLayout方法。 2、设计:此题用到java中能够实现图形用户界面的类库:javax.swing,在根据类库中的组件完成整个界面的设计,其中要注意对于界面的设计有位置等细节需要决定。 四、测试数据及运行结果
Linux如何从图形界面切换到命令界面 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。接下来是小编为大家收集的Linux如何从图形界面切换到命令界面,欢迎大家阅读: Linux如何从图形界面切换到命令界面1、手工切换:在图形界面中找一个可以输入命令的地方(RedHat9中默认是按alt+F2,或者从菜单:系统工具终端打开) 输入init 3 回车(注意init后面有一个空格),等一会就进入了命令界面,用init 5可以回到图形界面。 2、如果想开机自动进纯文本模式,用文本编辑器打开文件/etc/inittab,找到其中的:id:5:initdefault: 这行指示启动时的运行级是5,也就是图形模式,改成3就是文本模式了:id:3:initdefault:。再想进入X Windows用startx 注意:以上几种方法切换后,窗口模式完全关闭。如果窗口中有文件未保存,将丢失。 3、还有一种软切换,按Ctrl+Alt+F1,进入一个同时运行的文本模式控制台,x窗口仍然在运行(占用内存) Ctrl+Alt+F7 切换回刚才的图形模式。其实Ctrl+Alt+F1、Ctrl+Alt+F2、Ctrl+Alt+F3、Ctrl+Alt+F4、Ctrl+Alt+F5、
Ctrl+Alt+F6 这6个都可以进入同时运行的不同文本模式控制台,没有窗口模式支持,也可以进行多任务同时处理。 看了Linux如何从图形界面切换到命令界面还想看: 1.LINUX图形界面下如何快速切换到命令界面 2.Linux的命令行界面 3.切换ubuntu图形模式与linux命令行模式方法 4.怎么安装LINUX操作系统
图形用户界面(GUI)设计举例 Tags: MATLAB图形用户界面GUI设计举例 Time : 2005-2-21 18:25:39 | Views : 756 | Font Size : Large Medium Small | Category : 毕业设计,留底回忆 前面我们已经大概的了解了MATLAB环境下的图形用户界面(GUI)设计,下面便通过具体的例子来演示在MATLAB环境下图形用户界面设计的方法与思想。 MATLAB的图形用户界面设计实际上是一种面向对象的设计方法。假设想建立一个图形界面来显示和处理二维图形的颜色、线型及数据点的图标。要求其基本功能是: (1)建立一个主坐标系,用来显示要绘制的二维图形; (2)建立一个列表框,允许用户选择不同的着色方法; (3)建立一组按扭,用于处理二维图形线型和数据点的图标; (4)为图形界面加入菜单项,用于决定坐标轴是否显示及坐标轴上是否需要网格; (A)最初图形界面的设想如下图所示: (B)根据上面的设想,下面我们就来制作它的图形用户界面: 首先,我们先来看其图形窗口的设置。在MATLAB命令窗口中选择菜单可获得一个标准MATLAB 的图形窗口,但我们可采用如下命令使得打开窗口的形式更富于变化: 窗口句柄=figure(属性1,属性值1,属性2,属性值2,……); 通过这样的方式可以很容易地打开一个新的图形窗口,并返回该窗口的句柄,以后我们可以方便地对它进行进一步修正,窗口的属性诸如颜色(Color),标题名(Name)、位置(Position)等,都可根据需要设定。若要改变窗口的某些属性,则可通过调set()函数来完成。这样我们就得到其窗口生成的程序如下: yWin=figure('Position',[100,100,410,310],'Name','对MATLAB绘图功能选项的演示 (2003/3/21)','Menubar','none', 'Resize','off','pointer','custom', 'numbertitle','off'); 接下来我们看起菜单项的加入。我们已建立了一个图形窗口,下面给它加入菜单项。 菜单设置是由uimenu()函数来完成的,该函数调用格式为: 菜单项句柄=uimenu(窗口句柄,属性1,属性值1,属性2,属性值2,……); 还可在某一个菜单条下定义一个新的子菜单条: 子菜单句柄=uimenu(菜单项句柄,属性1,属性值1,属性2,属性值2,……); uimenu()函数的属性最基本的有:
Matlab图形界面图像的旋转、平移和缩放 姓名: 班级: 学号: 目录 问题描述 (2) 摘要 (2)
正文 (3) 1、界面设计 (3) 2、打开图片功能 (4) 3、实现图片的任意角度的旋转 (5) 4、图像的平移 (8) 5、图像的缩放(放大与缩小) (12) 实验心得 (16) 附录: (16) Matlab图形界面操作 ------图像的旋转、平移和缩放
问题描述 期末运用学习的matlab知识通过图形用户界面对图片进行操作,实现如下功能。 ●能够查找和读取计算机中存储图像。 ●实现图像的旋转、平移、缩放等几何变换。 ●通过matlab界面功能实现界面的完美布局。 ●编写代码和回调函数实现上述功能。 摘要 本次任务旨在完成以下几个任务: ●整体分为四大模块:原图、旋转、平移和缩放。 ●利用数字图像处理技术,以MATLAB为平台,建立一个实现设计主题的
简易处理系统。 ●能显示输入图像、输出图像。 ●程序代码要有注释说明,调用MATLAB函数要清楚并理解函数的功能、 使用范围,在设计说明书中要写清楚函数的功能和参数意义。 ●完成自己课程设计说明书。 正文 1、界面设计 (1)在MATLAB命令窗口中输入“guide”,确定后,弹出GUI窗口。
(2)本次设计中,包含两个坐标轴(axes1、axes2),分别显示原图和处理后的图像。包含六个按钮(Push Button),分别实现“打开图片、保存处理后的图片、旋转、平移、放大、缩小以及退出功能”。 (3)旋转功能同时可以实现选择0—360度任意的度数,当选择不同的度数后,axes2位置就会显示不同选择角度的图片。如果需要保存该图片可以单击保存按钮进行保存。 (4)平移功能的实现,当单击平移按钮,可以有一个默认的平移位置。在设计中预设了几个固定位置,可以选择,分别是X单位Y单位方向都可以选择。达到平移的目的。 (5)放大和缩小功能类似,在界面上表现为选择不同的数据,反映出来不同大小的图片。 (6)操作完成后,点击退出功能,将询问是否退出,如果退出则点击“是”,不退出点击“我还要看看”。 2、打开图片功能 进入程序界面后,要实现几何操作,需要先打开一张图片。单击打开图片按钮,可以选择图片路径,从存储图片的地址任意旋转一张图片,图片就会显示在axes1的位置。效果如2-1所示: 图2-1
实验三--图形用户界面设计(汽院含答案)
实验三图形用户界面设计 实验目的 1.掌握Java语言中GUI编程的基本方法 2.掌握Java语言中AWT组件的基本用法 3.掌握Java语言中Swing组件的基本用法实验导读 1.通过图形用户界面(GUI:Graphics User Interface),用户和程序之间可以方便地进 行交互。 AWT(Abstract Windowing Toolkit),中文译为抽象窗口工具包,是Java提供的用来建立和设置Java的图形用户界面的基本工具。AWT由Java中的java.awt包提供,里面包含了许多可用来建立与平台无关的图形用户界面(GUI)的类,这些类又被称为组件(components)。 Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。 JDK写程序所有功能都是靠虚拟机去操作本地操作系统。比如window下,就是JDK用windows API实现功能。而awt包中很多组件是组件自身去调用本地操作系统代码 swing包中的组件采用的是调用本地虚拟机方法,由虚拟机再调用本地操作系统代码。意思就是中间多了一层,这样就加强了swing包的移植性,与本地关系不那强了。
图3.1 AWT常用组件继承关系图Container为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。 2.布局,容器中的组件的排放方式。常见的布 局管理器: FlowLayout(流式布局管理器):从左到右的顺序排列。Panel默认的布局管理器。BorderLayout(边界布局管理器):东,南,西,北,中。Frame默认的布局管理器。GridLayout(网格布局管理器):规则的矩阵CardLayout(卡片布局管理器):选项卡GridBagLayout(网格包布局管理器):非规则的矩阵 3.类JFrame是java.awt.Frame 的扩展版本, 该版本添加了对 JFC/Swing 组件架构的支持,常用方法如下: 1)J Frame() 该构造方法可以创建一个无 标题的窗口,窗口的默认布局为 BorderLayout布局。 2)J Frame(String s) 该构造方法可以创 建一个标题为s的窗口,窗口的默认布局 为BorderLayout布局。 3)p ublic void setBounds(int a,int b,int width,int height) 窗口调用该 方法可以设置出现在屏幕上时的初始位 置是(a,b),即距屏幕左面a个像素、距 屏幕上方b个像素;窗口的宽是width, 高是height。 4)p ublic void setSize(int width,int
图形用户界面综合设计(一) 实验内容 多数学校的学生档案信息都由计算机进行管理,在编写的档案管理应用程序中,有档案信息录入模块,该模块的功能是在图形化的界面下,用户把信息输入到计算机中。录入界面的大致样式及组件名称如图。 代码: import java.awt.*; import java.awt.event.*; public class InputData implements ActionListener{ Frame f; //声明框架对象 Label l1, l2, l3, l4; //声明标签对象 TextField t; //声明文本行对象 Checkbox r1,r2; //声明单选钮对象 CheckboxGroup g; //声明组对象 Checkbox c1,c2, c3; Choice ch; //声明选择框对象 Button b; //声明按钮对象 TextArea ta; //声明文本区对象 Panel p1, p2, p3, p4, p5; //声明面板对象
int i = 0; //对象实例化 public InputData(){ f = new Frame("信息录入"); f.setBounds(200,220,500,500); ch = new Choice(); l1 = new Label("姓名:"); l2 = new Label("性别:"); l3 = new Label("爱好:"); l4 = new Label("籍贯:"); t = new TextField(); t.setSize(200,10); g = new CheckboxGroup(); r1 = new Checkbox("男",g,false); r2 = new Checkbox("女",g,true); c1 = new Checkbox("体育"); c2 = new Checkbox("音乐"); c3 = new Checkbox("美术"); b = new Button("确定"); b.addActionListener(this); ta = new TextArea(); p2 = new Panel(); p3 = new Panel(); p4 = new Panel(); p5 = new Panel(); ch.add("济南"); ch.add("潍坊"); ch.add("济宁"); Panel p = new Panel(); p.setLayout(new GridLayout(5,1)); p1 = new Panel(); p1.setLayout(new FlowLayout(FlowLayout.LEFT)); //设定面板布局样式p2.setLayout(new FlowLayout(FlowLayout.LEFT)); p3.setLayout(new FlowLayout(FlowLayout.LEFT)); p4.setLayout(new FlowLayout(FlowLayout.LEFT)); p.add(p1); p.add(p2); p.add(p3); p.add(p4); p.add(p5); p1.add(l1); p1.add(t); p2.add(l2); p2.add(r1);
专题八MATLAB图形用户界面设计 8.3 图形用户界面设计方法 ?图形用户界面的组成 ?控件对象及其操作 ?菜单对象及其操作
1.图形用户界面的组成 ?图形用户界面(Graphical User Interface,GUI):用户与计算机进行信息交流的窗口。 ?设计图形用户界面的方法 ?调用建立用户界面控件的函数 ?使用MATLAB提供的GUIDE工具进行可视化设计
2.控件对象及其操作 (1)常用控件 ?输入和输出类控件:编辑框、静态文本、列表框、滑动条等。 ?实施确认、选择操作类控件:按钮、双位按钮、单选按钮、复选框等。
2.控件对象及其操作 (2)建立控件对象 函数uicontrol用于建立控件对象,其调用格式为: 句柄变量=uicontrol(图形窗口句柄,属性1,属性值1,属性2,属性值2,…)其中,属性及其取值决定了控件的特征。若省略图形窗口句柄,默认在当前图形窗口建立控件对象。
2.控件对象及其操作 (3)控件对象的基本控制属性 ?Style属性:定义控件对象的类型,例如‘pushbutton’表示按钮对象,'edit'表示编辑框,等等。 ?String属性:定义控件对象的说明文字。 ?Tag属性:标识控件对象。 ?Enable属性:控制控件对象是否可用。 ?Position属性:定义控件对象的位置,其取值形式为[x,y,w,h]。?Callback属性:其属性值是描述命令的字符串或函数句柄,当选中控件时,系统将自动执行字符串描述的命令或调用句柄所代表的函数,实施相关操作。
例1 在图形窗口中建立三个按钮对象,当单击按钮时分别绘制正弦曲线、显示或隐藏坐标轴的网格、清除坐标轴的图形。 ha= axes('Units','pixels','Position',[40,40,360,360]); ptgrid=uicontrol('Style','pushbutton',... 'String','网格', 'Position', [450,120,48,20],... 'Callback','grid' ); btncla= uicontrol('Style', 'pushbutton', ... 'String', '清除','Position', [450,80,48,20],... 'Callback','cla' ); btnplot= uicontrol('Style', 'pushbutton', ... 'String','绘图','Position', [450,160,48,20]);