1、第15讲 Swing程序设计基础(下),面向对象程序设计,北京科技大学天津学院 信息工程系,2,回顾,一个简单的Swing实例GUI开发工具包:Swing与AWT事件与监听器实现监听器接口继承监听器适配器类Swing容器顶层容器JFrame中间容器JPanel布局管理器BorderLayout、FlowLayout、GridLayout、GridBagLayout,北京科技大学天津学院 信息工程系,3,本章主要内容,Swing常用组件JLabel(标签)、JTextField(文本框)、JTextArea(编辑框)、JButton(按钮)、JCheckBox(复选框)、JRadioButton
2、(单选按钮)、JComboBox(下拉列表框)Swing高级组件菜单、对话框、表格、树,北京科技大学天津学院 信息工程系,4,一个GUI界面示例,JLabel,JTextField,JComboBox,JCheckBox,JTextArea,JRadioButton,JButton,北京科技大学天津学院 信息工程系,5,JLabel(标签),标签JLabel对象可以显示文本、图像。该对象不对输入事件做出反应,因此它无法获得键盘焦点。JLabel lblName = new JLabel( );lblName.setBounds(new Rectangle(88, 59, 123, 26); /
3、设置标签位置lblName.setHorizontalAlignment(SwingConstants.CENTER); /设置文本居中对齐lblName.setBackground(new Color(167, 160, 160); /设置标签背景颜色lblName.setOpaque(true); /设置标签背景透明,不会遮挡背景颜色lblName.setFont(new Font(隶书, Font.BOLD, 18); /设置文字字体、字形、大小lblName.setText(姓名:); /设置显示文本内容,北京科技大学天津学院 信息工程系,6,JTextField(文本框),文本框JT
4、extField对象通常用于输入或编辑单行文本。/注册KeyListener监听器txtName.addKeyListener(new java.awt.event.KeyAdapter( ) /响应按键有字符输入事件 public void keyTyped(java.awt.event.KeyEvent e) if (e.getKeyChar( ) = n) txtName.setEditable(false); /设置文本框不可编辑JOptionPane.showMessageDialog(null, 输入文本框的字符串是 + txtName.getText( ), 输出结果, JOpt
5、ionPane.INFORMATION_MESSAGE););,北京科技大学天津学院 信息工程系,7,JTextArea(编辑框),文本框JTextArea对象通常用于输入或编辑多行文本。private String adds = 地址1, 邮编1, 地址2, 邮编2;for (int i = 0; i adds.length; i+) txaAddress.append(addsi0 + + addsi1 + n);,北京科技大学天津学院 信息工程系,8,JButton(按钮),按钮JButton经常用于响应用户的操作事件,例如单击。btnConfirm.addActionListener(
6、new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) if (txtName.getText().equals() JOptionPane.showMessageDialog(null, 姓名不能为空, 信息提示, JOptionPane.INFORMATION_MESSAGE););,北京科技大学天津学院 信息工程系,9,JButton(按钮),按钮JButton经常用于响应用户的操作事件,例如单击。btnReset.addActionListener(new
7、 java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) txtName.setText(); txaAddress.setText(););,北京科技大学天津学院 信息工程系,10,JCheckBox(复选框),复选框JCheckBox常用于一项或多项选择。StringBuffer str = new StringBuffer( );if (chkReading.isSelected( ) /判断复选框是否被选中str.append(chkReading.getText
8、( ) + ;); /取得复选框上的文字if (chkSinging.isSelected( ) str.append(chkSinging.getText( ) + ;);if (chkDancing.isSelected( ) str.append(chkDancing.getText( ) + ;);JOptionPane.showMessageDialog(null, 爱好: + str.toString( ), 选择结果, JOptionPane.INFORMATION_MESSAGE);,北京科技大学天津学院 信息工程系,11,JRadioButton(单选按钮),单选按钮JRad
9、ioButton应用于围绕一个主题有多个选项,但必须选且只选一个。/添加一个ButtonGroup,达到选其一的效果ButtonGroup btngrpSex = new ButtonGroup( ); btngrpSex.add(getRadMale( );btngrpSex.add(getRadFemale( );,北京科技大学天津学院 信息工程系,12,JComboBox(下拉列表框),下拉框JComboBox中一般会有若干选项,用户可以选择其中一项。cboQualification.addItem(高中);cboQualification.addItem(专科);cboQualific
10、ation.addItem(本科);cboQualification.addItem(硕士);cboQualification.addItem(博士);,北京科技大学天津学院 信息工程系,13,菜单,一个桌面应用程序一般会有一个主窗口界面上方有菜单栏,其中包含若干菜单项、子菜单等。菜单实质是将多个按钮、单项按钮、复选框操作分门别类地整合在一起。,北京科技大学天津学院 信息工程系,14,JMenuBar (菜单栏),菜单栏是摆放各个菜单项、子菜单的容器。,北京科技大学天津学院 信息工程系,15,JMenu(子菜单)和JMenuItem(菜单项),菜单栏中的每一项条目称为菜单项。如果菜单项也有属于
11、自己的下一级菜单,则该菜单项称为子菜单(JMenu);如果菜单项已经处于页节点位置(即没有下一级菜单),则该菜单项属于JMenuItem类。,JMenu,JMenuItem,Separator,北京科技大学天津学院 信息工程系,16,JRadioButtonMenuItem(单选按钮),有时,在某一子菜单的菜单项中,同一时刻只能选择一项,效果类似于单选按钮,需要用到JRadioButtonMenuItem类。,北京科技大学天津学院 信息工程系,17,JCheckBoxMenuItem(复选框按钮),子菜单可以选择多项时,效果类似于复选框,需要用到JCheckBoxMenuItem类。,北京科技
12、大学天津学院 信息工程系,18,JPopupMenu(弹出式菜单),右键弹出式菜单(JPopupMenu)用于显示展开形式的菜单,可显示在屏幕的任何地方,通常是由单击鼠标右键触发的。,JOptionPane(对话框),19,JOptionPane有助于方便地弹出要求用户提供值或向其发出通知的标准对话框。JOptionPane类常用静态方法:,北京科技大学天津学院 信息工程系,北京科技大学天津学院 信息工程系,20,showConfirmDialog,方法格式:showConfirmDialog(Component parentComponent, Object message, String
13、title, int optionType, int messageType,Icon icon)实例代码:JOptionPane.showConfirmDialog(null, 是否确认删除该记录, 提示, JOptionPane.INFORMATION_MESSAGE);,北京科技大学天津学院 信息工程系,21,showInputDialog,方法格式:showInputDialog(Component parentComponent, Object message, String title, int messageType, Icon icon, Object selectionVal
14、ues, Object initialSelectionValue)实例代码:JOptionPane.showInputDialog(null, 请输入密码:, 输入框, JOptionPane.QUESTION_MESSAGE);,北京科技大学天津学院 信息工程系,22,showMessageDialog,方法格式: showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon)实例代码:JOptionPane.showMessageDialog(nu
15、ll, 系统出现异常, 警告, OptionPane.ERROR_MESSAGE);,北京科技大学天津学院 信息工程系,23,JTable(表格),在关系型数据库中,现实数据以“关系”的形式进行存储。如果需要以某种视图方式显示关系型数据时,在界面上通常以表格的形式体现。表格由表头(JTableHeader)和表身两部分组成。,北京科技大学天津学院 信息工程系,24,JTree(树),树(JTree)经常被使用来展现一种类似于“资源管理器”的形式,适应于多级菜单等层次结构的组织。树结构由节点(DefaultMutableTreeNode)组成。其中根节点只有一个,包含若干父节点,父节点再包含若干子节点,一层层地嵌套下去,直到不再包含其他任何节点。,北京科技大学天津学院 信息工程系,25,总结,Swing常用组件JLabel(标签)、JTextField(文本框)、JTextArea(编辑框)、JButton(按钮)、JCheckBox(复选框)、JRadioButton(单选按钮)、JComboBox(下拉列表框)Swing高级组件菜单、对话框、表格、树,