最新图形用户界面的设计PPT课件.ppt
《最新图形用户界面的设计PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新图形用户界面的设计PPT课件.ppt(109页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、图形用户界面的设计图形用户界面的设计布局管理器n回忆前面的程序,向一个面板中加了三件按钮,所有的按钮都是排成一行。n如果加更多,直到一行排不了,分行。n按钮总是居中显示。n实际上,是有一个布局管理器在背后起作用。n只要是容器都可以更改布局。网格布局管理器n网格布局按行列来排列所有的组件,就像电子数据表一样。然而,对于网格布局。各个单元总是一样的大小。 例如:设定行列数 panel.setLayout(new GridLayout(5,4); 添加组件,从第一行的第一列开始,然后是第一行的第二列,并这样持续下去。网袋布局n网袋布局是所有的布局管理器中最强大的一种。在一个网袋布局中,行和列的尺寸均
2、可改变,并且可以合并相邻的单元格来适应更大的组件。组件不需要填充整个单元格区域,并且可以指定单元格内的对齐方式。n使用网袋布局管理器进行布局的步骤如下:n创建一个GridBagLayout类型的对象n把此GridBagLayout对象设成组件的布局管理器n创建一个GridBagConstraints类型的对象n对于每一个组件,填充GridBagConstraints对象n约束ngridx,gridy,gridwidth,gridheight参数gridx,gridy值定义了添加组件左上角的行和列位置。而gridwidth,gridheight值指定了组件占用的行数和列数n增量字段(weight
3、x,weighty)设置单元格增量的最大值nfill,anchor参数fill有个有效值:GridBagConstraints.NONE, GridBagConstraints.HORIZONTAL, GridBagConstraints.VERTICAL, GridBagConstraints.BOTHanchor取值:GridBagConstraints.CENTER, GridBagConstraints.NORTH, GridBagConstraints.NORTHEAST, GridBagConstraints.EAST等等n填塞(Insets,ipadx,ipady)Insets用
4、来设置组件周围的空间量,这称作外部填塞,它有left,top,right,bottom个值ipadx,ipady的设置称作内部填塞。这两个值被加到组件的最小宽度和最小高度上n例子:package src;import java.awt.*;import javax.swing.*;public class GridBagDemo extends JFrameJLabel face,size;JComboBox comboface,combosize;JCheckBox bold,italic;JTextArea text;public GridBagDemo()Container conten
5、tPane = getContentPane();GridBagLayout gridbag = new GridBagLayout();GridBagConstraints c = new GridBagConstraints();contentPane.setLayout(gridbag);face = new JLabel(Face:);c.gridx = 0;c.gridy = 0;gridbag.setConstraints(face,c);contentPane.add(face);comboface = new JComboBox();comboface.addItem(Seri
6、f);c.gridx = 1;c.gridy = 0;c.ipadx = 60;c.fill = GridBagConstraints.BOTH;gridbag.setConstraints(comboface,c);contentPane.add(comboface);size = new JLabel(Size:);c.ipadx = 0;c.ipady = 0;c.gridx = 0;c.gridy = 1;gridbag.setConstraints(size,c);contentPane.add(size);combosize = new JComboBox();combosize.
7、addItem(18);c.ipadx = 60;c.gridx = 1;c.gridy = 1;c.fill = GridBagConstraints.BOTH;gridbag.setConstraints(combosize,c);contentPane.add(combosize);bold = new JCheckBox(Bold:);c.ipady = 30;c.gridx = 1;c.gridy = 2;c.gridheight = 1;c.anchor = GridBagConstraints.CENTER;gridbag.setConstraints(bold,c);conte
8、ntPane.add(bold);italic = new JCheckBox(Italic);c.gridx = 1;c.gridy = 3;gridbag.setConstraints(italic,c);contentPane.add(italic);text = new JTextArea();text.setLineWrap(true);JScrollPane scroll = new JScrollPane(text);c.ipadx = 0;c.gridx = 2;c.gridy = 0;c.gridheight = 4;c.gridwidth = 1;gridbag.setCo
9、nstraints(scroll,c);contentPane.add(scroll);pack();setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public static void main(String args)new GridBagDemo();弹簧布局nSprintLayout.Constraints getConstraints(Component c)得到给定组件的约束参数:c该布局管理器管理的组件或者容器之一nvoid putConstraint(String endSide,Component
10、 end,Sprint s,String startSide,Component Start)nvoid putConstraint(String endSide,Component end,int pad,String startSide,Componet start)设置end组件给定的边为一个弹簧,该弹簧是这样得到的:通过添加弹簧s,或者有pad尺寸的支柱到一个弹簧,此弹簧从end容器的左边到达start容器的给定边参数:endSide,startSideWEST,EAST,NORTH,SOUTH end添加弹簧的组件 s添加的弹簧 pad被加支柱的尺寸 start其他被加弹簧到达的组件
11、nSpring getX()nSpring getY()返回从窗口开始处到达约束组件西边或者北边结束处的弹簧nSpring getWidth()nSpring getHeight()返回跨越约束组件宽度或者高度的弹簧nSpring getConstraint(String side)nvoid setConstraint(String edge,Spring s)得到或者设置从容器开始处到达约束组件给定边界的弹簧参数:sideSprinLayout类的 WEST,EAST,NORTH,SOUTH常量之一 s被设置的弹簧nstatic Spring constant(int preferred)
12、用给定的首选值构造一个支柱.最小和最大值被设置为首选值nstatic Spring constant(int minimum,int preferred,int maximum)用给定的最小值,首选值和最大值构造一个弹簧nstatic Spring sum(Spring s,Spring t)返回弹簧s和t的和nstatic Spring max(Spring s,Spring t)返回弹簧s和t的最大值nstatic Spring minus(Spring s)返回弹簧s的相反值nint getMinimumValue()nint getPreferredvalue()nint getMax
13、imumvalue()返回弹簧的最小值,首选值和最大值nint getValue()nvoid setValue(int newValue)得到或者设置弹簧的值例子: (SpringDemo.java)复杂的布局管理n箱式布局n箱式布局要比网格布局灵活得多,它可以布置单行或单列组件。有一个容器Box类它的默认布局管理器是BoxLayout。nstatic Box CreateHorizontalBox()nstatic Box CreateVerticalBox()创建一个水平或垂直排列其内容的容器nstatic Component createHorizontalGlue()nstatic
14、Component createVerticalGlue()nstatic Component createGlue()创建一个能够在水平、垂直或者两个方向上无限延伸的不可见组件nstatic Component createHorizontalStrut(int width)nstatic Component createVerticalStrut(int height)nstatic Component createRigidArea(Dimension d)创建一个具有固定宽度、固定高度或者固定宽度和高度不可见组件nfloat getAlignmentX()nfloat getAlign
15、mentY()返回x或y轴上的对齐方式,该值介于到之间。代表对齐到顶部或左边;0.5表示中间;代表对齐到底部或右边n例子:package src;import java.awt.*;import javax.swing.*;public class BoxLayoutDemo extends JFrameJLabel lab_name,lab_password;JTextField text_name,text_password;JButton btn_Ok,btn_Cancel;Box box_name,box_pass,box_button,vbox;public BoxLayoutDem
16、o()lab_name = new JLabel(Name);lab_password = new JLabel(Password);text_name = new JTextField(10);text_name.setMaximumSize(text_name.getPreferredSize();text_password = new JTextField(10);text_password.setMaximumSize(text_password.getPreferredSize();btn_Ok = new JButton(OK);btn_Cancel = new JButton(C
17、ancel);box_name = Box.createHorizontalBox();box_name.add(lab_name);box_name.add(Box.createHorizontalStrut(10);box_name.add(text_name);box_pass = Box.createHorizontalBox();box_pass.add(lab_password);box_pass.add(Box.createHorizontalStrut(10);box_pass.add(text_password);box_button = Box.createHorizont
18、alBox();box_button.add(btn_Ok);box_button.add(Box.createGlue();box_button.add(btn_Cancel);vbox = Box.createVerticalBox();vbox.add(box_name);vbox.add(box_pass);vbox.add(Box.createGlue();vbox.add(box_button);Container contentPane = getContentPane();contentPane.add(vbox,BorderLayout.CENTER);pack();setS
19、ize(200,200);setVisible(true);public static void main(String args)new BoxLayoutDemo();其它布局n不使用布局管理器n不使用布局管理器可以把一个组件放在一个固定位置上(绝对定位)n绝对定位的步骤:n把布局管理器设为nulln把组件添加到容器中n指定需要的位置和大小nvoid setBounds(int x,int y,int width,int height)移动并缩放一个组件参数:x,y组件左上角的新位置 width,height组件的新尺寸n例子:package src;import java.awt.*;i
20、mport javax.swing.*;public class LayoutnullDemo extends JFrameJButton first,second,third,fourth;public LayoutnullDemo()Container contentPane = getContentPane();contentPane.setLayout(null);first = new JButton(First);first.setBounds(10,10,70,30);second = new JButton(Second);second.setBounds(120,10,90,
21、30);third = new JButton(Third);third.setBounds(20,50,70,30);fourth = new JButton(Fourth);fourth.setBounds(100,70,90,30);contentPane.add(first);contentPane.add(second);contentPane.add(third);contentPane.add(fourth);pack();setSize(250,150);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE
22、);public static void main(String args)new LayoutnullDemo();对话框n选项对话框nSwing提供一些简单对话框用于收集用户的一些简单信息.nJOptionPane有四个静态方法来显示这些简单对话框:nshowMessageDialog:显示一条消息并等待用户点击OKnshowconfirmDialog:显示一条消息并得到确认nshowOptionDialog:显示一条消息并得到用户在一组选项中的选择nshowImputDialog:先是一条消息并得到用户的一行输入n例子:package src;import javax.swing.*;i
23、mport java.awt.event.*;public class OptionDialogDemoJFrame frame;public OptionDialogDemo()frame = new JFrame();final JButton button = new JButton(Joption);button.addActionListener(new ActionListener()public void actionPerformed(ActionEvent event)JOptionPane.showMessageDialog(frame,This is OptionPane
24、,JOptionPane,JOptionPane.WARNING_MESSAGE););frame.getContentPane().add(button);frame.pack();frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public static void main(String args)new OptionDialogDemo();n创建对话框n在对话框的构造器中,调用基类JDialog的构造器n添加该对话框的用户界面组件n添加事件处理器n设置对话框的大小例子:(Dialog
25、Demo.java)文件对话框nJFileChooser()创建一个可用于多个框架的文件选择对话框nvoid setCurrentDirectory(File dir)为文件对话框设置初始目录nvoid getSelectedFile()nvoid getSelectedFiles()得到用户选择的一个或多个文件(如果用户不做任何选择,则返回null)nstring getName(File f)返回文件f的文件名,或者nulln例子:package src;import java.awt.*;import java.awt.event.*;import javax.swing.*;publi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 图形 用户界面 设计 PPT 课件
限制150内