JavaSwing界面设计(所有控件及示例).ppt

上传人:w****2 文档编号:16066557 上传时间:2020-09-17 格式:PPT 页数:133 大小:1.75MB
收藏 版权申诉 举报 下载
JavaSwing界面设计(所有控件及示例).ppt_第1页
第1页 / 共133页
JavaSwing界面设计(所有控件及示例).ppt_第2页
第2页 / 共133页
JavaSwing界面设计(所有控件及示例).ppt_第3页
第3页 / 共133页
资源描述:

《JavaSwing界面设计(所有控件及示例).ppt》由会员分享,可在线阅读,更多相关《JavaSwing界面设计(所有控件及示例).ppt(133页珍藏版)》请在装配图网上搜索。

1、张蕾,界面设计,概述 用户界面 组件介绍 布局管理 事件处理 菜单和表格,主要内容,本章基本要求,了解AWT和Swing 熟悉4个顶层容器 掌握JFrame 熟悉常用的中间容器 会对组件进行布局 熟悉常用基本组件的创建和操作 会设置组件的颜色和字体 会处理组件上发生的事件 会创建菜单和表格,用户界面的类型 字符用户界面(CUI):例如,MS-DOS 图形用户界面(GUI):例如,Microsoft Windows GUI的组件,用户界面概述,组件继承它的父容器的性质,AWT AWT(Abstract Window Toolkit)是在Swing出现之前用来设计界面的工具包 用awt包中的类创建

2、的用户界面在不同的操作平台上有不同的表现。使用不灵活 import java.awt.*; Swing Swing是对AWT的扩展,它是Java 2中的一个标准包 组件都以J开头,例如:JFrame、JButton等。swing界面在不同的平台上外观完全一样,真正做到平台独立 import javax.swing.*;,基本概述,界面设计中常用组件类的体系结构,用户界面,一个顶层容器(即主窗口) 顶层容器包含若干个中间容器 每个中间容器包含若干个基本组件 按照合理的布局方式将它们组织在一起 基本组件可响应发生在其上的事件,Java程序界面的构成,容器 容器是用来容纳和管理一组界面元素的对象。基

3、本组件必须被安排在某个容器中,否则就无法使用。,有边框容器,无边框容器,顶层容器,顶层容器,JFrame , JApplet , JDialog , JWindow 作用:创建初始界面,为其他组件提供一个容器,以构建满足用户需求的操作界面 JFrame用来创建application,最常用的 JApplet用来创建applet JDialog用来创建对话框,常用 JWindow不常用,JPanel , JScrollPane , JSplitPane , JTabbedPane、JInternalFrame、Box 这些容器提供将有关组件按照某种布局组合在一起,然后放入中间容器或顶层容器的功能

4、 JPanel提供一个面板 JScrollPane是具有滚动条的窗格 JSplitPane是具有拆分功能的窗格 JTabbedPane是带有若干标签的分类窗格 JInternalFrame用于创建内嵌于JFrame中的内部框架 Box提供创建横向/纵向盒子容器的功能,中间容器,JLabel JButton、JCheckBox、JRadioButton JList、JComboBox JTextField、JPasswordField、JTextArea JToolBar、JToolTip、JProgressBar JSlider、JSpinner JFileChooser、JColorChoo

5、ser JMenuBar、JMenu、JMenuItem、JCheckBoxMenuItem、JRadioButtonMenuItem、JPopupMenu JTable JTree JOptionPane、JSeparator,基本组件,类 JFrame 是java.awt.Frame的子类 在Swing的组件中, JFrame 并不全是由Java编写的 是一种与平台关系比较密切的组件(Heavyweight component) java.lang.Object | +-java.awt.Component | +-java.awt.Container | +-java.awt.Windo

6、w | +-java.awt.Frame | +-javax.swing.JFrame,创建用户主窗口-JFrame,构造方法 JFrame() 创建无标题窗口。 JFrame(String s) 创建标题名字是字符串s的窗口。 例如:JFrame f = new JFrame(“Hello”); 常用方法 setTitle(String title) 设置JFrame标题文本 get/ setSize():获取/设置JFrame的大小。 add(Object a):将组件添加到JFrame中。 dispose()关闭JFrame并回收用于创建窗口的任何资源。 setVisible(boole

7、an b)设置JFrame的可见性。 setLocation(x,y) 设置JFrame在屏幕的位置,创建用户主窗口-JFrame,常用方法 void setExtendedState(int);/设置扩展的状态,取值: NORMAL ICONIFIED MAXIMIZED_HORIZ MAXIMIZED_VERT MAXIMIZED_BOTH /最大化 void setDefaultCloseOperation(int);/设置默认的关闭时的操作,取值: DO_NOTHING_ON_CLOSE HIDE_ON_CLOSE DISPOSE_ON_CLOSE EXIT_ON_CLOSE /关闭,

8、创建用户主窗口-JFrame,import javax.swing.*; public class FirstJFrame public static void main(String args) JFrame f = new JFrame(); f.setTitle(My First JFrame); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(300, 300); f.setVisible(true); ,示例:直接使用JFrame创建,import javax.swing.*; public class Seco

9、ndJFrame extends JFrame public SecondJFrame() super(“My Second JFrame”); setDefaultCloseOperation(EXIT_ON_CLOSE); setExtendedState(MAXIMIZED_BOTH); setVisible(true); public static void main(String args) SecondJFrame f = new SecondJFrame(); ,示例:扩展JFrame创建,相关类 图标类:javax.swing.ImageIcon 图像类:java.awt.Im

10、age 创建图标和图像对象 ImageIcon ii = new ImageIcon(“x.gif”); Image image = ii.getImage(); 设置setIconImage(image);,设置JFrame的图标,由JFrame创建初始的用户界面 由JPanel、JScrollPane、JTabbedPane、JSplitPane、JInternalFrame、Box等创建中间容器 由基本组件类创建有关的组件 将基本组件按照某种布局添加到中间容器中,根据需要可能会用到容器的嵌套 将中间容器按照某种布局添加到顶层容器中,形成满足用户需求的操作界面,界面的基本组织方式,Cont

11、ainer con = getContentPane(); JPanel panel = new JPanel(); JButton butt = new JButton(Press Me); panel.add(butt); con.add(panel);,获得JFrame的容器并添加组件,学生基本信息录入界面的设计 设计一个用户界面,用于输入学生的下列信息: 姓名JTextField密码JPasswordField 性别JRadioButton党否JCheckBox 年龄JSpinner颜色 JColorChooser 加分JSlider系别JComboBox 选课JList确认JButt

12、on 保存JFileChooser结果JTextArea 要求输入完毕按“确认”将该学生的信息记录到“结果”中;按“保存”将结果保存到一个指定的文件中;基本信息与结果界面上下分布在一个JSplitPane中;屏幕下方显示当前时间,示例:学生信息管理系统,步骤一:由JFrame创建初始的用户界面,获得JFrame的容器,添加中间容器JPanel,示例:学生信息管理系统,JFrame f=new JFrame(); f.setTitle(学生信息管理系统); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setExtendedState(M

13、AXIMIZED_BOTH); /f.setSize(800,600); /f.setLocation(200,200); Container con=f.getContentPane(); JPanel pan=new JPanel(); con.add(pan); f.setVisible(true);,基本组件,标签 标签(JLabel)是最简单的组件,用于显示单行静态文本。用户只能查看其内容而不能对其进行修改。 标签类没有事件响应。 构造方法 JLabel label1 = new JLabel(“姓名”); ImageIcon ii = new ImageIcon(“java.gif

14、”);JLabel label2 = new JLabel(ii); JLabel label3 = new JLabel(“姓名”,ii,JLabel.CENTER); 标签内容一般不需要改变,但也可以使用setText和setIcon方法进行改变 例如当使用同一标签显示不同的图片时,就可使用setIcon方法实现,基本组件标签,步骤二:添加标签(要录入的基本信息的名称),示例:学生信息管理系统,JFrame f=new JFrame(); Container con=f.getContentPane(); Jpanel pan=new JPanel(); JLabel l_xm=new J

15、Label(姓名); pan.add(l_xm); JLabel l_xb=new JLabel(性别); pan.add(l_xb); con.add(pan); f.setVisible(true);,按钮是常用的功能组件,表示按钮的类为JButton。 构造方法 JButton button1 = new JButton(“姓名”); ImageIcon ii = new ImageIcon(“java.gif”); JButton button2 = new JButton(ii); JButton button3 = new JButton(“姓名”,ii); 常用方法 void s

16、etActionCommand(String); void addActionListener(ActionListener);,基本组件按钮,步骤二:添加按钮(确认和保存按钮),示例:学生信息管理系统,JFrame f=new JFrame(); Container con=f.getContentPane(); JPanel pan=new JPanel(); JLabel l_xml_xm=new JLabel(姓名); pan.add(l_xm); JButton b_sub=new JButton(确认); pan.add(b_sub); JButton b_save=new JBu

17、tton(保存); pan.add(b_save); con.add(pan); f.setVisible(true);,构造方法 JTextField tf1 = new JTextField(10); JTextField tf2 = new TextField(“aa”); JTextField tf3 = new JTextField(“aa”,8);,基本组件文本框(JTextField),其它方法 public String getText() public String getSelectedText() public void setText(String s) public

18、void setEchoChar(char c) public void setEditable(boolean b),步骤二:添加文本框(录入姓名信息),示例:学生信息管理系统,JFrame f=new JFrame(); Container con=f.getContentPane(); JPanel pan=new JPanel(); JLabel l_xm=new JLabel(姓名); pan.add(l_xm); JTextField tf_name=new JTextField(20); pan.add(tf_name); con.add(pan); f.setVisible(t

19、rue);,构造方法 JTextArea ta1 = new JTextArea(5,5); JTextArea ta2 = new JTextArea(“ab”,8,7);,基本组件文本区(JTextArea),其它方法 public getCaretPosition() public void insert(String str,int pos) public String getSelectedText() public int getSelectionStart() public int getSelectionEnd() public void replaceRange(String

20、 str,int start,int end),应用中经常将文本区对象放入一个滚动窗格中,以使用滚动条功能,方法如下: JTextArea ta = new JTextArea(10,10); JScrollPane sp = new JScrollPane(ta);,基本组件文本区(JTextArea),步骤二:添加文本域(显示录入结果信息),示例:学生信息管理系统,JFrame f=new JFrame(); Container con=f.getContentPane(); Jpanel pan=new JPanel(); Jlabel l_jg=new JLabel(录入结果); JT

21、extArea result=new JTextArea(10,30); JScrollPane sp=new JScrollPane(result); pan.add(sp); pan.add(l_jg); con.add(pan); f.setVisible(true);,基本组件单选按钮( JRadioButton ),构造方法(与JButton类似) JRadioButton rbutt1 = new JRadioButton(“男”, true); ImageIcon ii = new ImageIcon(“java.gif”);JRadioButton rbutt2 = new J

22、RadioButton(ii); JRadioButton rbutt3 = new JRadioButton(“女”,ii,false); 常用方法 void addActionListener(ActionListener); void addItemListener(ItemListener); boolean isSelected(); void setSelected(boolean);,使用单选按钮时经常用到ButtonGroup类,如下 创建按钮组对象ButtonGroup bg = new ButtonGroup(); 创建若干单选按钮对象JRadioButton b1 = n

23、ew JRadioButton(“x”);JRadioButton b2 = new JRadioButton(“y”); 将各单选按钮添加到按钮组中bg.add(b1);bg.add(b2); 将单选按钮添加到其他容器中容器对象.add(b1);容器对象.add(b2); 注:按钮组维持只有一个单选按钮处于选择状态,基本组件单选按钮( JRadioButton ),步骤二:添加单选按钮(选择性别),示例:学生信息管理系统,JFrame f=new JFrame(); Container con=f.getContentPane(); Jpanel pan=new JPanel(); JRad

24、ioButton male = new JRadioButton(男, true); JRadioButton female = new JRadioButton(女); ButtonGroup group=new ButtonGroup(); group.add(male); group.add(female); pan.add(male); pan.add(female); con.add(pan); f.setVisible(true);,构造方法 JCheckbox()创建一个没有标签的复选框。 JCheckbox( Icon icon)创建一个有图标的复选框。 JCheckbox(I

25、con icon ,boolean sele ) 创建一个有图标icon的复选框,初始状态为sels JCheckbox( String s)创建一个有标签的复选框。 JCheckbox( String s,boolean b)创建一个有标签的复选框,参数b设置初始状态 JCheckbox(String str ,Icon icon ) 创建一个有str文字及图标icon的复选框 JCheckbox(String str,Icon icon,boolean sele) 创建一个有str文字及图标icon的复选框,初始状态为sels,基本组件复选框(JCheckbox),常用方法 isSelec

26、ted():返回复选按钮的状态,返回类型是boolean。如果返回true,则表示该按钮处于选中状态;否则处于未选中状态。 setSelected (Boolean state):设置复选按钮的状态。,基本组件复选框(JCheckbox),步骤二:添加复选框(选择爱好,多项选择),示例:学生信息管理系统,JFrame f=new JFrame(); Container con=f.getContentPane(); Jpanel pan=new JPanel(); Jlabel l_ah=new JLabel(爱好); JCheckBox hobby=new JCheckBox(音乐),new

27、 JCheckBox(足球),new JCheckBox(绘画); pan.add(l_ah); pan.add(hobby0); pan.add(hobby1); pan.add(hobby2); con.add(pan); f.setVisible(true);,构造方法 String ss = “red”,”green”,”blue”;JList list1 = new JList(ss); JList list2 = new JList(Vector); 其它常用方法 void addListSelectionListener(); void setVisibleRowCount(in

28、t); void setSelectionMode(int);/取值如下(在ListSelectionModel中定义)SINGLE_SELECTIONSINGLE_INTERVAL_SELECTION MULTIPLE_INTERVAL_SELECTION(默认) int getSelectedIndex(); int getSelectedIndices(); Object getSelectedValue(); Object getSelectedValues();,基本组件列表框(JList),步骤二:添加列表框(选择选修课程),示例:学生信息管理系统,JFrame f=new JFr

29、ame(); Container con=f.getContentPane(); Jpanel pan=new JPanel(); JLabel l_xk=new JLabel(选课); String coursesNames = 数据结构“,操作系统“,网络原理, Java程序设计“,分布式系统开发技术, 计算机导论“,密码学, 计算机组成原理“,编译原理, 图形学”; course = new JList(coursesNames); pan.add(l_xk); pan.add(course); con.add(pan); f.setVisible(true);,构造方法 String

30、ss = “red”,”green”,”blue”;JComboBox cb1 = new JComboBox(ss); JComboBox cb2 = new JComboBox(Vector); 常用方法 addItem() 添加一个项目到 JComboBox. get/setSelectedIndex()获取/设置 JComboBox 中选中项目的索引 get/setSelectedItem()获取/设置选中的对象。 removeAllItems()从 JComboBox 删除所有对象。 removeItem()从 JComboBox 删除特定对象。 setEditable把一个组合框设

31、置为可编辑的。 注意编辑只会影响当前项,它不会改变列表的内容。,基本组件下拉列表( JComboBox ),步骤二:添加下拉列表(选择院系),示例:学生信息管理系统,JFrame f=new JFrame(); Container con=f.getContentPane(); Jpanel pan=new JPanel(); JLabel l_yx=new JLabel(院系); pan.add(l_yx); String departmentNames = 计算机科学与技术系, 电子信息与技术系, 计算机工程系”; JComboBox department = new JComboBox(

32、departmentNames); department.setEditable(false); pan.add(department); con.add(pan); f.setVisible(true);,构造方法(类似于JTextField) 常用方法 void addActionListener(ActionListener); char getPassword(); void setEchoChar(char); char getEchoChar();,基本组件密码域( JPasswordField ),步骤二:添加密码(密码输入显示“*”),示例:学生信息管理系统,JFrame f=

33、new JFrame(); Container con=f.getContentPane(); Jpanel pan=new JPanel(); JLabel l_ma=new JLabel(密码); pan.add(l_ma); password=new JPasswordField(20); password.setEchoChar(*); pan.add(password); con.add(pan); f.setVisible(true);,构造方法 JSlider slider = new JSlider(JSlider.HORIZONTAL,0,100,10); 常用方法 void

34、 addChangeListener(ChangeListener); void setValue(int); int getValue(); void setMajorTickSpacing(int); void setMinorTickSpacing(int); void setPaintTicks(boolean); /false void setPaintLabels(boolean); /false void setPaintTrack(boolean); /true void setSnapToTicks(boolean); /false,基本组件滑动条( JSlider ),步骤

35、二:添加加分选项(加分的选项采用滑动条实现),示例:学生信息管理系统,JFrame f=new JFrame(); Container con=f.getContentPane(); Jpanel pan=new JPanel(); JLabel l_jf=new JLabel(加分); pan.add(l_jf); addition = new JSlider(JSlider.HORIZONTAL, 0, 100, 50); addition.setMajorTickSpacing(10); addition.setMinorTickSpacing(5); addition.setPaint

36、Ticks(true); addition.setPaintLabels(true); addition.setSnapToTicks(true); pan.add(addition); con.add(pan); f.setVisible(true);,构造方法 JProgressBar(int,int,int); JProgressBar pb = new JProgressBar( JProgressBar. HORIZONTAL, 0,100); 常用方法 void addChangeListener(ChangeListener); void setValue(int); /设置当前

37、值 void setString(String);/设置显示的字符串 void setStringPainted(boolean);/设置是否显示字符串,默认为false void setBorderPainted(boolean);/设置是否显示边框,默认为true,基本组件进度条( JProgressBar ),步骤二:添加进度条,示例:学生信息管理系统,JFrame f=new JFrame(); Container con=f.getContentPane(); Jpanel pan=new JPanel(); JProgressBar progbar = new JProgressB

38、ar(JProgressBar.HORIZONTAL,0,100); progbar.setStringPainted(true); con.add(pan); f.setVisible(true);,构造方法 JFileChooser fc1,fc2; /声明两个对象变量 fc1 = new JFileChooser();/使用系统默认目录 fc2 = new JFileChooser(“d:java”); 显示方法 int showOpenDialog(Component); int showSaveDialog(Component);/分别用于显示标准的打开和保存对话框/参数Compon

39、ent指定对话框依附的父组件/返回值:APPROVE_OPTION选择了确认 CANCEL_OPTION选择了取消 ERROR_OPTION出现了错误,基本组件文件选择器( JFileChooser ),其他常用方法 void setCurrentDirectory(File); void setMultiSelectionEnabled(boolean); File getSelectedFile(); File getSelectedFiles(); File getCurrentDirectory(); String getName(File);/取得文件/目录名称,不含路径,可用Fil

40、e类的getAbsolutePath()方法获取完整路径 void setFileSelectionMode(int);/FILES_ONLY 只能选择文件(默认) DIRECTORIES_ONLY 只能选择目录 FILES_AND_DIRECTORIES 文件和目录都可选 void setFileFilter(FileFilter);,显示方法 使用JColorChooser提供的类方法showDialog static Color showDialog( Component, /父组件 String, /标题 Color /初始颜色值 );/返回值:新选择的颜色值Color 示例 Colo

41、r c = JColorChooser.showDialog (this,”请选择颜色”,Color.red); /得到颜色对象c后,即可在需要的地方使用,基本组件颜色选择器(JColorChooser),Confirm对话框 int showConfirmDialog(Component,Object);/显示含有 Yes、No、Cancel 按钮的确认框/参数:父组件,显示信息/返回值: YES_OPTION是 NO_OPTION否 CANCEL_OPTION撤销 OK_OPTION确定 CLOSED_OPTION关闭 还有其他形式的类方法,请参阅帮助文档,基本组件对话框( JOption

42、Pane),Input对话框 String showInputDialog(Component,Object);/参数:父组件,显示信息/返回值: 选择确认后返回 输入的字符串 选择取消或关闭后返回 null 还有其他形式的类方法,请参阅帮助文档,基本组件对话框( JOptionPane),Message对话框 void showMessageDialog(Component,Object);/参数:父组件,显示信息/没有返回值,只是用来显示一些信息 还有其他形式的类方法,请参阅帮助文档,基本组件对话框( JOptionPane),Option对话框 int showOptionDialog(

43、 Component, /父组件 Object, /显示信息 String, /标题 int, /标准选项按钮组类型 int, /标准信息图标类型 Icon, /自定义信息图标 Object, /自定义选项按钮组 Object /自定义默认的选项按钮 );/该方法提供了丰富且复杂的表达形式,请参阅帮助文档 注:使用这些标准对话框,可以方便实现某些功能,基本组件对话框( JOptionPane),微调器(JSpinner),构造方法 JSpinner spinner = new JSpinner(); 常用方法 void addChangeListener(ChangeListener); vo

44、id setValue(Object); Object getValue(); Object getNextValue(); Object getPreviousValue();,示例:学生信息管理系统,JFrame f=new JFrame(); Container con=f.getContentPane(); Jpanel pan=new JPanel(); JLabel lb=new JLabel(年龄); JSpinner jsp=new JSpinner(); jsp.setValue(new Integer(20); pan.add(lb); pan.add(jsp); con.

45、add(pan); f.setVisible(true);,步骤二:添加年龄微调器,计时器(Timer),构造方法 Timer(int, ActionListener);Timer timer = new Timer(1000,this); 常用方法 void start(); void stop(); void restart(); void setDelay(int); void setRepeats(boolean); boolean isRunning();,创建边框(使用BorderFactory类的类方法) Border border1 = /创建一个具有指定颜色和宽度的线边框Bo

46、rderFactory.createLineBorder(Color,int); Border border2 = BorderFactory.createTitledBorder(String); 创建一个新标题边框,采用默认设置,并指定了标题文本。 Border border3 = BorderFactory. createLoweredBevelBorder();创建一个具有凹入斜面边缘的边框 Border border4 = BorderFactory.createRaisedBevelBorder(); 创建一个具有凸出斜面边缘的边框 Border border5 = BorderF

47、actory.createEtchedBevelBorder(); 创建一个具有“浮雕化”外观效果的边框,将组件的当前背景色用于突出显示和阴影显示 使用setBorder(border)方法设置组件的边框,组件的边框设置边框(Border),分隔线(JSeparator) 构造方法 JSeparator separator1 = new JSeparator(); /默认水平 JSeparator separator2 = new JSeparator(JSeparator.HORIZONTAL); JSeparator separator3 = new JSeparator(JSeparat

48、or.VERTICAL); 使用add(JSeparator)方法加到合适的地方,组件的分隔线设置,设置颜色 默认情况下,Java使用RGB颜色描述系统 RGB指红/绿/蓝三基色,取值范围是0,255,一种颜色就是这三种基本颜色的组合 描述颜色的类是java.awt.Color 颜色对象的创建 Color c = new Color(0,255,0); 直接使用Color类中定义的标准颜色常量如 Color.BLACK 或 Color.black 等 Color c1 = Color.BLACK; /Color.black C)颜色选择器JColorChooser直观得到一个Color对象 C

49、olor c3 = JColorChooser.showDialog(Component,String,Color);,组件的颜色设置,有了Color对象后,可使用setForeground(Color);setBackground(Color);设置组件的前景色和背景色,组件的颜色设置,字体类:java.awt.Font 字体对象的创建 Font(String name,int style,int size); /名称,如 “隶书” /风格,取值有 PLAIN, BOLD, ITALIC /大小,如 24,60 Font f = new Font(“宋体”,Font.BOLD,24); 设置

50、组件的字体 setFont(Font);,组件的字体设置,光标类:java.awt.Cursor 光标对象的获取 Cursor.getPredefinedCursor(int); /如:DEFAULT_CURSOR、HAND_CURSOR、WAIT_CURSOR、TEXT_CORSOR、CROSSHAIR_CURSOR 设置组件的光标 setCursor(Cursor.HAND_CURSOR);,组件的光标设置,JPanel 创建对象JPanel p = new JPanel(); 默认布局为FlowLayout,可以改变,如p.setLayout(new GridLayout(2,3); 添

51、加组件p.add(组件对象1);p.add(组件对象2);,中间容器的使用,JScrollPane JTextArea ta = new JTextArea(50,50); JScrollPane sp = new JScrollPane(ta); JSplitPane JTextArea ta = new JTextArea(50,50); JPanel p = new JPanel(); JSplitPane sp = new JSplitPane (JSplitPane. HORIZONTAL_SPLIT,ta,p); /另一种方式 JSplitPane sp = newJSplitPa

52、ne(JSplitPane.VERTICAL_SPLIT,true,ta,p);,中间容器的使用,JTabbedPane JTabbedPane tp = new JTabbedPane(); tp.setTabPlacement(int); tp.addChangeListener(ChangeListener); JPanel p1 = new JPanel(); JPanel p2 = new JPanel(); tp.addTab(“p1”,p1); tp.addTab(“p2”,p2); tp.removeTabAt(0); int n = tp.getTabCount();,中间容

53、器的使用,JInternalFrame 示例:ExampleCh07_Jframe.java中class JInternalFrame_test,中间容器的使用,Java用户图形界面设计步骤 根据需要往界面中添加组件 通过布局管理器对容器中的组件进行组织排列 如何相应用户对组件的操作,即事件处理,小结,布局管理,布局是指组件在容器中的排列方式,主要有: FlowLayout流式布局 BorderLayout边界布局 GridLayout网格布局 CardLayout卡片布局 BoxLayout盒式布局 GridBagLayout网格包布局 null空布局(不使用布局) 注:对于一些复杂的情况,

54、往往需要使用容器的嵌套,各容器可使用不同的布局。当容器的尺寸改变时,布局管理器会自动调整组件的排列,布局的概念,该布局以行为单位依次排列各组件,一行排不下时,另起一行 JPanel的默认布局是FlowLayout 构造方法 FlowLayout(); FlowLayout(int align);/align一般取值有:CENTER、LEFT、RIGHT FlowLayout(int align,int hgap,int vgap);/hgap和vgap指定组件与容器起始边界以及组件间的水平和垂直间距,默认值为5个像素 例如:FlowLayout layout = new FlowLayout(

55、FlowLayout.LEFT, 10, 10);,FlowLayout,创建FlowLayout布局对象FlowLayout l = new FlowLayout(); 创建容器对象JPanel panel = new JPanel(); 设置容器对象的布局或使用默认布局panel.setLayout(l); 向容器中添加组件对象(设组件对象已创建)panel.add(组件对象);,FlowLayout布局的使用,例如,setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20); 缺点:当用户对由FlowLayout布局管理的区域进行缩放时,布局发生变

56、化。,该布局适用于组件个数较少的情况。,FlowLayout布局的使用,按照东、西、南、北、中5个方位排列各组件 顶层容器JFrame、JApplet、JDialog、JWindow的默认布局都是BorderLayout,BorderLayout,构造方法 BorderLayout(); BorderLayout(int hgap,int vgap);/hgap和vgap指定组件间的水平和垂直间距,默认值为0个像素 例如:BorderLayout lay1 = new BorderLayout(); BorderLayout lay2 = new BorderLayout(10, 10);,B

57、orderLayout,创建BorderLayout布局对象BorderLayout l = new BorderLayout(); 创建容器对象JPanel panel = new JPanel(); 设置容器对象的布局或使用默认布局panel.setLayout(l); 向容器中添加组件对象(设组件对象已创建) panel.add(组件对象,方位);/方位的取值为:BorderLayout.EAST 或 “East”BorderLayout.WEST 或 “West”BorderLayout.SOUTH 或 “South”BorderLayout.NORTH 或 “North”Border

58、Layout.CENTER 或 “Center”(默认),BorderLayout布局的使用,缺点:当加入的组件超过5个时,就必须使用容器的嵌套或其它布局。 优点:当容器缩放时,组件相应的位置不变化,但大小改变。,示例: 边界布局示例,BorderLayout布局的使用,按照二维网格以相同大小依次排列各组件 构造方法 GridLayout();/一行、每个组件一列 GridLayout(int rows,int cols);/行列数 GridLayout(rows,cols,int hgap,int vgap);/行行、列列的间距,默认值为0个像素 例如:GridLayout lay1 = n

59、ew GridLayout(3,3); GridLayout lay2 = new GridLayout(5,2,10,10);,GridLayout,创建GridLayout布局对象GridLayout l = new GridLayout(2,2); 创建容器对象JPanel panel = new JPanel(); 设置容器对象的布局或使用默认布局panel.setLayout(l); 向容器中添加组件对象(设组件对象已创建)panel.add(组件对象);,布局的使用,该布局适用于组件个数较多的情况。,优点:组件的相应位置不随区域的缩放而改变,只是组件的大小改变。,GridLayou

60、t,从网格出发来布局组件,但一个组件在横向和纵向上都可以占据多个网格,灵活但比较复杂 使用GridBagConstraints指定组件在布局时的有关约束值,GridBagLayout,属性(11个) gridx,gridy位置 gridwidth,gridheight占据网格数 anchor方位 fill充满方式 javax.awt.GridBagConstraints.HORIZONTAL javax.awt.GridBagConstraints.VERTICAL javax.awt.GridBagConstraints.BOTH 创建对象 GridBagConstraints gbc1,g

61、bc2; gbc1 = new GridBagConstraints(); gbc2 = new GridBagConstraints();,GridBagConstraints,GridBagLayout gbl = new GridBagLayout(); JPanel panel = new JPanel(); panel.setLayout(gbl); GridBagConstraints gbc = new GridBagConstraints(); /设置 JButton button = new JButton(Button); panel.add(button, gbc);,布

62、局的使用,画出组件布局草图 确定每个组件应占据的网格 分别在x和y方向上为网格标上序号 组件的gridx,gridy,gridwidth,gridheight 据填充和对齐要求设置fill和anchor值 须保持默认大小的组件的weightx和weighty值设为0,其余的设为100 看是否需要设置填塞值insets和ipadx、ipady 编写代码 运行程序,观察结果,必要时进行修改,一般布局步骤,该布局以一叠卡片的形式依次排列各组件 构造方法 CardLayout(); CardLayout(int hgap,int vgap);/组件与容器边界间距,默认值为0个像素 例如: CardLa

63、yout layout1 = new CardLayout(); CardLayout layout2 = new CardLayout(10,10);,CardLayout,创建CardLayout布局对象CardLayout l = new CardLayout(); 创建容器对象JPanel panel = new JPanel(); 设置容器对象的布局或使用默认布局panel.setLayout(l); 向容器中添加组件对象(设组件对象已创建)panel.add(组件对象,“名称”); 显示组件 l.show(panel,“名称”); l.first(panel); l.last(pa

64、nel); l.next(panel); l.previous(panel);,布局的使用,以一行或一列的方式依次排列各组件 容器Box的默认布局为且只能为BoxLayout 在实际应用中,常使用Box的有关方法实现布局 javax.swing.Box类的使用 创建Box对象Box b1 = Box.createHorizontalBox(); 创建一个从左到右显示其组件的 BoxBox b2 = Box.createVerticalBox(); 创建一个从上到下显示其组件的 Box 向盒子中添加组件对象(设组件对象已创建)b1.add(组件对象);,BoxLayout,添加Glue: Glu

65、e用来对组件进行挤压,产生左对齐、右对齐或两端对齐的效果 b1.add(Box.createHorizontalGlue(); b2.add(Box.createVerticalGlue(); 添加Strut: Strut用来加入组件间的间距 b1.add(Box.createHorizontalStrut(5); b2.add(Box.createVerticalStrut(5); 添加RigidArea: RigidArea用来设置组件的间距和高度(宽度和间距) Dimension d = new Dimension(50,80); b1.add(Box.createRigidArea(d); b2.add(Box.createRigidArea(d);,向盒子中添加必要的透明组件,不使用任何布局管理器,一般不使用该方式 空布局的使用 创建容器对象JPanel panel = new JPanel(); 设置容器对象的布局为nullpanel.setLayout(null); 设置组件在容器中的位置组件对象.setBounds(x, y, width, height); 向容器中添加组件对象(设组件对象已创建)panel.add(组件对象);,NULL,如实现以下界面,可以

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!