版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 常用Swing组件,主讲:朱会东 E-Mail:,本章主要内容,常用Swing组件 菜单设计 对话框设计 本章小结,8.1常用Swing组件,Swing是AWT的扩展,它提供了许多新的图形界面组件。Swing组件以J开头,除了有与AWT类似的按钮(JButton)、标签(JLabel)、复选框(JCheckBox)、菜单(JMenu)等基本组件外,还增加了一个丰富的高层组件集合,如表格(JTable)、树(JTree)等。,8.1常用Swing组件,在Swing中不但用轻量级的组件替代了AWT中的重量级的组件,而且Swing的替代组件中都包含有一些其他的特性。例如,Swing的按钮和标
2、签可显示图标和文本,而AWT的按钮和标签只能显示文本。,Swing组件的分类,组件从功能上分可分为: 1) 顶层容器:JFrame,JApplet,JDialog,JWindow 2) 中间容器:JPanel,JScrollPane,JSplitPane,JToolBar 3) 特殊容器:在GUI上起特殊作用的中间层,如JInternalFrame,JLayeredPane,JRootPane.,Swing组件的分类,4) 基本控件:实现人际交互的组件,如Jbutton, JComboBox, JList, JMenu, JSlider, JtextField等 5) 不可编辑信息的显示:向用
3、户显示不可编辑信息的组件,例如JLabel, JProgressBar, JToolTip。 6) 可编辑信息的显示:向用户显示能被编辑的格式化信息的组件,如JColorChooser, JFileChooser, JTable, JTextArea。,JComponent类的功能,1) 边框设置:使用setBorder()方法可以设置组件外围的边框,使用一个EmptyBorder对象能在组件周围留出空白。 2) 双缓冲区:使用双缓冲技术能改进频繁变化的组件的显示效果。与AWT组件不同,JComponent组件默认双缓冲区,不必自己重写代码。 3) 提示信息:使用setTooltipText(
4、)方法,为组件设置对用户有帮助的提示信息。,JComponent类的功能(续),4) 键盘导航:使用registerKeyboardAction( ) 方法,能使用户用键盘代替鼠标来驱动组件。JComponent类的子类AbstractButton还提供了setMnemonic( )方法指明一个字符,通过这个字符和一个当前L c=Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);,6paint方法与repaint方法,调用repaint()方法时,repaint()方法会再去调用update(Graphics g)方法。update(Graphics
5、 g)方法也是Component类中的一个方法,这个方法的功能是:清除paint()方法以前所画的内容,然后再调用paint方法。因此我们可以在子类中重写update方法(即隐藏父类的方法),根据需要来清除哪些部分或保留哪些部分。,10 validate 确认本部件布局有效 public void validate() 11 invalidate 使本部件布局无效 public void invalidate(),7paint方法与repaint方法,使用Swing的基本规则,Swing组件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关联的内容面板(content pane
6、)上。 内容面板是顶层容器包含的一个普通容器,它是一个轻量级组件。 基本规则如下:(1)把Swing组件放入一个顶层Swing容器的内容面板上。(2)避免使用非Swing的重量级组件。,图8.1常用组件的继承关系,图8.1常用组件的继承关系,8.1.1常用Swing组件的继承关系,称为标签,它是一个静态组件,可以显示一行静态文本和图标标签只起信息说明的作用,而不接受用户的输入,也无事件响应。,8.1.2标签(JLabel),8.1.2标签(JLabel),构造方法有六种形式 JLabel() 构造一个既不显示文本信息也不显示图标的空标签 JLabel(Icon image) 构造一个显示图标的
7、标签 JLabel(String text) 构造一个显示文本信息的标签 JLabel(Icon image, int horizontalAlignment) 构造一个显示图标的标签,水平对齐方式由int型参数horizontalAlignment指定 JLabel(String text, int horizontalAlignment) 构造一个显示文本信息的标签 JLabel(String text, Icon icon, int horizontalAlignment) 构造一个同时显示文本信息和图标的标签,JLable类常用成员方法,例: JLabel的使用,label1 = ne
8、w JLabel( Label with text ); label1.setToolTipText( This is label1 ); Icon bug = new ImageIcon( bug1.bmp ); label2 = new JLabel( Label with text and icon, bug, SwingConstants.LEFT ); label2.setToolTipText( This is label2 ); label3 = new JLabel(); label3.setText( Label with icon and text at bottom );
9、 label3.setIcon( bug ); label3.setHorizontalTextPosition( SwingConstants.CENTER ); label3.setVerticalTextPosition(SwingConstants.BOTTOM ); label3.setToolTipText( This is label3 );,文本组件用于显示信息和提供用户输入文本信息的主要工具,在SWING中提供了文本框(JTextField)、文本域(JTextArea)、口令输入域(JPasswordField)等多个文本组件都有一个共同的基类JTextComponent,
10、他们不仅有自己的成员方法,同时还继承了父类提供的成员方法。在JTextComponent类中定义的主要方法如表8.1所示,8.1.3文本组件,JTextComponent一些方法,getSelectedText() 从文本组件中提取被选中的文本内容 getText() 从文本组件中提取所有文本内容 getText(int offs, int len) 从文本组件中提取指定范围的文本内容 select(int selectionStart, int selectionEnd) 在文本组件中选中指定范围的文本内容 selectAll() 在文本组件中选中所有文本内容 setEditable(boo
11、lean b) 设置为可编辑或不可编辑状态 setText(String t) 设置文本组件中的文本内容 setDocument(Document doc) 设置文本组件的文档 copy() 复制选中的文本到剪贴板 cut() 剪切选中的文本剪贴板 paste() 将剪贴板的内容粘贴到当前位置,8.1.3文本组件,1JTextField 它是一个单行文本输入框,可输出任何文本的信息,也可以接受用户输入。 (1) JTextField常用的构造方法 JTextField() 用于创建一个空的文本框,一般作为输入框; JTextField (intcolumns)构造一个具有指定列数的空文本框 J
12、TextField (Stringtext)构造一个显示指定字符的文本框,作为输出框; JTextField(String text, int columns) 构造一个具有指定列数、并显示指定初始字符串的文本域 。 JTextField(Document doc, String text, int columns) 构造一个使用指定文档、具有指定列数、并显示指定初始字符串的文本域,(2) JTextField组件常用的成员方法: setFont(Font f) 设置字体; setActionCommand(String com)设置动作事件使用的命令字符串; setHorizontalAli
13、gnment(int alig)设置文本的水平对齐方式,8.1.3文本组件,1JTextField (3) 事件响应 JTextField类只引发ActionEvent事件,当用户在文本框中按回车键时引发。当监听者对象的类声明实现了ActionListener接口,并且通过addActionListener( )语句注册文本框的监听者对象后,监听程序内部动作事件的actionPerformed(ActionEvent e)方法就可以响应动作事件了,JTextField,构造一个列数为30、初始字符串为“Single Line”的文本域 在构造方法中所指定的列数,是一个希望的数值,由于组件的大小
14、和位置通常是由布局管理器决定的,因此,指定的这些数据很有可能被忽略,JTextField tf = new JTextField(“Single Line” ,30);,2JTextArea,JTextArea被称为文本域。它与文本框的主要区别是:文本框只能输入/输出一行文本,而文本域可以输入/输出多行文本. (1) 常用的构造方法: JTextArea() 构造一个空的文本域 JTextArea(String text) 构造显示初始字符串的文本域 JTextArea(int rows, int columns) 构造具有指定行和列的空的文本域,这两个属性用来确定首选大小 JTextArea
15、(String text,int rows,int columns) 构造具有指定文本行和列的新的文本域,2JTextArea,(2) JTextArea组件常用的成员方法: insert(String str, int pos) 将指定文本插入指定位置。 Append(String str)将给定文本追加到文档结尾 replaceRange(String str,int start,int end)用给定的新文本替换从指示的起始位置到结尾位置的文本 setLineWrap(boolean wrap) 设置文本域是否自动换行,默认为false,2JTextArea,(3) 事件响应 JText
16、Area的事件响应由JTextComponent类决定。 JTextComponent类可以引发两种事件:DocumentEvent事件与UndoableEditEvent事件。当用户修改了文本区域中的文本,如做文本的增、删、改等操作时,TextComponent类将引发DocumentEvent事件;当用户在文本区域上撤消所做的增、删、改时,TextComponent类将引发UndoableEditEvent事件。,2JTextArea,构造一个4行、30列、显示初始字符串“Initial text”的文本区 对文本区进行操作的方法 用户按“Enter”或“Return”键的结果只是向缓冲区
17、输入一个字符,并不能表示输入结束,因此,当需要识别用户“输入完成”时,通常要在文本区旁放置一个“Apply”或“Commit”之类的按钮,JTextArea ta = new JTextArea(“Initial text”, 4, 30),append(String str) 将指定文本追加到文本区。 insert(String str, int pos) 将指定文本插入到文本区的特定位置。 replaceRange(String str, int start, int end) 指定文本替换文本区中的部分内容,2JTextArea,当用户单击Copy按钮时,第一个文本区中选中的内容(或全部
18、内容)将被添加到第二个文本区中,当用户单击Clear按钮时,第二个文本区中的内容将被清空,3JPasswordField,JPasswordField组件实现一个密码框,用来接受用户输入的单行文本信息。新创建密码框的默认回显字符为”*”,可以通过成员方法进行修改。 (1) JPasswordField的常用构造方法: JPasswordField() 构造一个空的密码框 JPasswordField(String text) 构造一个显示初始字符串信息的密码框 JPasswordField(int columns) 构造一个具有指定长度的空密码框,3JPasswordField,(2) JPa
19、sswordField的常用成员方法: setEchoChar(char c) 设置密码框的回显字符 char getPassword()返回此密码框中所包含的文本 char getEchoChar() 获得密码框的回显字符,8.1.4按钮组件,按钮是图形用户界面最常用、最基本组件,经常用到的按钮有JButton、JCheckBox、JRadioButton等,这些按钮类均是AbstractButton类的子类或者间接子类。都可以设置文本、设置图标、注册事件监听程序 AbstractButton类常用的方法:,8.1.4 按钮组件,Icon getIcon()和setIcon(Icon ico
20、n) 获得和修改按钮图标 String getText()和setText(String text) 获取和修改按钮 setEnabled(boolean b) 启用或禁用按钮 setHorizontalAlignment(int alignment) 设置图标和文本的水平对齐方式 String getActionCommand()和setActionCommand(String actionCommand) 获取和设置按钮的动作命令。 setRolloverIcon(Icon rolloverIcon) 设置鼠标经过时按钮的图标 setPressedIcon(Icon pricon)设置按钮
21、按下时的图标,1JButton,JButton是最常用、最简单的按钮,按钮可分为有无标签和图标几种情况。 (1) JButton类常用的构造方法 JButton() 创建一个无文本也无标签的按钮 JButton(String text) 创建一个具有文本提示信息但没有图标的按钮 JButton(Icon icon) 创建一个具有图标、但没有文本提示信息的按钮 JButton(String text,Icon icon) 创建一个即有文本提示信息又有图标的按钮,1JButton,构造显示文本为“Sample”的按钮 构造显示文本为“Sample”、带有钻石形状小图标的按钮,JButton b =
22、 new JButton(“Sample” );,JButton b = new JButton(Sample,new ImageIcon(icon.gif);,1JButton,(2) 事件响应 JButton类能引发ActionEvent事件,当用户用鼠标单击命令按钮时来触发。如果程序需要对此动作作出反应,就需要使用addActionListener()为命令按钮组成事件监听程序,该程序实现ActionListener接口。可使用ActionEvent类的方法getSource( )方法获取引发事件的对象名,getActionCommand( )方法来获取对象文本提示信息。,1JButto
23、n,程序运行时,每当按动按钮,就会在屏幕上交替显示出两条不同信息,Jbutton方法,可以通过setText()动态地改变按钮上的显示文本,通过setEnabled()改变按钮的状态 setMnemonic()方法可以为按钮设置快捷键 setActionCommand()方法为按钮设置一个命令名 getActionCommand()方法 因此当事件发生时,判断是在哪一个按钮上发生的,b1.setMnemonic(KeyEvent.VK_S);,切换按钮,JToggleButton是具有选中状态和未选中状态 JToggleButton的构造方法 JToggleButton() 创建一个既没有显示
24、文本也没有图标的切换按钮 JToggleButton(Icon icon) 创建一个没有显示文本但有图标的切换按钮 JToggleButton(Icon icon, boolean selected) 创建一个没有显示文本但有图标和指定初始状态的切换按钮 JToggleButton(String text) 创建一个有显示文本但没有图标的切换按钮 JToggleButton(String text, boolean selected) 创建一个有显示文本和指定初始状态但没有图标的切换按钮 JToggleButton(String text, Icon icon) 创建一个既有显示文本又有图标的
25、切换按钮 JToggleButton(String text, Icon icon, boolean selected) 创建一个既有显示文本又有图标和指定初始状态的切换按钮,2JCheckBox组件,JCheckBox组件被成为复选框,它提供选中/未选中两种状态,并且可以同时选定多个,用户单击复选框就会改变该复选框原来的状态。 (1) JCheckBox组件类的常用构造方法: JCheckBox( ) 构造一个无标签的复选框 JCheckBox(String text) 构造一个具有提示信息的复选框 JCheckBox(String text,boolean selected) 创建具有文本
26、的复选框并指定其最初是否处于选定状态,2JCheckBox组件,创建复选框组件对象,可以通过JCheckBox类提供的成员方法设定复选框的属性。 setText(String text)设定文本提示信息 setSelected(boolean b)设定复选框的状态。 isSelected()方法获取按钮当前的状态。,2JCheckBox组件,(2) 事件响应 JCheckBox不仅可以触发ActionEvent事件还可以触发ItemEvent事件。ItemEvent事件当复选框、单选按钮已经下拉列表框中的选择状态发生变化时会触发该事件,要对该类事件进行处理需要用addItemListener(
27、 )进行注册事件监听者 【例8-3】JCheckBox的使用 功能实现:利用三个复选框表示红、绿、蓝三种颜色分量,根据所选按钮不同控制标签的背景颜色,3. JRadioButton,在一组单选按钮中,可进行选择其中一个的操作,即进行“多选一”。 因为单选按钮是在一组按钮中选择一个,因此,必须将单选按钮分组,即指明在一个组中包含哪些按钮。可用ButtonGroup创建按钮组对象,应用对象的add()方法顺序加入各个单选按钮。 在单选按钮中也可以使用HTML代码。这是Java SDK 1.3版新增的功能。,3. JRadioButton,使用单选按钮来设置Swing应用程序的不同观感。,8.1.5
28、组合框(JComboBox),组合框(JComboBox)是一个下拉式菜单,它有两种形式:不可编辑的和可编辑的,对不可编辑的JComboBox,用户只能在现有的选项列表中进行选择;而可编辑的JComboBox,用户既可以在现有选项中选择,也可以输入新的内容,JComboBox构造方法,JComboBox() 创建一个没有任何可选项的组合框 JComboBox(Object items) 根据Object数组创建组合框,Object数组的元素即为组合框中的可选项,创建一个具有五个可选项的组合框: String itemList = One, Two, Three, Four, Five ; JC
29、omboBox jcb = new JComboBox(itemList);,8.1.5组合框(JComboBox),(2) JComboBox类常用成员方法如下: void addItem(Object anObject) 为项列表添加选项 public void insertItemAt(Object anObject,int index) 在index指定的位置添加新的可选项anObject Object getItemAt (int index) 返回指定索引处的列表项 int getItemCount() 返回列表中的项数 int getSelectedIndex() 返回列表中与给
30、定项匹配的第一项 Object getSelectedItem() 返回当前所选项。 void removeAllItems() 从项列表中移除所有项。 removeItem(Object anObject) 从项列表中移除指定的项。 removeItemAt(int anIndex) 移除指定位置 anIndex 处的项。 setEditable(boolean aFlag) 确定是否可编辑,8.1.5组合框(JComboBox),(3) 事件响应 JComboBox组件能够响应的事件分为选择事件与动作事件。若用户选取下拉列表中的选择项时,则激发ItemEvent事件,使用ItemListe
31、ner事件监听者进行处理;若用户在JComboBox上直接输入选择项并回车时,则激发ActionEvent事件,使用ActionListener事件监听者进行处理。,8.1.6列表框(JList),List称为列表组件,它可供用户进行选择的一系列可选项 JList组件与JComboBox组件的最大区别是:JComboBox组件一次只能选择一项,而JList组件一次可以选择一项或多项。选择多项时可以是连续区间选择,也可以是不连续的选择 .,8.1.6列表框(JList),(1) JList常用的构造方法: JList() 构造一个空列表 JList(Object listData)构造一个列表,
32、列表的可选项由对象数组listData指定 JList(Vector listData) 构造一个列表,列表的可选项由Vector型参数dataModel,8.1.6列表框(JList),(2) JList类常用的成员方法: int getSelectedIndex() 返回所选的第一个索引;如果没有选择项,则返回 -1 void setSelectionBackground(Color c) 设置单元的背景色 void setSelection Foreground(Color c) 设置单元的前景色 void setVisibleRowCount(int num) 设置不使用滚动条可以在列
33、表中显示的首选行数 void setSelectionMode(intselectionMode)确定允许单项选择还是多项选择 void setListData(ObjectlistData) 根据一个 object 数组构造列表,8.1.6列表框(JList),(3) 事件响应 JList组件的事件处理一般可分为两种:一种是当用户单击列表框中的某一个选项并选中它时,将产生ListSelectionEvent类的选择事件,此事件是Swing的事件。另一种是当用户双击列表框中的某个选项时,则产生MouseEvent类的动作事件。,若希望实现JList的ListSelectionEvent事件,首
34、先必须声明实现监听者对象的类接口ListSelectionListener,并通过JList类的addListSelectionListener( )方法注册文本框的监听者对象,再在ListSelectionListener接口的valueChanged (ListSelectionEvent e)方法体中写入有关代码,就可以响应ListSelectionEvent事件了,8.1.6列表框(JList),根据String数组构造一个包含四个可选项的列表,String data = one, two, three, four; JList dataList = new JList(data);,
35、Vector listData = new Vector(); listData.addElement(one ); listData.addElement(two ); listData.addElement(three ); listData.addElement(four ); JList list = new JList(listData);,ListModel,列表使用ListModel保存它的可选项,ListModel是一个接口,其定义为:,public interface ListModel int getSize();/返回列表的长度 Object getElementAt(i
36、nt index);/返回指定位置的可选项 /注册事件监听程序,监听列表可选项的变化 void addListDataListener(ListDataListener l); /删除监听程序 void removeListDataListener(ListDataListener l); ,创建列表,当根据数组或Vector创建列表时,构造方法将自动地创建一个缺省的、实现了ListModel接口的对象,该对象是不可变的 如果希望列表的可选项是动态改变的,需要在创建列表时提供一个ListModel对象,在通常情况,可以用一个DefaultListModel对象 DefaultListModel
37、类定义在Swing包中,它给出了ListModel的缺省实现。当有特殊需要时,也可以自定义一个子类继承AbstractListModel,AbstractListModel是定义者Swing包中的抽象类,给出了ListModel接口的部分实现,程序,首先创建一个DefaultListModel对象,使用addElement(Object obj)方法添加列表可选项 然后根据DefaultListModel对象创建列表,listModel = new DefaultListModel(); listModel.addElement(one ); listModel.addElement(two
38、); ,list = new JList(listModel);,创建列表,可以使用JList中定义的setModel(ListModel model)方法设置新的ListModel 可以将列表对象放入JScrollPane中以提供滚动功能 列表支持单多项选择,使用JList中定义的setSelectionMode(int selectionMode)方法对列表的选择模式进行设置 ListSelectionModel.SINGLE_SELECTION 只能单选 ListSelectionModel.SINGLE_INTERVAL_SELECTION 可多项选择,但多个选项必须是连续的 List
39、SelectionModel.MULTIPLE_INTERVAL_SELECTION 多项选择,多个选项可以是间断的,这是选择模式的缺省值,程序,表格在设计用户的可视化界面时非常有用。当需要显示一大堆统计数据时,用表格可以非常清楚的显示出来 使用JTable时也必须导入一个名为javax.swing.table.*的包。,8.1.7表格(JTable),8.1.7表格(JTable),(1) JTable常用的构造方法: JTable () 构造一个默认的表格 JTable(intnumRows, intnumColumns) 使用默认模式构造具指定行和列的表格 JTable(TableMod
40、el dm) /dm对象中包含了表格要显示的数据 JTable(ObjectrowData, ObjectcolumnNames) 构造一个columnNames作为列名, 显示二维数组的表格 JTable(VectorrowData, VectorcolumnNames) 构造columnNames 作为列名,rowData中数据作为输入来源的表格,8.1.7表格(JTable),(2) JTable类常用的成员方法: void addColumn(TableColumnaColumn) 将列追加到结尾 int getColumnCount() 返回表格中的列数 int getRowCoun
41、t() 返回此表格中的行数 void moveColumn(intcolumn, inttargetColumn) 列移动到目标列所占用的位置 void removeColumn(TableColumnaColumn) 移除一列 void selectAll() 选择表中的所有行、列和单元格 Object getValueAt(introw, intcolumn) 返回指定单元格的值。 setValueAt(ObjectaValue, introw, intcolumn) 设置表格指定单元格值 getModel() /获得表格的数据来源对象,JTable 有很多用来自定义其呈现和编辑的设施,同
42、时提供了这些功能的默认设置,从而可轻松地设置简单表。 例如,要设置一个 10 行 10 列的表: TableModel dataModel = new AbstractTableModel() public int getColumnCount() return 10; public int getRowCount() return 10; public Object getValueAt(int row, int col) return new Integer(row*col); ; JTable table = new JTable(dataModel); JScrollPane scro
43、llpane = new JScrollPane(table);,Object data= Jenny,female,football,new Integer(20),ENGLISH, May,female,music,new Integer(20),ENGLISH,Lili,female,art,new Integer(20),CHINESE; Object columnNames=name,sex,hobby,age,“ nationality; jtable1=new JTable(data,columnNames); jtable1.setRowHeight(20); JScrollP
44、ane jscrp1=new JScrollPane(); jscrp1.getViewport().add(jtable1);,表格处理事件,表格常用的处理事件是ListSelectionEvent,它对应的接口是ListSelectionListener,当表格中数据被选择时触发该事件。 ListSelectionEvent事件也可应用于JList和JTree。 ListSelectionListener接口中需重写的方法是: void valueChanged(ListSelectionEvent e),其中ListSelectionEvent类中常用的方法如下: 1getFirstIn
45、dex( ):返回所选范围的第一个标识。 2getLastIndex( ):返回所选范围的最后一个标识。 3getValueAdjusting( ):测试除ListSelectionEvent之外是否还有其他事件发生。,例:表格处理事件,例:输出更改过的表格单元格的内容,表格中另一种常处理的事件是当表格内容发生改变时触发的TableModelEvent。这个事件的处理由TableModel类来完成。,滚动条(JSlider),在某些程序中,需要调整线性的值,这时就需要滚动条。滚动条提供了易于操作的值的范围或区的范围。javax.swing.JSlider类提供了对滚动条的支持,它的父类是jav
46、ax.swing.JComponent类。,滚动条(JSlider),可用下列JSlider类的构造方法生成JSlider对象。 JSlider() 创建范围为0至100,初值为50的水平滚动条。 JSlider(int orientation) 创建范围为0至100,初值为50的水平或垂直滚动条。表示方向的值可为常量JSlider.HORIZONTAL和JSlider.VERTICAL,分别表示水平和垂直方向。 JSlider(int min, int max) 创建范围为min至max,初值为min和max平均值的水平滚动条。 JSlider(int min, int max, int v
47、alue) 创建范围为min至max,初值为value的水平滚动条。 JSlider(int orientation, int min, int max, int value) 创建范围为min至max,初值为value的水平或垂直滚动条。,滚动条(JSlider),进度条,进度条提供直观的图形化的进度描述,由JProgressBar生成。JProgressBar的主要构造方法有: JProgressBar():创建一个水平进度条,显示边界,但没有进度字符串。 JProgressBar(int orient):创建一个指定方向的进度条,方向包括垂直JProgressBar.VERTICAL和水
48、平JProgressBar.HORIZONTAL。 JProgressBar(int min,int max):创建一个指定最小值和最大值的水平进度条。 JProgressBar(int orient,int min,int max):创建一个具有指定的方向、最小值和最大值的进度条。,JScrollbar组件,事实上,JScrollPane是由JViewPort和JScrollBar组件组成的。JViewPort组件主要负责显示内容的区域大小;JScrollBar组件则产生窗口滚动条,让用户看到整个内容。用户使用JScrollPane组件时不会直接与JViewPort和JScrollBar组件
49、打交道,使用比较方便。但是,当我们想对滚动条做更细的设置时,例如在拖动时一次滚动多少区域等,就必须了解JScrollBar所提供的功能。,图 滚动条各部分的名称,1JScrollbar组件的构造方法,表 JScrollbar类构造方法,在JScrollbar的构造方法中,参数orientation的值可为JScrollbar.VERTICAL或JScrollbar.HORIZONTAL,用于指定滚动条的方向;value值用于指定滚动块的初始值,默认为0;extent值用于指定滚动块的位移区域,当用户在滚动块与滚动箭头之间点击时,将由这个值来确定滚动块应移动的位置;minimum值用于指定滚动槽
50、的最小值(默认值为0);maximum值用于指定滚动槽的最大值(默认值为100)。在实际使用中,如果value值小于minimum值,那么value值被设置成等于minimum值。如果value值大于maximum值,那么value值就设置成等于maximum值。若设extent=20,minimum=0,maximum=100,则滚动块的位移范围为080。,2JScrollbar类的常用成员方法,表 JScrollbar类的成员方法,表 JScrollbar类的成员方法,调整事件(AdjustmentEvent) JScrollbar能够接受调整事件(AdjustmentEvent)。Adj
51、ustmentEvent类只包含一个事件,即代表GUI组件状态发生连续变化的事件ADJUSTMENT_VALUE_CHANGED。当用户通过各种方式改变滚动块位置从而改变其代表的数值时,都会引发调整事件。 AdjustmentListener addAdjustmentListener( ) adjustmentValueChanged(AdjustmentEvent e)方法,当改变滚动块位置时,系统就会自动调用该方法进行处理。,时间组件,时间组件可以使用程序在一段时间内依次执行指定的操作,这在动画的展示上非常有用,由Timer类生成。时间组件可以周期地触发ActionEvent事件。Tim
52、er的构造方法有: Timer(int delay,ActionListener listener):建立一个Timer组件,并在每一次delay的时间点上触发ActionEvent事件。,Timer的主要方法有: void addActionListener(ActionListener listener):注册动作事件。 void start():激活Timer组件。 void stop():停止Timer组件。 void restart():重新激活Timer组件。 void setDelay(int delay):设置间隔时间。 void setRepeats(boolean flag
53、):设置是否只触发一次ActionEvent事件。,进度条与时间组件的应用,【例】启动界面程序设计。屏幕效果如图所示。,8.2菜单设计,菜单在GUI应用程序中有着非常重要的作用,通过菜单用户可以非常方便地访问应用程序的各个功能,是软件中必备的组件之一,利用菜单可以将程序功能模块化。Swing包中提供了多种菜单组件,他们的继承关系如图8.9所示。,8.2菜单设计,8.2菜单设计,1菜单栏(JMenuBar),菜单栏是窗口中的主菜单,它只用来管理菜单,不参与交互式操作。Java应用程序中的菜单都包含在一个菜单栏对象之中。JMenuBar只有一个构造方法JMenuBar( )。而顶层容器类如JFra
54、me、JApplet等都有setMenuBar(JMenuBar menu)方法把菜单栏放到窗口的上。,菜单是最基本的下拉菜单,用来存放和整合菜单项(JMenuItem)的组件 JMenu 组件有两个用途 当它添加至 JMenuBar 时,将显示为文本字符串 当用户单击此菜单项时,则显示一个弹出式菜单,2菜单(JMenu),JMenu,JMenuItem,JSeparator,JCheckBoxMenuItem,JRadioButtonMenuItem,(1) JMenu常用的构造方法: JMenu( ):创建一个空标签的JMenu对象。 JMenu(String text):使用指定的标签创
55、建一个JMenu对象。 JMenu(String text,Boolean b):使用指定的标签创建一个JMenu对象,并给出此菜单是否具有下拉式的属性,(2) 常用成员方法 getItem(intpos) 得到指定位置的 JmenuItem getItemCount() 得到菜单项数目包括分隔符, insert和remove( ) 插入菜单项或者移除某个菜单项 addSeparator( )和insertSeparator(int index )在某个菜单项间加入分隔线。,8.2菜单设计,3菜单项(JMenuItem) 菜单项是菜单系统中最基本的组件,它继承自AbstractButton类,
56、单中选择某一项时会触发ActionEvent事件 (1) 常用的菜单构造方法如下: JMenuItem(String text) 创建一个具有文本提示信息的菜单项 JMenuItem(Icon icon) 创建一个具有图标的菜单项 JMenuItem(String text,Icon icon) 创建有文本又有图标的菜单项 JMenuItem(String text,int mnemonic) 创建一个指定文本和键盘快捷的菜单项,(2) 常用的成员方法: void setEnabled(booleanb) 启用或禁用菜单项 void setAccelerator(KeyStrokekeyStr
57、oke) 设置加速键 void setMnemonic(char mnemonic)设置快捷键,8.2菜单设计,4制作下拉菜单的一般步骤 制作一个可用的菜单系统,一般需要经过下面的几个步骤: Step 1 创建一个JMenuBar对象并将其放置在一个JFrame中; Step 2 创建JMenu对象; Step 3 创建JMenuItem对象并将其添加到JMenu对象中; Step 4 把JMenu对象添加到JMenuBar中。,【示例程序】 创建菜单。,import javax.swing.*; import java.awt.event.*; public class MenuDemo e
58、xtends JFrame implements ActionListener JTextArea tf=new JTextArea( ); JMenuBar bar=new JMenuBar( ); /创建JMenuBar对象 JMenu menu=new JMenu(文件); /创建JMenu对象 JMenuItem newf=new JMenuItem(新建); JMenuItem open=new JMenuItem(打开); JMenuItem close=new JMenuItem(关闭); JMenuItem quit=new JMenuItem(退出);,public Menu
59、Demo( ) getContentPane( ).add(new JScrollPane(tf); tf.setEditable(false); /设置文本区域不可编辑 bar.setOpaque(true); /设置bar为不透明,若设置bar为透明,则在选择菜单时会有残影存留在JMenuBar上 setJMenuBar(bar); /加入bar到Jframe中 menu.add(newf); /加入JMenuItem对象到menu中 menu.add(open); menu.add(close); menu.addSeparator( ); /在JMenu中加入一分隔线 menu.add(quit);,bar.add(menu); /将menu加载到bar上 newf.addActionListener(this); /注册JMenuItem对象给监听者对象 open.addActionListener(this); close.addActionListener(this); quit.ad
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宁银理财2026届春季校园招聘备考题库附完整答案详解(名校卷)
- 建筑供暖通风设计方案
- 2026年广告设计服务合同协议
- 2026年广告公司合同广告技术合作协议
- 2026山东青岛海发国际贸易有限公司招聘10人备考题库及答案详解(新)
- 2026江西赣州市就业创业服务中心招募青年见习1人备考题库一套附答案详解
- 2026广西钦州市钦北区长田街道社区卫生服务中心招聘1人备考题库附参考答案详解(巩固)
- 2026天津铁路建设投资控股(集团)有限公司招聘1人备考题库含答案详解(b卷)
- 2026广州医科大学附属第三医院粤西医院(茂名市电白区妇幼保健院)托育园招聘编外工作人员4人备考题库及参考答案详解【夺分金卷】
- 2026广西上林国民村镇银行春季招聘备考题库含答案详解(黄金题型)
- 2026中交集团纪委第一办案中心社会招聘笔试历年常考点试题专练附带答案详解
- 2026年安全生产事故隐患排查治理制度
- 2026年安徽工业经济职业技术学院单招职业适应性测试题库及答案详解(新)
- GB/T 8554-2026电子和通信设备用变压器和电感器测试方法和试验程序
- 考古发掘配合专项施工方案
- 2026年全国低压电工证(复审)考试笔试试题及答案
- 2026年六安职业技术学院单招职业适应性考试题库附答案详解(基础题)
- 船舶与海上设施起重设备规范-2007 含2016年第1次变更通告
- 第一章《三角形的证明》单元测试卷-2025-2026学年北师大版八年级数学下册
- (2026年春季新版本)人教版二年级数学下册全册教案
- 2026年3月时事政治及参考答案1套
评论
0/150
提交评论