资源预览内容
第1页 / 共50页
第2页 / 共50页
第3页 / 共50页
第4页 / 共50页
第5页 / 共50页
第6页 / 共50页
第7页 / 共50页
第8页 / 共50页
第9页 / 共50页
第10页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
安徽大学15.图形用户界面设计主讲:刘政怡AWTvAbstract Window ToolKit(抽象窗口工具集) v重量组件:把与显示组件有关的许多工作和处理 组件事件的工作交给相应的本地组件(同位体)。 v不同平台也有着不同的BUG,结果是: vwrite once, debug everywhere! Java技术及其应用Swingv功能更为强大的设计GUI界面的类 v大部分组件为轻量组件:把与显示组件有关的许 多工作和处理组件事件的工作交给相应的Java运 行环境中的UI代表。 v组件的外观不依赖平台,在不同平台上外观相同 ,性能更优。 vSWING并未完全替换掉了AWT,而是建构于 AWT之上,并重用了AWT的部分组件,比如其事 件模型。 Java技术及其应用Swing和AWT包中部分类关系Java技术及其应用ObjectComponentJFrameContainerWindowFrameDialogJDialogJTextFieldJComboBoxJLabelJListJMenuBarJOptionPaneJPanelJScrollBarAbstractButtonJToggleButtonJMenuItemJButtonJCheckBoxJRadioButtonJComponentJMenuJWindowJTableJTree.组件 v凡是能够以图形化方式显示在屏幕上并能与用户 进行交互的对象均为组件。 vJava把Component类的子类或间接子类创建的对 象称为一个组件。Java技术及其应用容器v是一些实际上含有多组控件或其他容器的屏幕窗 口。 vJava把Container的子类或间接子类创建的对象 称为一个容器。 v容器本身也是一个组件,因此可以把一个容器添 加到另一个容器中实现容器的嵌套。Java技术及其应用v底层容器:JFrame , JApplet , JDialog , JWindow(重量组件,与操作系统交互)v中间容器:JPanel , JScrollPane , JSplitPane , JLayeredPane.(轻量组件,放入底层容器中)v基本组件:实现人机交互的组件,如 JCheckBox ,JButton, JList , JMenu ,JLabel, JTextField等Swing组件分类底层容器JFrame vJFrame() 创建一个无标题的窗口。 vJFrame(String s) 创建标题为s的窗口。 vpublic void setVisible(boolean b) 设置窗口是 否可见,窗口默认是不可见的。 vpublic void setTitle(String s)设置标题 vpublic void setBounds(int a,int b,int width,int height) 设置出现在屏幕上时的初始位置为 (a,b),即距屏幕左面a个像素、距屏幕上方b个像 素;窗口的宽是width,高是height vpublic void setSize(int width,int height) 设置窗口的大小,窗口在屏幕出现是默认位置是 (0,0)。Java技术及其应用底层容器JFrame vpublic void setDefaultCloseOperation(int operation) 该方法用来设置单击窗体右上角的关 闭图标后,程序会做出怎样的处理。 EXIT_ON_CLOSE结束窗口所在的应用程序 DISPOSE_ON_CLOSE隐藏当前窗口,并释放窗 体占有的其他资源 HIDE_ON_CLOSE 隐藏当前窗口 DO_NOTHING_ONCLOSE什么也不做Java技术及其应用import javax.swing.*; import static javax.swing.JFrame.*; /引入JFrame的静态常量 public class Example15_1 public static void main(String args) JFrame window1=new JFrame(“撤销窗口“);JFrame window2=new JFrame(“退出程序“);window1.setBounds(60,100,188,108);window2.setBounds(260,100,188,108);window1.setVisible(true);window1.setDefaultCloseOperation(DISPOSE_ON_CLOSE);window2.setVisible(true);window2.setDefaultCloseOperation(EXIT_ON_CLOSE); Java技术及其应用Java技术及其应用练习v写一个JFrame,标题为“我的窗口” v右上角关闭按钮,退出应用程序。Java技术及其应用import javax.swing.*; import static javax.swing.JFrame.*; public class MyJFrame public static void main(String args) JFrame myJFrame=new JFrame(“我的窗口“); myJFrame.setBounds(100,100,300,150);myJFrame.setDefaultCloseOperation(EXIT_ON_CLOSE); myJFrame.setVisible(true); Java技术及其应用import javax.swing.*; import static javax.swing.JFrame.*; class MyJFrame extends JFrame MyJFrame(String s,int x,int y,int w,int h) setTitle(s); setBounds(x,y,w,h); setDefaultCloseOperation(EXIT_ON_CLOSE); public class Test public static void main(String args) MyJFrame myJFrame=new MyJFrame(“我的窗口 “,100,100,300,150); myJFrame.setVisible(true); 组件外观控制v颜色 setBackground(); v比较 frame.getContentPane().setBackground(Color. red); frame. setBackground(Color.red); vimport java.awt.*;JFrameJava技术及其应用中间容器v 面板JPanel v 盒子Box v 滚动窗格JScrollPane把组件放到一个滚动窗格中 ,通过滚动条操作组件。JScrollPane scroll=new JScrollPane(new JTextArea(); v 拆分窗格JSplitPaneJSplitPane(int a,Component b,Component c)HORIZONTAL_SPLIT、 VERTICAL_SPLIT v 分层窗格JLayeredPaneadd(JComponent com, int layer);DEFAULT_LAYER、PALETTE_LAYER、MODAL_LAYER 、POPUP_LAYER、DRAG_LAYERJava技术及其应用常用组件v文本框JTextField v文本区JTextArea v按钮JButton v标签JLabel v选择框JCheckBox v单选按钮JRadioButton v下拉列表JComboBox v密码框JPasswordFieldJava技术及其应用import javax.swing.*; import static javax.swing.JFrame.*; public class MyJFrame public static void main(String args) JFrame frame=new JFrame(“我的窗口“);frame.setBounds(100,100,300,300);JButton button=new JButton(“按钮“);frame.getContentPane().add(button);/frame.add(button);frame.setDefaultCloseOperation(EXIT_ON_CLOSE);frame.setVisible(true); Java技术及其应用JFramevJDK1.5 add() remove() setLayout()三个函数,可以由frame直接调用,等价于 frame.getContentPane()调用。 v例如:frame.add();等价于frame.getContentPane().add();Java技术及其应用布局管理器LayoutManagerv容器可以使用方法: vsetLayout(布局对象);v设置自己的布局。 FlowLayout BorderLayout GridLayout CardLayout BoxLayout-Swing提供 nullFlowLayoutvJPanel默认布局:组件按照加入的先后顺序从左 到右排列,一行排满之后再转到下一行继续,每 一行居中。 vFlowLayout flow=new FlowLayout(); vframe.setLayout(flow);Java技术及其应用BorderLayoutvWindow(子类JFrame,JDialog)默认布局 vBorderLayout border=new BorderLayout(); vframe.setLayout(border); v f.add( new JButton(“北“) ,BorderLayout.NORTH);Java技术及其应用CardLayoutvCardLayout布局管理器能够帮助用户处理两个以 至更多的成员共享同一显示空间。 v最先放入的,在最上面,其他的层叠在下面。 vCardLayout card=new CardLayout(); vcon.setLayout(card); vadd(String s,Component b) vcard.show(con,s); vcard.first(con) vcard.last(con) vcard.next(con) vcard.previous(con)GridLayoutvGridLayout grid=new GridLayout(3,2); vcon.setLayout(grid);Java技术及其应用BoxLayoutvjavax.swing包中提供的 v盒子容器的默认布局 v只能是一行或一列 vBoxLayout boxLayout=new BoxLayout(Container con,int axis); vaxis取值 BoxLayout.X_AXIS,BoxLayout.Y_AXIS v表示行型盒式布局,列型盒式布局。Java技术及其应用vBox box=Box.createHorizontalBox(); vframe.add(box); vbox.add(按钮);Java技术及其应用v box.add(Box.createHorizontalStrut(8);Java技术及其应用BoxLayoutJava技术及其应用nullvp.setLayout(null); vc.setBounds(int a,int b,int width,int heig
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号