第8章Swing组件1Word文档格式.docx

上传人:b****6 文档编号:18801012 上传时间:2023-01-01 格式:DOCX 页数:59 大小:357.54KB
下载 相关 举报
第8章Swing组件1Word文档格式.docx_第1页
第1页 / 共59页
第8章Swing组件1Word文档格式.docx_第2页
第2页 / 共59页
第8章Swing组件1Word文档格式.docx_第3页
第3页 / 共59页
第8章Swing组件1Word文档格式.docx_第4页
第4页 / 共59页
第8章Swing组件1Word文档格式.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

第8章Swing组件1Word文档格式.docx

《第8章Swing组件1Word文档格式.docx》由会员分享,可在线阅读,更多相关《第8章Swing组件1Word文档格式.docx(59页珍藏版)》请在冰豆网上搜索。

第8章Swing组件1Word文档格式.docx

//设置标题

this.setBounds(50,50,200,150);

//获得与JFrame关联的contentPane,contentPane默认的布局管理器是BorderLayout

ContainercontentPane=this.getContentPane();

contentPane.setLayout(newFlowLayout(5));

contentPane.add(button1);

contentPane.add(button2);

this.setVisible(true);

//设置JFrame对关闭按钮的处理方式

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

publicclassTest8_1{

publicstaticvoidmain(String[]args){

newJFrameTest("

JFrame测试"

程序运行界面如下:

图8-2例8-1运行界面

利用JFrame实现了与Frame相同的功能,但JFrame与Frame在使用上还是有很大区别的。

(1)两者都可以添加其他组件到窗口中,Frame直接使用add方法添加相应的组件;

JFrame则不能直接通过add方法添加组件,每个JFrame都有一个与之关联的内容面板(contentPane),只能针对这个contentPane添加相应组件。

(2)两者都可以设置布局管理器,Frame直接使用setLayout即可设置;

JFrame则需先得到其内容面板,对其内容面板设置布局管理器。

(3)Frame要想关闭窗口需要编写相应的事件处理程序(见例7-12),而JFrame则不必编写事件处理程序,只需调用方法setDefaultCloseOperation(intoperation),通过设置operation的值来响应用户关闭窗体的操作,该方法的参数operation的值有以下三个。

JFrame.DO_NOTHING_ON_CLOS:

什么也不做

JFrame.HIDE_ON_CLOSE:

隐藏窗体,这是JFrame的默认选项

JFrame.EXIT_ON_CLOSE:

关闭窗体,结束程序

8.1.2Jpanel

JPanel是使用最多的组件之一,它是AWT中Panel的替代组件。

其默认的布局管理器是FlowLayout布局管理器。

利用JPanel可以实现更为复杂的布局,如BorderLayout布局管理策略,只允许添加5个组件,那么我们可以在5个区域中添加5个JPanel,而每个JPanel又可以根据不同的布局管理策略添加多个组件,只要你愿意,可以添加任意多个你想添加的组件。

8.1.3JTabbedPane

当窗口的组件元素过多时,我们可以将这些组件分组放到不同的页面中,java提供了JTabbedPane页签面板来实现。

JTabbedPane包含多个选项卡,每个页面和一个选项卡相对应,每个选项卡又是一个容器(一般用JPanel类来封装),可以包含其他的GUI组件,选项卡可以显示图标和文本。

当用户选择特定的标签后,就会显示相应的选项卡,并且会触发ChangeEvent事件,该事件由ChangeListener监听器响应。

JTabbedPane提供了如下三个构造方法用于创建JTabbedPane类对象。

表8-1JTabbedPane构造方法

构造方法

说明

publicJTabbedPane()

创建一个具有默认的JTabbedPane.TOP选项卡布局的空TabbedPane。

publicJTabbedPane(int 

tabPlacement)

创建一个空的TabbedPane,使其按照tabPlacement值指定选项卡的布局

publicJTabbedPane

(int 

tabPlacement,int 

tabLayoutPolicy)

创建一个空的TabbedPane,使其具有指定的选项卡布局(tabPlacement值指定)和选项卡布局策略(tabLayoutPolicy指定)。

构造方法中涉及的两个参数的含义及具体值如下:

tabPlacement:

选项卡布局,int枚举类型,值为JTabbedPane.TOP、JTabbedPane.BOTTOM、JTabbedPane.LEFT或JTabbedPane.RIGHT,分别表示将标签文本显示在上方、下方、左侧、右侧。

tabLayoutPolicy:

一行不能放置所有选项卡标签值时的放置策略,int枚举类型,值为JTabbedPane.WRAP_TAB_LAYOUT或JTabbedPane.SCROLL_TAB_LAYOUT。

JTabbedPane.WRAP_TAB_LAYOUT—表示在容器中显示所有标签,如果一排内不能容纳,则把剩下的标签放到下一排。

JTabbedPane.SCROLL_TAB_LAYOUT—只显示一排标签,剩下的标签可以通过滚动图标显示。

[例8-2]中定义了一个JTabbedPaneTest类,在该类中添加了一个JTabbedPane类对象,为该类对象添加了六个选项卡,程序可以完成点击任何一个选项卡,在窗口下方的JTextField中显示出相应的选项卡的标题。

[例8-2]

importjava.awt.event.*;

importjavax.swing.event.*;

classJTabbedPaneTestextendsJFrame{

privateJTabbedPanejtabbedpane=newJTabbedPane();

privateJTextFieldjtextField=newJTextField();

publicJTabbedPaneTest(Stringtitle){

//添加六个选项卡

jtabbedpane.addTab("

第一页"

newJPanel());

第二页"

第三页"

第四页"

第五页"

第六页"

//注册监听器

jtabbedpane.addChangeListener(newMyChangeListener());

contentPane.add(jtextField,BorderLayout.SOUTH);

contentPane.add(jtabbedpane,BorderLayout.CENTER);

this.setSize(300,200);

//命名内部类处理Change事件

privateclassMyChangeListenerimplementsChangeListener{

publicvoidstateChanged(ChangeEvente){

Stringtemp=jtabbedpane.getTitleAt(jtabbedpane.getSelectedIndex());

jtextField.setText(temp+"

被选择"

}

publicclassTest8_2{

newJTabbedPaneTest("

JTabbedPane测试"

程序运行结果如图8-3左侧所示。

将创建JTabbedPane类对象的无参构造方法修改为

privateJTabbedPanejtabbedpane=newJTabbedPane(JTabbedPane.BOTTOM,JTabbedPane.SCROLL_TAB_LAYOUT);

则程序运行结果如图8-3右侧

图8-3例8-2运行结果

事件处理中有如下一段代码:

Stringtemp=jtabbedpane.getTitleAt(jtabbedpane.getSelectedIndex());

getSelectedIndex()方法表示获得当前选择的选项卡的索引值(int类型,从0开始,-1表示未选中任何选项卡)。

getTitleAt(index)方法表示获得索引值为index的选项卡的标题。

8.1.4JScrollPane

JSCrollPane又称滚动面板,可以用于当窗口中的内容大于窗口时,在窗口的右边和下边设置滚动条,借助滚动条就可以看到整个窗口的内容。

JSCrollPane的直接父类为JComponent。

JSCrollPane提供了四个构造方法用于创建JSCrollPane类对象,见下表。

表8-2JSCrollPane构造方法

JScrollPane()

创建一个空的JSCrollPane对象

JScrollPane(Component 

view)

创建JSCrollPane对象,并加入一个view组件,当组件内容大于显示区域时自动产生滚动条

JScrollPane(int 

vsbPolicy,

int 

hsbPolicy)

创建有水平滚动条和垂直滚动条的JSCrollPane对象

view,

int 

vsbPolicy,int 

创建有水平滚动条和垂直滚动条的JSCrollPane对象,并在其内加入一个view对象

有关JSCrollPane的例子我们在其他用到JSCrollPane的地方进行介绍,这里不单独举例了。

8.2按钮控件

图8-1中有一个AbstractButton类,该类是Swing中所有按钮的父类,该类的三个直接派生类JButton、JToggleButton和JMenuItem。

JButton与AWT中的Button类似,JButton有一个直接子类为BasicArrowButton,是一个带有箭头的按钮(箭头有上、下、左、右四个方向)。

JToggleButton表示一个切换按钮,该类有两个直接子类是我们经常使用到的,JRadioButton—单选按钮和JCheckBox—复选按钮。

JMenuItem包括三个直接子类,它们都是与菜单相关的按钮。

程序[例8-3]演示了各个按钮的用法。

[8-3]

importjavax.swing.plaf.basic.BasicArrowButton;

classButtonsTestextendsJFrame{

privateJButtonjbutton=newJButton("

JButton"

privateBasicArrowButton

basicArrowButtonUp=newBasicArrowButton(BasicArrowButton.NORTH),

basicArrowButtonDown=newBasicArrowButton(BasicArrowButton.SOUTH),

basicArrowButtonLeft=newBasicArrowButton(BasicArrowButton.WEST),

basicArrowButtonRight=newBasicArrowButton(BasicArrowButton.EAST);

privateJToggleButtonjtoggleButton=newJToggleButton("

JToggleButton"

privateJCheckBoxjcheckBox=newJCheckBox("

JCheckBox"

privateJRadioButtonjradioButton=newJRadioButton("

JRadioButton"

publicButtonsTest(Stringtitle){

contentPane.add(jbutton);

contentPane.add(basicArrowButtonUp);

contentPane.add(basicArrowButtonDown);

contentPane.add(basicArrowButtonLeft);

contentPane.add(basicArrowButtonRight);

contentPane.add(jtoggleButton);

contentPane.add(jcheckBox);

contentPane.add(jradioButton);

this.pack();

publicclassTest8_3{

newButtonsTest("

java各种按钮测试"

运行结果如下。

图8-4例8-3运行结果

所有按钮组件单击时都可触发ActionListener事件,如果需要对这些按钮做某些处理,可构造事件处理器实现ActionListener进行事件处理。

JRadioButton和JCheckBox在编程中经常使用到,我们会在8.4节选择组件中详细介绍。

8.3文本输入

在java中,能够用于文本输入的组件包括JTextField(文本框)、JTextArea(文本区)以及JPasswordField(密码框),JLabel(标签)不支持文本输入,但可以容纳文本。

8.3.1JTextFileld文本框

JTextField文本框是一个允许编辑单行文本的swing组件,JTextField提供了多个构造方法用于创建JTextField对象。

具体见下表8-3。

表8-3JTextField构造方法

publicJTextField()

构造一个新的TextField。

初始字符串为null,列数为0

publicJTextField(String 

text)

构造一个用指定文本初始化的新TextField。

列数为0

publicJTextField(int 

columns)

构造一个具有指定列数的新的空TextField。

初始字符串为null。

publicJTextField

(String 

text,int 

构造一个用指定文本和列初始化的新TextField。

text:

文本值,columns:

列数

JTextField有两个重要的方法setText(Stringt)和getText()分别用于设置文本框的显示文本和获取当前文本框的文本。

不过这两个方法都不是JTextField本身提供的方法,而是其父类JTextComponent所提供的。

JTextField类可引发ActionEvent事件,当用户在文本框中按下回车键时触发。

8.3.2JTextArea文本区

JTextArea文本区是一个允许编辑多行文本的swing组件,JTextArea提供了多个构造方法用于创建JTextArea对象。

具体见下表8-4。

表8-4JTextArea构造方法

JTextArea()

构造新的TextArea。

初始字符串为null,行/列设置为0。

JTextArea(String 

构造显示指定文本的新的TextArea。

行/列设置为0

JTextArea(int 

rows,

构造具有指定行数和列数的新的空TextArea。

初始字符串为null

text,

rows,int 

构造具有指定文本、行数和列数的新的TextArea。

文本值,rows:

行数,columns:

因为JTextArea是JTextComponent的直接子类,因此与JTextField一样,也可以通过setText(Stringt)和getText()方法设置和获取文本区的文本值。

JTextArea类可引发ActionEvent事件,当用户在文本区中按下回车键时触发。

8.3.3JPasswordField密码框

在AWT组件中,并没有单独的密码框组件,而是通过TextField的一个setEchoChar()方法来得到密码框,但在Swing中则单独通过一个类JPasswordField来表示。

密码框是文本框JTextField组件的简单扩展。

因此,其构造方法与JTextField相类似,这里不再介绍。

JPasswordField类中有几个重要方法,如下:

表8-5JPasswordField类常用构造方法

成员方法

publicchar[]getPassword()

获得密码的字符数组表示,用来替代getText()方法

publicvoidsetEchoChar(char 

c)

设置此JPasswordField的回显字符

publicchargetEchoChar()

返回要用于回显的字符

8.3.4JLabel标签

JLabel是一个静态组件,该组件可以显示一行静态文本,一般只是一个说明性的文字,而不接受用户的输入,也无事件响应。

JLabel提供了如下方法用于构建JLabel对象

表8-6JLabel构造方法

JLabel()

创建无图像并且其标题为空字符串的JLabel类对象

JLabel(Icon 

image)

创建具有指定图像的JLabel类对象

publicJLabel(Icon 

image,

horizontalAlignment)

创建具有指定图像和水平对齐方式的JLabe类对象

JLabel(String 

创建具有指定文本的JLabel类对象

text,Icon 

icon,

创建具有指定文本、图像和水平对齐方式的JLabel类对象

创建具有指定文本和水平对齐方式的JLabel类对象

构造方法中各参数意义

Image:

显示在JLabel上的图标。

horizontalAlignment:

JLabel上文字的对齐方式,其值为int枚举型,值包括SwingConstants.LEFT、SwingConstants.CENTER、SwingConstants.RIGHT、SwingConstants.LEADING和SwingConstants.TRAILING。

显示在JLabel上的文字。

以下的例8-4演示了本节中所介绍的各个组件的用法,界面可提供用户输入用户名和密码,按下回车后在JTextArea显示区显示用户输入的用户名和密码信息,不允许用户名或密码为空。

[例8-4]

classTextInputTestextendsJFrame{

privateJTextFielduserName=newJTextField(10);

privateJTextAreata=newJTextArea(4,10);

privateJPasswordFieldpassword=newJPasswordField(10);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1