欢迎您的光临,本博所发布之文章皆为作者亲测通过,如有错误,欢迎通过各种方式指正。

教程  Java语言学习—第十七章 GUI之Swing[Java基础]

Java 原创 1182 0评论

内容概要:

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中的相关类,关系如下:

1_101223011323_1.JPG

这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的组成结构如图:

1_101223011359_1.JPG

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_101223011500_1.JPG

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

赞 (2) or 分享 ()
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽