内容概要:
1.Swing框架
2.JFrame、JDialog、JApplet
3.JPanel、JScrollPane、JSplitPane、JInternalFrame
4.图标和标签
5.各种组件
1.Swing框架
javax.swing包中,主要包含两种类型的组件:顶层容器组件(Top-Level Containers,包括Jframe,Japplet,JDialog和JWindow)和轻量级组件。绝大部分组件(主要是轻量级组件)都是JComponet类的子类。
JComponent类的顶层次图:
(顶层)java.lang.Object→java.awt.Component→java.awt.Container→javax.swing.Jcomponent(底层)
可以看出Jcomponent类直接继承了Container类。间接的继承了Component类。Component类声明了所有Component子类的通用属性和行为,Comtainer类的作为容器类,用于管理容器中的组件,它声明了Container子类的通用属性和行为,如add方法添加组件,setLayout方法设置容器的布局策略等。JComponent类继承了Component类和container类,即继承了他们的通用属性和行为。
Swing的相关包
Package | 描述 |
javax.swing | 最常用的package,包含了各种Swing组件的类 |
javax.swing.border | 包含于Swing组件外框有关的类 |
javax.swing.colochooser | 针对Swing调色盘组件(JColoChooser)所设计的类 |
javax.swing.event | 处理由Swing组件产生的事件,有别于AWT事件 |
javax.swing.filechooser | 针对Swing文件选择对话框(JFileChooser)所设计的类 |
javax.swing.plaf; javax.swing.plaf.basic javax.swing.plaf.metal javax.swing.plaf.multi | 处理与Swing组件外观相关的类 |
javax.swing.table | 针对Swing表格组件(JTable)所设计的类 |
javax.swing.text javax.swing.text.html javax.swing.text.html.parser javax.swing.text.rtf | 包含与Swing文字组件相关的类 |
javax.swing.tree | 针对Swing树状组件(JTree)所设计的类 |
javax.swing.undo | 提供Swing文字组件Redo或Undo功能 |
2.JFrame、JDialog、JApplet
Swing中几乎所有组件都是从JComponent继承而来的,这些组件都是有纯java所编写的。而又4个组件并为如此,他们是:JFrame、JDialog、JWindow、JApplet,他们分别继承自AWT中的相关类,关系如下:
这4个组件为顶层容器组件,其余的Swing组件必须依附在这4个组件之上才能显示出来。Swing中这4个组件虽然是其他Swing组件的源头,却并不直接用作容器,而是通过实现RootPaneContainer接口来取得相应的容器后,才能加入其他组件。
如想在JFrame中加入一个按钮,则必须先取得JFrame的容器才能放置这个按钮。具体而言,应先取得JFrame的内容面板(Content Pane),然后再将按钮加入该Content Pane中,而非直接加入到JFrame上,假设frame是一个JFrame对象,则加入按钮btn按如下方式实现:
frame.getContentPane().add(btn)
其中,frame.getContentPane()用于获取frame的ContentPane以便于添加其他组件。这与AWT的区别于,在AWT中,Frame本身即可用作容器,可直接向Frame中添加组件,假设frame是一个Frame对象,则加入按钮btn的方式如下:
frame.add(btn);
Swing中的接口RootPaneContainer定义了各种获取和设置容器的方法,这里的容器包括JRootPane,Glass Pane,Layered Pane和Content Pane。JRoot Pane组件式每个顶层容器都含有的组件,JRootPane的组成结构如图:
JRootPane使得这些顶层容器能加入其他组件,但它只是一个虚拟的容器,不能向其中直接加入任何组件,需要借助于其他几个容器。当建立一个顶层容器时,系统会自动为这些顶层容器建立一个JRootPane组件,然后就可以取用Glass Pane,Layered Pane和Content Pane(Menu Bar是可选的,若不选用Menu Bar,则Content Pane会占据整个版面)来添加其他组件或是进行其他操作。
Glass Pane:透明面板,主要功能是捕获JFrame上的事件。默认值是不可见的。
Layered Pane:层叠面板,本身是容器,可以直接向其中添加组件。
Content Pane:最常用的容器,是Layered Pane中的一层,一般是为最底层 ,若再加入Tool Bar、Menu Bar或Popup Menu等组件,系统会自动调整其层次关系。比Layered Pane更常用,Layered Pane必须管理项目组之间的层次关系。
JFrame、JDialog、JWindow和JApplet通过实现接口RootPaneContainer来实现获取或设置容器,该接口中格的获取和设置容器的方法如图:
RootPaneContainer接口中的方法
方法 | 描写 |
Container getContentPane() | 获取Content Pane |
JLayeredPane getLayeredPane() | 获取Layered Pane |
Component getGlassPane() | 获取Glass Pane |
JRootPane getRootPane() | 返回该组件的JRootPane |
void setContentPane(Container contentPane) | 设置Content Pane |
void setLayeredPane(JLayeredPane layeredPane) | 设置 Layered Pane |
void setGlassPane(Component glassPane) | 设置 Glass Pane |
1)JFrame的使用
JFrame是Swing的窗口组件,是Swing中最常用的容器组件,常看做是最底层的容器,可以添加其他容器(如InternelFrame、JPane等),也可以添加(JLabel、JButton等)。组件的摆放可以使用Layout Manager来实现。Swing中可以使用AWT的Layout Manager。
JFrame类的构造方法:
public JFrame()——建立新的JFrame组件,默认是不可见的(invisible)
public JFrame(STring name)——建立新的JFrame组件,标题是title,默认是不可见的(invisible)
JFrame类的常用方法:
public Container getContentPane()——返回JFrame组件的ContentPane。
public void setDefaultCloseOperation(int operation)——设置但见窗口关闭按钮时的默认动作。
其中,setDefaultCloseOperation的参数operation取以下4个常量之一:DO_NOTHING_ON_CLOSE、HIDE__ON_CLOSE、DISPOSE__ON_CLOSE、EXIT__ON_CLOSE,其中前面3个接口在WindowConstants(JFrame实现了该接口)中定义,最后一个在JFrame中定义。
2)JDialog的使用
JDialog是Swing中的对话框,依赖于上层组件(窗口或对话框)。JDialog也是一个容器,继承自AWT中的Dialog类,要将组件加入到JDialog中,与JFrame类似,须先获取JDialog的Content Pane,然后再将组件添加到 Content Pane中。
JDialog的常用构造方法:
public JDialog(Frame owner,boolean modal)
public JDialog(Frame owner,String title,boolean modal)
public JDialog(Dialog owner,boolean modal)
public JDialog(Dialog owner,String titleboolean modal)
其中,参数modal用于设置对话框的模式,值为true表示模式(modal)对话框,即用户必须接受该对话框之后才能激活其上层对话框来进行操作;值为false表示非模式(non-modal)对话框对话框与其上层对话框可以相互切换。参数title用于设置对话框的标题。参数owner用于设置对话框的上层窗口。owner,title,modal均可省略,若省略分别代表:对话框不附属任何窗口、对话框无标题、对话框时非模式的。
JDialog类主要用来根据需要定制对话框,必须制作对话框每一个组件。JOptionPane类提供了一些静态方法用于显示对话框。这些对话框都是模式的,主要包含4种类型:消息对话框、输入对话框、确认对话框和选项对话框。
JOptionPane类的常用方法:showMessageDialog、showInputDialog、showInputDialog、showConfirmDialog、showOptionDialog。
3)JApplet的使用
JApplet是一个使得Java Applet能够使用Swing组件的类,他继承了java.applet.JApplet.在编写Java Applet时若希望小程序上能使用Swing组件。则需要继承javax.swing.JApplet,而非java.awt.applet了。
同JFrame类似,JApplet也是一个顶层容器。向JApplet添加组件也应将组件添加至JApplet的Content Pane,获取方法是getContentPane();JApplet的默认布局管理器是BorderLayout,而不是Applet的FlowLayout,也可以使用方法setLayout()来对JApplet的ContentPane设置新的布局策略。
3.JPanel、JScrollPane、JSplitPane、JInternalFrame
与Swing顶层容器相连的中间层容器,主要包括:JPanel、JScrollPane、JSplitPane、JInternalFrame。
1)JPanel的使用
JPanel是Swing中的面板,继承自javax.swing.JComponent,主要用于防止Swing轻量级组件,JPanel的对象可以作为顶层容器的内容来使用。同AWT中的Panel相似,将JPanel与Layout Manager结合使用可以更有效地进行版面设计和管理。
JPanel的构造方法:
public JPanel()——创建一个JPanel组件,默认使用FlowLayout布局管理器
public JPanel(LayoutManager layout)——创建一个指定Layout Manager的JPanel组件
2)JScrollPane的使用
JScorllPane是Swing中的滚动面板。事实上,JScrollPane是由JViewPort与JScrollBar组成的,JViewPort负责内容区域的大小,形状为一平面矩形;JScrooBar产生窗口滚动条,让用户可以看到更多的内容。当使用JScrollPane时,通常不会直接用到JViewPort与JScrollBar,系统会依照用户的设置来控制这些组件。
JScrollPane的构造方法:
public JScrollPane()
public JScrollPane(Component view)
public JScrollPane(int vsbPolicy,int hsbPolicy)
public JScrollPane(Component view,int vsbPolicy,int hsbPolicy)
其中,view表示在JScrollPane中显示的组件,vsbPolicy,hsbPolicy分别用于设置JScrollPane组件的垂直与水平滚动条,缺省时但view大于显示区域时自动产生滚动条。
滚动条显示策略vsbPolicy与hsbPolicy的值可以用下面的静态常量来进行设置,他们是在接口ScrollPaneConstants中定义为:
HORIZONTAL_SCROLLBAR_ALWAYS:总是显示水平的滚动条。
HORIZONTAL_SCROLLBAR_NEVER:总部显示水平滚动条。
HORIZONTAL_SCROLLBAR_AS_NEEDED:必要时(显示的组件的水平区域大于ScrollPane组件的水平区域)显示。
VERTICAL_SCROLLBAR_ALWAYS:总是显示垂直的滚动条。
VERTICAL_SCROLLBAR_NEVER:总部显示垂直滚动条。
VERTICAL_SCROLLBAR_AS_NEEDED:必要时(显示的组件的垂直区域大于ScrollPane组件的垂直平区域)显示。
若在创建JScrollPane组件时没有指定滚动条的显示策略,可以利用下述方法来设定水平和垂直滚动条的显示:
public void setHorizontalScrollBarPolicy(int policy)
public void setVerticalScrollBarPolicy(int policy)
3)JSplitPane的使用
JSplitPane是分隔面板,一个可以将两个组件同时显示在两个区域中,若需要同时显示多个组件,可以用多个JSplitPane组件来实现.JSplitPane允许用户指定是进行水平分隔还是垂直分隔,由JSplitPane类的两个静态常量来进行指定,其中HORIZONTAL_SPLIT表示水平分隔,VERTICAL_SPLIT表示垂直分隔。
JSplitPane的常用构造方法:
public JSPlitPane()
public JSplitPane(int newOrientation,Component newLeftComponent,boolean newContinuousLayout,Component newRightComponent)
其中,参数newOrientation指定组件的分隔方向,取之为HORIZONTAL_SPLIT或VERTICAL_SPLIT,默认是水平分隔的;newLeftComponent、newRightComponent为分割线两边要现实的组件;newContinuousLayout决定JSplitPane组件是否具有Continuous Layout功能。
所谓Continuous Layout功能是指当用户拖曳分隔面板时显示区内的在uj是否会随着分隔线拖曳动态改变大小。值为true时,则分隔线随组件大小动态改变;值为false时,则不改变,组件大小在分隔线停止时才却下来。默认是没有Continuous Layout功能的。
4)JInternalFrame的使用
JInternalFrame是可以在JFrame窗口内显示的内部窗口,几乎跟JFrame的使用一样,可以最大化、最小化、关闭窗口、加入菜单等,但必须依附于像JFrame这样的顶层容器。
对Internal Frame,一般处理方式是将JInternalFrame组件加入到Desktop Pane(即JDesktopPane组件)中,然后将JDesktopPane组件添加到JFrame的内容面板中,则实现了将Internal Frame加入到JFrame窗口。其中,Desktop Pane是一种特殊的Layered Pane(JInternalFrame类继承自JLayeredPane类),它用来建立虚拟桌面(Virtual Desktop)。
JInternalFrame的常用构造方法:
public JInternalFrame()
public JInternalFrame(String title,boolean resizable,boolean closable,boolean maximizable,Boolean iconifiable)
其中,参数title指定标题,resizable确定是否可以改变大小,closable确定是否可以关闭,maximizable和iconifiable分别用于确定是否可以最大化和最小化。
JDesktopPane的构造方法:
public JDesktopPane()——创建一个JDesktopPane组件
在使用Internal Frame时要注意的是,必须要设置Internal Frame的大小和在主窗口中的位置,Internal Frame中的组件也要放置到它的Content Pane中。
4.图标和标签
1)图标(Icon)
在AWT中,若想要在标签或按钮上加上图形几乎是不可能的,但在Swing中,可以很方便地给组件加上图片Icon,使得组件表现更美观。
Swing中的Icon是一个接口,包含3个抽象方法:getIconHeight()、getIconWidth()和PaintIcon(),若要使用Icon类来制作图标,则必须实现这3个方法。Swing还提供了另一个更常用的类ImageIcon,ImageIcon已经实现了Icon接口,所以利用ImageIcon类可以很方便地制作Icon组件。
ImageIcon类的常用构造方法:
public ImageIcon(String filename,String description)——利用图像文件建立一个ImageIcon组件,并添加描述文字description。
public ImageIcon(URL location,String description)——利用URL地址建立一个ImageIcon组件,并添加描述文字description。
其中,参数description可以缺省,ImageIcon的构造方法版本较多,具体的键JDK文档。
2)标签(JLabel)
Swing中的JLabel与AWT的Label类似,但JLabel可以提供带图标的标签,并可以设置图标和文字的位置。
JLabel类的常用构造方法:
public JLabel(Icon image,int horizontalAlignment)
public JLabel(String text,int horizontalAlignment)
public JLabel(String text,Icon icon,int horizontalAlignment)
其中,参数text设置标签文本,icon用于设置标签图标,horizontalAlignment用于指定标签内容的水平对齐方式。horizontalAlignment的取值为JLabel从SwingConstants继承来的几个静态常量:LEFT、CENTER、RIGHT、LEADING和TRAILING.
方法setHorizontalAlignment(int alignment)和setVerticalAlignment(int alignment)用于设置标签的水平和垂直对齐方式。当标签上既有文字 又有图片时,可以用setVerticalTextPosition(int alignment)方法设置文字相对于图标的垂直位置,取值为TOP、CENTER 或BOTTOM;可以使用setHorizontalTextPosition(int textPosition)方法来设置文字相对于图标的水平位置,取值为LEFT、CENTER、RIGHT、LEADING或TRAILING。
5.各种组件
1)JButton
JButton是Swing中的按钮。JButton类的常用构造方法为:
public JButton(String text)
public JButton(Icon icon)
public JButton(String text,Icon icon)
JButton是继承自抽象类AbstractButton的,该抽象类定义了许多组件设置和处理方法,AbstractButton不仅被JButton所继承,还被JCheckBox、JRadioButton、JMenuItem、JMenu等类所继承,提供给这些类各种功能,AbstractButton类的常用方法如下表:
AbstractButton类的常用方法
方法 | 描述 |
public void addActionListener(ActionListener l) | 为组件注册ActionListener监听器 |
public String getActionCommand() | 获取组件的Action command |
public void setActionCommand(String actionCommand) | 设置组件的Action command |
public String getText() | 获取组件上的文本 |
public void setEnabled(boolean b) | 设置组件是否可用 |
public void setMnemonic(int mnemonic) | 设置快捷键 |
public void setHorizontalTextPosition(int textPosition) | 设置组件上文本相对于图标的水平位置(LEFT、CENTER、RIGHT、LEADING或TRAILING) |
public void setVerticalTextPosition(int textPosition) | 设置组件上文本相对于图标的垂直位置(TOP、CENTER 或BOTTOM) |
public void setHorizontalAlignment(int alignment) | 设置组件上文本域图标的水平对齐方式 |
public void setVerticalAlignment(int alignment) | 设置组件上文本域图标的垂直对齐方式 |
对JButton组件进行单击或选中后按Enter键都会产生ActionEvent事件,对该事件进行处理我们使用ActionLister监听器。
2)JCheckBox
JCheckBox是Swing中的复选框。常用构造方法如下:
public JCheckBox(Icon icon,boolean selected)
public JCheckBox(String text,boolean selected)
public JCheckBox(String text,Icon icon,boolean selected)
其中,selected表示组件的默认选中状态,缺省未选中。
从AbstractButton继承来常用于JCheckBox的方法如下:
public void addItemListener(ItemListener l)——注册ItemListener监听器。
public void setSelected(boolean b)——设置是否选中。
public boolean isSelected()——返回是否选中的状态。
3)JRadioButton
JRadioButton是Swing中的单选按钮。要实现一个单选按钮只能选其一的功能,一般的处理方法是使用JRadioButton定义各个单选按钮,并创建一个ButtonGroup组件,然后利用ButtonGroup类的方法add(AbstractButton)讲个JRadioButton组件添加进来,形成一组单选按钮。
JRadioButton类的常用构造方法:
public JRadioButton(Icon icon,boolean selected)
public JRadioButton(String text,boolean selected)
public JRadioButton(Icon icon,String text,boolean selected)
ButtonGroup的构造方法:public ButtonGroup()
JRadioButton组件选中时或取消时会产生ItemEvent事件,处理该事件的监听器用ItemListener。
4)JComboBox
是Swing中的下拉列表框。常用构造方法为:
public JComBox(Objece[] items)
JComBox类的常用方法如下:
public Object getItemAt(int index)——获取选择位置的项。
public Object getSelectedItem()——获取选中的项。
public void setSelectedItem(Object anObject)——设置选中项为anObject
public void setEditable(boolean aFlag)——设置JComboBox组件是否可编辑。
当JComboBox中的单项被单击时会产生ItemEvent事件,而当选项被选中后按下Enter键会产生ActionEvent事件,分别对应监听器为ItemListener和ActionListener
5)JTextField、JTextArea、JPasswordField
Swing中与文字输入有关的组件主要包括JTextField、JTextArea、JPasswordField和JTextPane,其中JTextField、JPasswordField是单行文本输入组件,JTextArea是多行的,JTextPane可以设置其中文本的格式,他们都继承自JTextComponent类(位于javax.swing.text包中)。
JTextComponent类常用方法
方法 | 描述 |
public void copy() | 复制当前选中的文本之剪切板 |
public void cut() | 剪切当前选中的文本之剪切板 |
public void paste() | 将剪切板内容粘贴至当前位置 |
public String getText() | 获取该文本组件的内容 |
public void setText(String t) | 设置该文本组件的内容 |
public void setSelectionStart(int selectionStart) | 设置预选中文本区的起始位置 |
public void setSlelctionEnd(int selectionEnd) | 设置预选中文本区的结束位置 |
public void getSelectionStart() | 获取选中文本区的起始位置 |
public void getSelectionEnd() | 获取选中文本区的结束位置 |
public void select(int selectionStart,int selectionEnd) | 选中起止位置之间的文本 |
public void selectAll() | 选中文本组件的所有内容 |
public void setEditable(boolean b) | 设置文本组件是否可编辑 |
JTextArea是Swing中的多行文本框。JTextArea的常用构造方法:
public JTextArea(String text)
public JTextArea(int rows,int columns)
public JTextArea(String text,int rows,int columns)
其中,rows和columns分别设置文本去的行列数,text为初始文本。
JPasswordField可使输入信息以单一字符形式显示,这样避免敏感信息被看到,常用于密码输入。常用构造方法:
public JPasswordField(int columns)
public JPasswordField(String text)
public JPasswordField(String text,int columns)
方法publici void setEchoChar(char c)用于设置密文字符.
在AWT中,当TextField上的字符串发生改变时会产生TextEvent事件,可以利用TextListener监听器来处理。而Swing的JTextField不会引发TextField事件,而是会引发另一种Swing事件:java.swing.event.CareEvent事件,处理该事件的监听器是CareListener(位于javax.swing.event包)。其中只含一个方法:void careUpdate(CareEvent e)
当文本框的插入点发生改变时该方法被调用。
6)JTextPane
JTextPane也支持多行的文本组件,但相对于JTextArea而言,JTextPane提供了许多对文字处理的功能,如颜色、字体、大小、添加图片等。
JTextPane的构造方法:
public JTextPane()
Public JTextPane(StyledDocument doc)//以指定的文件模式创建一个JTextPane。
若要对文档文字以不同样式显示,JTextPane可以处理。主要有两个类来完成。一个是SimpleAttributeSet类,该类实现了AttrbuteSet接口,具备该接口的所有功能;另一个则是StyleConstants类,该类为AttributeSet了提供许多常用的属性值和设置属性的方法,这些方法都是static的,以StyleConstants方法名(参数表)的方式进行调用,其第一个参数是AttributeSet类或其子类。利用这两个类来辅助设计JTextPane就可以使得JTextPane的内容具有丰富的变化。
7)JMenuBar、JMenu、JMenuItem、JToolBar
JMenuBar是菜单条,是菜单容器组件;JMenu是菜单,如文件、编辑菜单等,JMenuItem是菜单项,如新建文件、打开文件等。JToolBar是工具栏,将软件中较常用的功能以工具栏的形式呈现。
JMenuBar是用来放置JMenu组件的菜单容器。
JMenuBar的构造方法为:public JMenuBar()//创建一个菜单条
构造一个空的JMenuBar放到窗口中是没有意义的,只有JMenubar中添加了JMenu时,JMenuBar才会显示出来。
JFrame的实例方法public void setJMenuBar(JMenuBar menubar)可以实现为JFrame对象添加菜单条。为JMenuBar添加菜单的方法是:public JMenu add(JMenu c)
JMenu是用来放置JMenuItem菜单项的组件。JMenu可以是单层的,也可以是多层的。若是单层,向其中添加基本的菜单项即可;若需要多层的,则可以向其中添加另一个包含了若干个菜单项JMenu组件,这样可以实现级联菜单的效果了。
JMenu的常用构造方法:
public JMenu(String s)——以指定的字符串建立菜单。
public JMenu(String s,boolean b)——以指定的字符串建立菜单,并指定其是否具有下拉式属性。
向JMenu添加菜单项或其他组件可以采用以下方法:
public JMenuItem add(JMenuItem menuItem)
public JMenuItem add(String s)
public Component add(Component c)
public Component add(Component c,int index)
JMenuItem是菜单项,通常代表一个菜单命令。JMenuItem类继承了AbstractButton类,具有许多AbstractButton的特性,可以说JMenuItem是一种特殊的JButton。如选中菜单中的某个菜单项并按下鼠标就引发ActionEvent事件,可以使用ActionListener来处理。
JMenuItem的常用构造方法为:
public JMenuItem(Icon icon)
public JMenuItem(String text)
public JMenuItem(String text,Icon icon)
public JMenuItem(String text,int mnemonic)
其中,icon和text分别用于设置菜单上的图标和文字,mnemonic用于设定菜单项的键盘快捷键。
若JMenuItem对象为创建快捷键,可以使用:public void setAccelerator(KeyStroke KeyStroke)来设置菜单命令的快捷键。
JTooBar用来放置各种常用功能命令的按钮。一般在软件中将所有功能以菜单项的形式分类放置在菜单中,当功能数量较多时,这样放置方便用户操作。
JTooBar的构造方法:
public JToolBar()
public JToolBar(int orientation)
public JToolBar(String name)
public JToolBar(String name,int orientation)
其中,orientation指定工具栏的排列方式,取值为HORIZONTAL或VERTICAL,默认是水平方向排列的;name指定工具栏的名称。
创建了JToolBar之后,还应该创建一些对应于常用命令的工具按钮添加到工具栏中,可以采用方法add()来添加。
8)JTable
当需要在用户界面上显示一些统计数据时,通常用到表格组件,Swing中的JTable可以方便的构造表格。
JTable类的常用构造方法:
public JTable()
public JTable(Object[][] rowDate,Object[][] columnNames)
public JTable(TableModel dm,TableColumnModel cm,ListSelecttionModel sm)
其中,不带参数的构造方法按系统默认的模式建立一个JTable对象;第二个版本用于建立一个显示二维数组rowData的数据表格,并且可以显示存储在数据columnNames中的表格的名称;第三个dm、cm、sm分别设定表格的数据模式、字段模式和选择模式。
9)Timer、JProgressBar
Timer是时间控制组件,位于java.swing包中,直接继承java.lang.Object类。Timer可以实现一段时间的控制,能触发ActionEvent,若要处理该事件,实现ActionListener即可。
比如看图软件中,每隔一段时间就自动切换一张图片就是用Timer实现,设置时间间隔,周期性的触发ActionEvent。
Timer的构造方法:
public Timer(int delay,ActionListener listener)——建立一个Timer组件,并在每一次delay的时间点上触发ActionEvent事件。
要激活Timer组件,可使用方法start();停止时使用stop();重新激活用restart();要设置是否反复触发ActionEvent,可以用方法setRepeats(boolean flag);要重新设置delay时间,可使用方法setDelay(int delay)。
使用Timer组件事实上利用Thread运行Timer的工作,可以利用Thread来制作类似的Timer效果。
JProgressBar是进度条,在软件安装,打开网页,上传文件等时经常看到。使用Swing中的JProgressBar组件可以很简单的输出进度变化情况。
JProgressBar的常用构造方法:
public JProgressBar()
public JProgressBar(int orient,int min,int max)
其中,参数orient设置进度条的方向,取值为HORIAONTAL或VERTICAL;min和max设置进度条的最值。默认最小,最大分别是0,100,方向为水平方向。
可以使用方法setMinimum(int n)、setMaxmum(int n)重新设置最值,方法setValue(int n)设置进度条的当前值,方法setBorderPainted(boolean b)设置是否显示进度条的边框,方法setString(String s)设置进度条上的文字信息。
当JProgressBar的值发生改变时,会触发ChangeEvent事件,实现ChangeListener接口可处理该事件,ChangeListener中只包含一个方法:void stateChanged(ChangeEvent e)
10)JFileChooser
JFileChooser是文件选择器,与AWT中的FileDialog类似,用于显示或保存文件。要注意的是,同FileDialog一样,JFileChooser本身也是一个针对文件操作的对话框,并没有文件读取或存盘的功能,要实现这样的功能,必须要结合输入输出流使用。
JFileChooser常用构造方法:
public JFileChooser()
public JFileChooser(String currentDirectoryPath)
public JFileChooser(File currentDirectiory)
其中,参数currentDirectoryPath用于设置文件对话框的默认打开路径;若缺省则采用系统默认的设置,如Windows下系统默认的是“我的文档”。
可以使用JFileChooser的showOpenDialog(component parent)方法来显示打开文件对话框,showSaveDialog(Component parent)方法来显示保存文件对话框。这两种方法在用户单击“确定”或“取消”或关闭对话框时会返回一个整数值,根据返回值状况确定究竟对话框做了何种操作,返回值如下:
JFileChooser.APPROVE_OPTION:用户单击了“确定”按钮.
JFileChooser.CANCEL_OPTION:用户单击了“取消”按钮.
JFileChooser.ERROR_OPTION:表示产生错误或非正常关闭对话框。
11)JTree
在Window资源管理器中的层次结构式树形结构,位于结构顶层的称之为根节点(Root Node),根节点之下的各层次的节点称之为子节点。最底层不含有子节点的节点为叶节点。
利用Swing中的JTree可以方便的构造树形结构。JTree的常用构造方法:
public JTree(TreeNode root)
public JTree(TreeMode newModel)
public JTree(Hashtable value)
其中,第一个是利用TreeNode创建树结构;第二个是利用TreeModel创建树结构;第三个是利用Hashtable创建树结构。
TreeNode建立树结构的方法。TreeNode本身是一个接口,位于javax.swing.tree包中,其中定义了7中有关树节点的方法,如返回父节点getParent()、判断是否为叶节点isLeaf()、获取子节点数getChildCount()等。javax.swing .tree包还提供了一个类DefaultMutableTreeNode实现了TreeNode接口,并提供其他方法来操作树。可以使用DefaultMutableTreeNode构造树的根节点,并以其参数构造JTree组件。
问题思考
转载请注明: ITTXX.CN--分享互联网 » Java语言学习—第十七章 GUI之Swing[Java基础]
最后更新:2018-10-16 10:13:12