第七章( 3)
创建图形用户界面学习目标
使用不同的用户界面组件,JButton,JCheckBox,
JRadioButton,JLabel,JTextField,JTextArea,
JComboBox,JList,JScrollBar,and JSlider.
为不同的事件类型创建监听器
使用边框在外观上分类组织用户界面组件
使用 ImageIcon类创建图像图标
在一个应用程序中显示多个窗口本章介绍的组件
A b st ra ct B u t t o n
J T o g g l eBu t t o n
J Ch ec k B o x
J Ra d i o B u t t o n
J Co m b o B o x
J Li s t
J S l i d er
JT ex t Co mp o n en t
J La b el
J Bu t t on
Co m p o n e n t Co n t ai n e r JC o m p o n e n t
J Tex t F i el d
J Tex t Area
J S cr o l l Ba r
j a v a,a w t,C ont a i ne r
+ a dd( c o m p,C om p o n e n t ),C o m po n e nt
+ a dd( c o m p,C om p o n e n t,i n de x,i n t ),C o m po n e n t
+ r e m ove ( c o m p,C o m po n e n t ),voi d
+ g e t L a you t ( ),L a yout M a n a g e r
+ s e t L a yout ( l,L a yout M a n a g e r ),voi d
+ pa i n t C o m po n e nt s ( g,G r a p h i c s ),voi d
向该容器中添加一个组件用指定序号向该容器添加一个组件从该容器中删除一个组件返回该容器的布局管理器设置该容器的布局管理器在该容器上绘制每个组件
j av a.aw t,C om pon e nt
+ g e t F o n t ( ),j a va,a w t,F o n t
+ s e t F o n t ( f,j a va,a w t,F o n t ),voi d
+ g e t B a c k gr ou n d ( ),j a va,a w t,C ol o r
+ s e t B a c k g r o u n d( c,C ol or ),voi d
+ g e t F o r e g r ou n d ( ),j a va,a w t,C ol or
+ s e t F or e g r ou n d( c,C ol or ),voi d
+ g e t W i dt h( ),i n t
+ g e t H e i gh t ( ),i n t
+ g e t P r e f e r r e d S i z e ( ),D i m e n s i o n
+ s e t P r e f e r r e dS i z e ( d,D i m e n s i o n ),voi d
+ i s V i s i bl e ( ),bool e a n
+ s e t V i s i b l e ( b,bool e a n ),voi d
返回该组件的字体设置 该组件的字体返回该组件的背景色设置该组件的背景色返回该组件的前景色设置该组件的前景色返回该组件的宽度返回该组件的高度返回该组件的恰当尺寸设置该组件的恰当尺寸指明该组件是否是可见的显示或隐藏该组件
j av ax,sw i ng.J C om pon e nt
+ g e t T ool T i pT e x t ( ),S t r i ng
+ s e t T ool T i pT e x t ( t e s t,S t r i ng ),voi d
+ g e t B or de r ( ),j a va x,s w i ng,bo r de r,B or de r
+ s e t B o r de r ( b or de r,B or de r ),voi d
返回该组件的工具提示文本设置该组件新的工具提示文本返回 该组件的边框设置该组件的新边框边框 Borders
可以在 JComponent类的任何对象上设置边框。
swing有几种边框类型,如:
new TitledBorder(String title),创建一个标题边框
new LineBorder(Color color,int width),创建一个线型边框,其中 width是指线的宽度。
以下代码设置面板边框为标题边框
JPanel panel = new JPanel();
panel.setBorder(new TitleBorder(“My Panel”));
按钮 Buttons
按钮是一种点击时触发 ActionEvent的组件。
Swing提供常规 buttons,toggle(开关) buttons,
check box buttons和 radio buttons,这些按钮的公共特性在 javax.swing.AbstractButton中描述。
ja va x,s wi n g,A b s tr a ctB u tto n
+ g e t A c t i o n C o mma n d ( ),St r i n g
+ se t A c t i o n C o mm a n d ( s,St r i n g ),v o i d
+ g e t T e x t ( ),St r i n g
+ se t T e x t ( t e x t,St r i n g ),v o i d
+ g e t I c o n ( ),j a v a x,sw i n g,I c o n
+ se t I c o n ( i c o n,I c o n ),v o i d
+ g e t Pr e sse d I c o n ( ),j a v a x,sw i n g,I c o n
+ se t Pr e sse d I c o n ( p r e ss e d I c o n,I c o n ),v o i d
+ g e t R o l l o v e r I c o n ( ),j a v a x,sw i n g,I c o n
+ se t R o l l o v e r I c o n ( p r e sse d I c o n,I c o n ),
v o i d
+ g e t M n e mo n i c ( ),i n t
+ se t M n e mo n i c ( m n e mo n i c,i n t ),v o i d
+ g e t H o r i z o n t a l A l i g n me n t ( ),i n t
+ se t H o r i z o n t a l A l i g n me n t ( a l i g n m e n t,i n t ),
v o i d
+ g e t H o r i z o n t a l T e x t Po si t i o n ( ),i n t
+ se t H o r i z o n t a l T e x t Po si t i o n ( p o si t i o n,i n t ),
v o i d
+ g e t V e r t i c a l A l i g n me n t ( ),i n t
+ se t V e r t i c a l A l i g n me n t ( v A l i g n me n t,i n t ),
v o i d
+ g e t V e r t i c a l T e x t Po si t i o n ( ),i n t
+ se t V e r t i c a l T e x t Po si t i o n ( p o s i t i o n,i n t ),
v o i d
+ i sB o r d e r Pa i n t e d ( ),B o o l e a n
+ se t B o r d e r Pa i n t e d ( b,b o o l e a n ),v o i d
+ g e t I c o n Te x t G a p ( ),i n t
+ se t I c o n T e x t G a p ( i c o n T e x t G a p,i n t ),v o i d
+ i sS e l e c t e d ( ),b o o l e a n
+ se t Se l e c t e d ( b,b o o l e a n ),v o i d
R e t u r n s t h e a c t i o n c o mma n d o f t h i s b u t t o n,
Se t s a n e w a c t i o n c o mma n d f o r t h i s b u t t o n,
R e t u r n s t h e b u t t o n ’ s t e x t ( i,e,,t h e t e x t l a b e l o n t h e b u t t o n ),
Se t s t h e b u t t o n ’ s t e x t,
R e t u r n s t h e b u t t o n ’ s d e f a u l t i c o n,
Se t s t h e b u t t o n 's d e f a u l t i c o n,T h i s i c o n i s a l so u se d a s t h e " p r e sse d " a n d
" d i sa b l e d " i c o n i f t h e r e i s n o e x p l i c i t l y s e t p r e sse d i c o n,
R e t u r n s t h e p r e sse d i c o n ( d i sp l a y e d w h e n t h e b u t t o n i s p r e sse d ),
Se t s a p r e sse d i c o n f o r t h e b u t t o n,
R e t u r n s t h e r o l l o v e r i c o n ( d i sp l a y e d w h e n t h e mo u se i s o v e r t h e b u t t o n ),
Se t s a r o l l o v e r i c o n f o r t h e b u t t o n,
R e t u r n s t h e m n e mo n i c k e y v a l u e o f t h i s b u t t o n,Y o u c a n se l e c t t h e b u t t o n
b y p r e ssi n g t h e A L T k e y a n d t h e mn e mo n i c k e y a t t h e sa me t i me,
Se t s a m n e mo n i c k e y v a l u e o f t h i s b u t t o n,
R e t u r n s t h e h o r i z o n t a l a l i g n me n t o f t h e i c o n a n d t e x t o n t h e b u t t o n,
Se t s t h e h o r i z o n t a l a l i g n me n t o f t h e i c o n a n d t e x t,( d e f a u l t,C EN T ER )
R e t u r n s t h e h o r i z o n t a l t e x t p o si t i o n r e l a t i v e t o t h e i c o n o n t h e b u t t o n,
Se t s t h e h o r i z o n t a l t e x t p o si t i o n o f t h e t e x t r e l a t i v e t o t h e i c o n,( d e f a u l t,
R I G H T )
R e t u r n s t h e v e r t i c a l a l i g n me n t o f t h e i c o n a n d t e x t o n t h e b u t t o n,
Se t s t h e v e r t i c a l a l i g n me n t o f t h e i c o n a n d t e x t,( d e f a u l t,C EN T ER ),
R e t u r n s t h e v e r t i c a l t e x t p o si t i o n r e l a t i v e t o t h e i c o n o n t h e b u t t o n,
Se t s t h e v e r t i c a l t e x t p o si t i o n o f t h e t e x t r e l a t i v e t o t h e i c o n,( d e f a u l t,
C EN T ER )
I n d i c a t e s w h e t h e r t h e b o r d e r o f t h e b u t t o n i s p a i n t e d,
D r a w s o r h i d e s t h e b o r d e r o f t h e b u t t o n,B y d e f a u l t,a r e g u l a r b u t t o n ’ s
b o r d e r i s p a i n t e d,b u t t h e b o r d e r f o r a c h e c k b o x a n d a r a d i o b u t t o n i s
n o t p a i n t e d,
R e t u r n s t h e g a p b e t w e e n t h e t e x t a n d t h e i c o n o n t h e b u t t o n,( JD K 1,4 )
Se t s a g a p b e t w e e n t h e t e x t a n d t h e i c o n o n t h e b u t t o n,( JD K 1,4 )
R e t u r n s t h e st a t e o f t h e b u t t o n,T r u e i f t h e c h e c k b o x o r r a d i o b u t t o n i s
se l e c t e d,f a l se i f i t 's n o t,
Se t s t h e s t a t e f o r t h e c h e c k b o x o r r a d i o b u t t o n,
ja va x,s wi n g,JCo mp o n en t
JButton
JButton 继承 AbstractButton 并提供了几个创建按钮的构造方法,
j a v a x.s w i ng,JB ut t on
+ J B ut t o n ( )
+ J B ut t o n ( i c o n,j a va x,s w i ng,I c o n )
+ J B ut t o n ( t e x t,S t r i ng )
+ J B ut t o n ( t e x t,S t r i ng,i c o n,I c o n )
创建默认按钮用图标创建一个按钮用文本创建一个按钮用文本和图标创建一个按钮
j av ax,sw i ng.A b st rac t B ut t on
JButton属性
text
icon
mnemonic
horizontalAlignment
verticalAlignment
horizontalTextPosition
verticalTextPosition
iconTextGap
Icons
一个 icon是固定尺寸的图片 ; 它一般比较小,用于装饰组件,javax.swing.Icon 是一个接口,为了创建一个 icon,使用它的实现类 javax.swing.ImageIcon,比如,下面代码从一个 image创建一个 icon:
Icon icon = new ImageIcon("photo.gif");
TestButtonIcons
水平对齐水平对齐指定以什么样的水平方式在按钮上放置文本和图标。可以使用 setHorizontalAlignment(int)
方法设置水平对齐方式,其中的参数值可选取下列五常量之一,LEADING,LEFT,CENTER、
RIGHT,TRAILING。目前 LEADING和 LEFT相同,RIGHT和 TRAILING相同,Java将来可能会区分它们。默认是 SwingConstants.TRAILING
垂直对齐垂直对齐可以使用 setVerticalAlignment(int)
方式设置垂直对齐方式。参数值可取下列三个常量之一,TOP,CENTER,BOTTOM。
默认是 SwingConstants.CENTER
水平文本位置( Horizontal Text Positions)
水平文本位置指定文本相对于图标的水平位置。可使用 setHorizontalTextPosition(int)
方法设置水平文本位置,其中参数值可取下列五常量之一,LEADING,LEFT,
CENTER,RIGHT,TRAILING,默认是
SwingConstants.RIGHT.
垂直文本位置( Vertical Text Positions)
可使用 setVerticalTextPosition(int)方法设置垂直文本位置,其中的 int值可取下列三常量之一,TOP,CENTER和 BOTTOM,默认的是 SwingConstants.CENTER,
Example 7.3.1,使用按钮编写程序,在面板上显示一条信息,并使用两个按钮 <=和
=>在面板上向左或向右移动信息。
ButtonDemo
JB u t t o n JB u t t o n
M e ssa g e Pa n e l
复选框 JCheckBox
一个开关按钮( toggle button)有两种状态,就像是一个电灯开关。 JToggleButton类继承 AbstractButton并实现一个开关按钮。用户通常使用其子类 JCheckBox和 JRadioButton进行开或关两种状态的选择。
JCheckBox继承了 AbstractButton类的所有属性,并提供了创建复选框的几种构造方法。
j av ax,s w i n g,J C h ec k B ox
+JC h e ck Bo x ( )
+JC h e ck Bo x ( t e x t,S t r i n g )
+JC h e ck Bo x ( t e x t,S t r i n g,se l e ct e d,
b o o l e an )
+JC h e ck Bo x ( i co n,I co n )
+JC h e ck Bo x ( t e x t,S t r i n g,i co n,I co n )
+JC h e ck Bo x ( t e x t,S t r i n g,i co n,I co n,
se l e ct e d,b o o l e an )
Cr e at e s a d e f au l t ch e c k b o x b u t t o n w i t h n o t e x t a n d i co n,
Cr e at e s a ch e c k b o x w i t h t e x t,
Cr e at e s a ch e c k b o x w i t h t e x t a n d sp e ci f i e s w h e t h e r t h e c h e ck b o x i s
i n i t i al l y s e l e ct e d,
Cr e at e s a ch e c k b o x w i t h a n i co n,
Cr e at e s a ch e c k b o x w i t h t e x t an d a n i co n,
Cr e at e s a ch e c k b o x w i t h t e x t a n d a n i co n,an d spe ci f i e s w h e t h e r t h e c h e c k
b o x i s i n i t i al l y sel e ct e d,
j ava x.s w i ng,Ab s t r actBut t on
j av ax,s w i n g,J T og g l eB u t t o n
Example 7.3.2,使用复选框在上例中,添加三个复选框,命名为 Centered、
Bold和 Italic,用户使用它们可以指定信息是否居中、粗体、斜体
CheckBoxDemo
ButtonDemo
CheckBoxDemo
单选按钮 JRadioButton
单选按钮让用户从一组选项中选择唯一的一个选项。外观上它类似于复选框。
j a v a x,s w i n g,J Rad io B u tto n
+ JR a d i o B u t t o n ( )
+ JR a d i o B u t t o n ( t e x t,St r i n g )
+ JR a d i o B u t t o n ( t e x t,St r i n g,se l e c t e d,
b o o l e a n )
+ JR a d i o B u t t o n ( i c o n,I c o n )
+ JR a d i o B u t t o n ( t e x t,St r i n g,i c o n,I c o n )
+ JR a d i o B u t t o n ( t e x t,St r i n g,i c o n,I c o n,
se l e c t e d,b o o l e a n )
C r e a t e s a d e f a u l t r a d i o b u t t o n w i t h n o t e x t a n d i c o n,
C r e a t e s a r a d i o b u t t o n w i t h t e x t,
C r e a t e s a r a d i o b u t t o n w i t h t e x t a n d s p e c i f i e s w h e t h e r t h e r a d i o b u t t o n i s
i n i t i a l l y s e l e c t e d,
C r e a t e s a r a d i o b u t t o n w i t h a n i c o n,
C r e a t e s a r a d i o b u t t o n w i t h t e x t a n d a n i c o n,
C r e a t e s a r a d i o b u t t o n w i t h t e x t a n d a n i c o n,a n d s p e c i f i e s w h e t h e r t h e r a d i o
b u t t o n i s i n i t i a l l y se l e c t e d,
ja v a x,sw in g,A b st ra c tB u tto n
j a v a x,s w i n g,J T o g g le B u tto n
编组单选按钮为了组织单选按钮,需要创建 javax.swing.ButtonGroup的一个实例,并且使用 add方法把多个单选按钮添加到这个实例中,
也即多个单选按钮编成一个单选按钮组,使得只能选择这个组内的一个单选按钮。如下列代码:
ButtonGroup btg = new ButtonGroup();
btg.add(jrb1);
btg.add(jrb2);
当点击一个单选按钮时触发 ItemEvent事件,然后触发
ActionEvent事件。要判断一个单选按钮是否被选中,使用
isSelected()方法。
Example 7.3.3,使用单选按钮在上例中添加三个名为 Red,Green和 Blue的单选按钮,用来进行对信息颜色的选择。
RadioButtonDemo
ButtonDemo
CheckBoxDemo
RadioButtonDemo
标签 JLabel
标签是显示一小段文字、
一幅图片或二者皆有的区域。
j av ax,s w i n g,J L ab el
+JL ab e l ( )
+JL ab e l ( i co n,j av ax,sw i n g,I co n )
+JL ab e l ( i co n,I co n,h A l i g n m e n t,i n t )
+JL ab e l ( t e x t,S t r i n g )
+JL ab e l ( t e x t,S t r i n g,i co n,I co n,
h A l i g n m e n t,i n t )
+JL ab e l ( t e x t,S t r i n g,h A l i g n m e n t,i n t )
+g e t T e x t ( ),S t r i n g
+se t T e x t ( t e x t,S t r i n g ),v o i d
+g e t I co n ( ),j av ax,sw i n g,I co n
+se t I co n ( i co n,I co n ),v o i d
+g e t H o r i z o n t al A l i g n m e n t ( ),i n t
+se t H o r i z o n t al A l i g n m e n t ( al i g n m e n t,i n t ),
v o i d
+g e t H o r i z o n t al T ex t P o si t i o n ( ),i n t
+se t H o r i z o n t al T e x t P o si t i o n ( t e x t P o si t i o n,
i n t ),v o i d
+g e t V e r t i cal A l i g n m e n t ( ),i n t
+se t V e r t i cal A l i g n m e n t ( v A l i g n m e n t,i n t ),
v o i d
+g e t V e r t i cal T e x t P o si t i o n ( ),i n t
+se t V e r t i cal T e x t P o si t i o n ( v T e x t P o si t i o n,
i n t ),v o i d
+g e t I co n Te x t G ap ( ),i n t
+se t I co n T ex t G ap ( i co n T e x t G ap,i n t ),v o i d
Cr e at e s a d e f au l t l a b e l w i t h n o t e x t a n d i co n,
Cr e at e s a l a b e l w i t h a n i co n,
Cr e at e s a l a b e l w i t h a n i co n a n d t h e s p e ci f i e d h o r i z o n t al al i g n m e n t,
Cr e at e s a l a b e l w i t h t e x t,
Cr e at e s a l a b e l w i t h t e x t,an i co n an d t h e sp e ci f i e d h o r i z o n t al al i g n m e n t,
Cr e at e s a l a b e l w i t h t e x t a n d t h e s p e ci f i e d h o r i z o n t al al i g n m e n t,
Re t u r n s t h e l ab e l ’ s t e x t,
S e t s t h e l a b e l ’ s t e x t,
Re t u r n s t h e l ab e l ’ s i m ag e i co n,
S e t s an i m ag e i co n o n t h e l a b e l,
Re t u r n s t h e h o r i z o n t al al i g n m e n t o f t h e t e x t an d i co n o n t h e l ab e l,
S e t s t h e h o r i z o n t al al i g n m e n t – sam e as f o r b u t t o n s,
Re t u r n s t h e h o r i z o n t al t e x t p o si t i o n r e l at i v e t o t h e i co n o n t h e l ab e l,
S e t s t h e h o r i z o n t al t e x t p o si t i o n – sa m e as f o r b u t t o n s,
Re t u r n s t h e v e r t i cal al i g n m e n t o f t h e t e x t an d i co n o n t h e l a b e l,
S e t s t h e v e r t i c a l al i g n m e n t – s am e as f o r b u t t o n s,
Re t u r n s t h e v e r t i cal t e x t p o si t i o n r e l at i v e t o t h e i co n o n t h e l ab e l,
S e t s t h e v e r t i c al t e x t p o si t i o n – s am e as f o r b u t t o n s
Re t u r n s t h e g a p b e t w ee n t h e t e x t an d t h e i co n o n t h e l ab e l,( JD K 1,4 )
S e t s a g a p b e t w ee n t h e t e x t a n d t h e i c o n o n t h e l a b e l,( JD K 1,4 )
java x.s w ing,JC o mpo n e nt
JLabel 构造方法
JLabel()
JLabel(String text,int horizontalAlignment)
JLabel(String text)
JLabel(Icon icon)
JLabel(Icon icon,int horizontalAlignment)
JLabel(String text,Icon icon,int
horizontalAlignment)
JLabel属性
JLabel 继承了 JComponent类的所有属性,
并具有与 JButton类相似的许多属性,如
text,icon,horizontalAlignment,
verticalAlignment,horizontalTextPosition,
verticalTextPosition,and iconTextGap,
使用 Labels
// Create an image icon from image file
ImageIcon icon = new ImageIcon("image/grapes.gif");
// Create a label with text,an icon,
// with centered horizontal alignment
JLabel jlbl = new JLabel("Grapes",icon,
SwingConstants.CENTER);
// Set label's text alignment and gap between text and icon
jlbl.setHorizontalTextPosition(SwingConstants.CENTER);
jlbl.setVerticalTextPosition(SwingConstants.BOTTOM);
jlbl.setIconTextGap(5);
文本框 JTextField
文本框可以用于输入或显示字符串。 JTextField类是 JTextComponent类的子类,而 JTextComponent类是 JComponent类的子类。
j av ax,s w i n g,J T ex t F i el d
+ JT e x t F i e l d ( )
+JT e x t F i e l d ( co l u m n,i n t )
+JT e x t F i e l d ( t e x t,S t r i n g )
+JT e x t F i e l d ( t e x t,S t r i n g,co l u m n s,i n t )
+g e t Co l u m n s( ),i n t
+se t Co l u m n s( co l u m n s,i n t ),v o i d
+g e t H o r i z o n t al A l i g n m e n t ( ),i n t
+se t H o r i z o n t al A l i g n m e n t ( al i g n m e n t,i n t ),v o i d
Cr e at e s a d e f au l t e m p t y t e x t fie l d w i t h n u m b e r o f c o l u m n s s e t t o 0,
Cr e at e s an e m p t y t e x t fie l d w i t h s p e ci f i e d n u m b e r o f c o l u m n s,
Cr e at e s a t e x t fie l d i n i t i al i z e d w i t h t h e sp e ci f i e d t e x t,
Cr e at e s a t e x t fie l d i n i t i al i z e d w i t h t h e sp e ci f i e d t e x t a n d co l u m n s,
Re t u r n s t h e n u m b e r o f c o l u m n s i n t h i s t e x t fie l d,
S e t s t h e n u m b e r o f c o l u m n s i n t h i s t e x t fie l d,
Re t u r n s t h e h o r i z o n t al a l i g n m e n t o f t h i s t e x t fie l d,
S e t s t h e h o r i z o n t al al i g n m e n t fo r t h i s t e x t fie l d,( d e f au l t,L E F T )
j ava x.s w i ng,tex t,JTex t C ompo nen t
+g e t T ex t ( ),S t r i n g
+se t T e x t ( t e x t,S t r i n g ),v o i d
+i sE d i t a b l e ( ),b o o l e an
+se t E d i t ab l e ( b,b o o l e an ),v o i d
Re t u r n s t h e t e x t co n t ai n e d i n t h i s t e x t co m p o n e n t,
S e t s a t e x t i n t h i s t e x t co m p o n e n t,
I n d i ca t e s w h e t h e r t h i s t e x t c o m p o n e n t i s e d i t ab l e,
S e t s t h e t e x t c o m p o n e n t e d i t a b l e o r p r e v e n t s i t fr o m b e i n g e d i t e d,
( d e f au l t,t r u e )
JTextField构造方法
JTextField(int columns)
创建指定列数的空文本框
JTextField(String text)
创建内容为 text的文本框
JTextField(String text,int
columns)
创建指定列数和内容的文本框
JTextField常用方法
getText()
返回文本框的内容,
setText(String text)
设置文本框内容,
setEditable(boolean editable)
设置文本框是否可编辑,默认是可编辑
setColumns(int)
设置文本框列数
Example 7.3.4,使用文本框在前面的例子中,
增加一个文本框,
允许用户设置新的信息。
TextFieldDemo
J F r am e
Bu tt o nD e m o Che c kBo x D e m o Ra di o B ut to nD e m o T ex tF ie l dD e m o
A ct io nL iste ne r
文本区 JTextArea
如果想让用户输入多行文字,可通过创建多个 JTextField
实例来实现,但更好的办法是使用 JTextArea类,它允许用户输入多行文字。
j av ax,s w i n g,J T ex t A r ea
+ JT e x t A r e a ( )
+ JT e x t A r e a ( r o w s,i n t,c o l u m n s,i n t )
+ JT e x t A r e a ( t e x t,S t r i n g )
+ JT e x t A r e a ( t e x t,S t r i n g,r o w s,i n t,c o l u m n s,i n t )
+ a p p e n d ( s,S t r i n g ),v o i d
+ i n se r t ( s,S t r i n g,p o s,i n t ),v o i d
+ r e p l a c e R a n g e ( s,S t r i n g,st a r t,i n t,e n d,i n t ),v o i d
+ g e t C o l u m n s( ),i n t
+ se t C o l u m n s( c o l u m n s,i n t ),v o i d
+ g e t R o w s( ),i n t
+ se t R o w s( r o w s,i n t ),v o i d
+ g e t L i n e C o u n t ( ),i n t
+ g e t T a b S i z e ( ),i n t
+ se t T a b S i z e ( si z e,i n t ),v o i d
+ g e t L i n e W r a p ( ),b o o l e a n
+ se t L i n e W r a p ( w r a p,b o o l e a n ),v o i d
+ g e t W r a p S t y l e W o r d ( ),b o o l e a n
+ se t W r a p S t y l e W o r d ( w o r d,b o o l e a n ),v o i d
C r e a t e s a d e f a u l t e m p t y t e x t a r e a,
C r e a t e s a n e m p t y t e x t a r e a w i t h t h e s p e c i f i e d n u m b e r o f r o w s a n d c o l u m n s,
C r e a t e s a n e w t e x t a r e a w i t h t h e s p e c i f i e d t e x t d i s p l a y e d,
C r e a t e s a n e w t e x t a r e a w i t h t h e s p e c i f i e d t e x t a n d n u m b e r o f r o w s a n d c o l u m n s,
A p p e n d s t h e s t r i n g t o t e x t i n t h e t e x t a r e a,
I n se r t s st r i n g s i n t h e s p e c i f i e d p o si t i o n i n t h e t e x t a r e a,
R e p l a c e s p a r t i a l t e x t i n t h e r a n g e f r o m p o si t i o n st a r t t o e n d w i t h st r i n g s,
R e t u r n s t h e n u m b e r o f c o l u m n s i n t h i s t e x t a r e a,
S e t s t h e n u m b e r o f c o l u m n s i n t h i s t e x t a r e a,
R e t u r n s t h e n u m b e r o f r o w s i n t h i s t e x t a r e a,
S e t s t h e n u m b e r o f r o w s i n t h i s t e x t a r e a,
R e t u r n s t h e a c t u a l n u m b e r o f l i n e s c o n t a i n e d i n t h e t e x t a r e a,
R e t u r n s t h e n u m b e r o f c h a r a c t e r s u se d t o e x p a n d t a b s i n t h i s t e x t a r e a,
S e t s t h e n u m b e r o f c h a r a c t e r s t o e x p a n d t a b s t o,( d e f a u l t,8 )
I n d i c a t e s w h e t h e r t h e l i n e i n t h e t e x t a r e a i s a u t o m a t i c a l l y w r a p p e d,
S e t s t h e l i n e - w r a p p i n g p o l i c y o f t h e t e x t a r e a,( d e f a u l t,f a l se )
I n d i c a t e s w h e t h e r t h e l i n e i s w r a p p e d o n w o r d s o r c h a r a c t e r s,
S e t s t h e s t y l e o f w r a p p i n g u se d i f t h e t e x t a r e a i s w r a p p i n g l i n e s,T h e d e f a u l t
v a l u e i s f a l se,w h i c h i n d i c a t e s t h a t t h e l i n e i s w r a p p e d o n c h a r a c t e r s,
jav a x,s w ing,text,JTex tC o mp o n en t
JTextArea构造方法
JTextArea(int rows,int columns)
创建指定行、列数的文本区
JTextArea(String s,int rows,int
columns)
创建指定行、列数以及内容的文本区
Example 7.3.5 使用文本区
编写程序,在一个标签上显示图片,在另一个标签上显示标题,在一个文本区中显示文本。
D e s c ri ption P a ne l
- j l b l I m a g e,J L ab e l
- j l b l T i t l e,J L a b e l
- j t aT e x t Desc r i p t i o n,J T e x t Ar ea
+s etI m a g e I co n ( i co n,I m a g eI co n ),v o i d
+s etT i t l e( t i t l e,S t r i n g ),v o i d
+s etT ex t Desc r i p t i o n ( t e x t,S t r i n g ),v o i d
+g etM i n i m u m S i ze ( ),D i m e n s i o n
1
T e x t A re a D e m o
J P a ne l
- ch a r t o k e n
+g et T o k e n
+s etT o k e n
+p ain t Co m p o n e t
+ m o u s eC l i c k ed
J Fra m e
- ch a r t o k e n
+g et T o k e n
+s etT o k e n
+p ain t Co m p o n e t
+ m o u s eC l i c k ed
1
TextAreaDemo
组合框 JComboBox
组合框也叫选择列表或下拉列表,使用它可以限制用户的选择范围并能避免对输入数据有效性的繁杂检查。
j a v a x.s w i ng,JC o m boB ox
+ J C om b oB o x ( )
+ J C om b oB o x ( i t e m s,O bj e c t [ ] )
+ a dd I t e m ( i t e m,O bj e c t ),vo i d
+ g e t I t e m A t ( i n de x,i nt ),O bj e c t
+ g e t I t e m C ou nt ( ),i n t
+ g e t S e l e c t e d I nd e x ( ),i nt
+ s e t S e l e c t e d I n de x ( i n de x,i n t ),vo i d
+ g e t S e l e c t e d I t e m ( ),O bj e c t
+ s e t S e l e c t e d I t e m ( i t e m,O bj e c t ),vo i d
+ r e m ov e I t e m ( a n O b j e c t,O bj e c t ),vo i d
+ r e m ov e I t e m A t ( a nI nd e x,i n t ),vo i d
+ r e m ov e A l l I t e m s ( ),vo i d
创建一个默认的空组合框创建包含指定数组元素的组合框添加一个项目到该组合框返回指定序号的项目返回该组合框中项目的个数返回该组合框中选中项目的序号设置该组合框中选中项目的序号返回选中的项目设置该组合框中选中的项目从该组合框中删除一个项目从该组合框中删除指定序号的项目删除该组合框的所有项目
j av ax,sw i ng.J C om pon e nt
使用 itemStateChanged处理
public void itemStateChanged(ItemEvent e) {
// Make sure the source is a combo box
if (e.getSource() instanceof JComboBox)
String s = (String)e.getItem();
}
JComboBox可以引发 ActionEvent和 ItemEvent事件。选中一个新的项目时,组合框会产生两次 ItemEvent事件,一次是取消前一个项目,另一次是选中当前项目。要响应 ItemEvent事件,需要实现接口方法 itemStateChanged(ItemEvent e)来处理选择。要从组合框的菜单中获取数据,可以使用 getSelectedItem()方法返回已经选定的项目,或者使用 e.getItem()方法从 itemStateChanged(ItemEvent e)中获取项目。
Example 7.3.6,使用组合框问题:编写程序,
通过选择组合框中的国家,用户可以浏览相应国旗的图像和介绍。
ComboBoxDemo
列表框 JList
列表框的作用与组合框基本相同,但它允许用户选择一个或多个项。
j av ax,s w i n g,J L is t
+ JL i st ( )
+ JL i st ( i t e ms,O b j e c t [ ] )
+ g e t Se l e c t e d I n d e x ( ),i n t
+ se t Se l e c t e d I n d e x ( i n d e x,i n t ),v o i d
+ g e t Se l e c t e d I n d i c e s( ),i n t [ ]
+ se t Se l e c t e d I n d i c e s( i n d i c e s,i n t [ ] ),v o i d
+ g e t Se l e c t e d V a l u e ( ),O b j e c t
+ g e t Se l e c t e d V a l u e s( ),O b j e c t [ ]
+ g e t V i si b l e R o w C o u n t ( ),i n t
+ se t V i si b l e R o w C o u n t ( c o u n t,i n t ),v o i d
+ g e t Se l e c t i o n B a c k g r o u n d ( ),C o l o r
+ se t Se l e c t i o n B a c k g r o u n d ( c,C o l o r ),v o i d
+ g e t Se l e c t i o n F o r e g r o u n d ( ),C o l or
+ se t Se l e c t i o n F o r e g r o u n d ( c,C o l o r ),v o i d
+ g e t Se l e c t i o n M o d e ( ),i n t
+ se t Se l e c t i o n M o d e ( se l e c t i o n M o d e,i n t ),
C r e a t e s a d e f a u l t e m p t y l i st,
C r e a t e s a l i s t t h a t c o n t a i n s t h e e l e m e n t s i n t h e s p e c i f i e d a r r a y,
R e t u r n s t h e i n d e x o f t h e f i r st se l e c t e d i t e m,
Se l e c t s t h e c e l l a t t h e sp e c i f i e d i n d e x,
R e t u r n s a n a r r a y o f a l l o f t h e se l e c t e d i n d i c e s i n i n c r e a si n g o r d e r,
Se l e c t s t h e c e l l s a t t h e sp e c i f i e d i n d i c e s,
R e t u r n s t h e f i r st se l e c t e d i t e m i n t h e l i st,
R e t u r n s a n a r r a y o f t h e v a l u e s f o r t h e se l e c t e d c e l l s i n i n c r e a si n g i n d e x o r d e r,
R e t u r n s t h e n u m b e r o f v i si b l e r o w s d i sp l a y e d w i t h o u t a sc r o l l b a r,( d e f a u l t,8 )
S e t s t h e p r e f e r r e d n u mb e r o f v i si b l e r o w s d i sp l a y e d w i t h o u t a s c r o l l b a r,
R e t u r n s t h e b a c k g r o u n d c o l o r o f t h e se l e c t e d c e l l s,
Se t s t h e b a c k g r o u n d c o l o r o f t h e se l e c t e d c e l l s,
R e t u r n s t h e f o r e g r o u n d c o l o r o f t h e se l e c t e d c e l l s,
Se t s t h e f o r e g r o u n d c o l o r o f t h e se l e c t e d c e l l s,
R e t u r n s t h e se l e c t i o n mo d e f o r t h e l i st,
Se t s t h e se l e c t i o n mo d e f o r t h e l i s t,
ja va x,s wi n g,JCo mp o n en t
使用 valueChanged 处理
JList触发 javax.swing.event.ListSelectionEvent事件,通知用于处理选择的监听器,该监听器实现
javax.swing.event.ListSelectionListener接口,调用接口方法 valueChanged处理事件。
Example 7.3.7,使用列表框问题:编写程序,
用户可以在列表框中选择国家,程序在标签中显示选定国家的国旗。
ListDemo
滚动条 JScrollBar
滚动条是一个控制器,它扩大用户选择范围。
j av ax,s w i n g,J Scr o llB ar
+ JS c r o l l B a r ( )
+ JS c r o l l B a r ( o r i e n t a t i o n,i n t )
+ JS c r o l l B a r ( o r i e n t a t i o n,i n t,v a l u e,i n t,
e x t e n t,i n t,m i n,i n t,ma x,i n t )
+ g e t B l o c k I n c r e me n t ( ),i n t
+ se t B l o c k I n c r e me n t ( i n c r e me n t,i n t ),v o i d
+ g e t M a x i m u m( ),i n t
+ se t M a x i mu m( ma x i m u m,i n t ),v o i d
+ g e t M i n i m u m( ),i n t
+ se t M i n i mu m( mi n i m u m,i n t ),v o i d
+ g e t O r i e n t a t i o n ( ),i n t
+ se t O r i e n t a t i o n ( o r i e n t a t i o n,i n t ),v o i d
+ g e t U n i t I n c r e me n t ( ),i n t
+ se t U n i t I n c r e m e n t ( i n c r e me n t,i n t ),v o i d
+ g e t V a l u e ( ),i n t
+ se t V a l u e ( i n t v a l u e ),v o i d
+ g e t V i si b l e A mo u n t ( ),i n t
+ se t V i si b l e A m o u n t ( e x t e n t,i n t ),v o i d
C r e a t e s a d e f a u l t v e r t i c a l sc r o l l b a r,
C r e a t e s a s c r o l l b a r w i t h t h e sp e c i f i e d o r i e n t a t i o n,
C r e a t e s a s c r o l l b a r w i t h t h e s p e c i f i e d o r i e n t a t i o n,v a l u e,e x t e n t,m i n i mu m,a n d
ma x i mu m,
R e t u r n s t h e b l o c k i n c r e me n t,
Se t s a n e w b l o c k i n c r e me n t,( d e f a u l t,1 0 )
R e t u r n s t h e ma x i mu m v a l u e r e p r e se n t e d b y t h e sc r o l l b a r,
Se t s a n e w ma x i mu m,( d e f a u l t,1 0 0 )
R e t u r n s t h e mi n i mu m v a l u e r e p r e se n t e d b y t h e sc r o l l b a r,
Se t s a n e w mi n i m u m,( d e f a u l t,0 )
R e t u r n s t h e o r i e n t a t i o n o f t h e sc r o l l b a r,
Se t s a n e w o r i e n t a t i o n f o r t h e s c r o l l b a r,
R e t u r n s t h e u n i t i n c r e me n t i n t h e sc r o l l b a r,
Se t s a n e w u n i t i n c r e me n t i n t h e sc r o l l b a r,
R e t u r n s t h e c u r r e n t v a l u e r e p r e se n t e d b y t h e sc r o l l b a r,
Se t s a n e w c u r r e n t v a l u e r e p r e se n t e d b y t h e sc r o l l b a r,
R e t u r n s t h e v i si b l e a mo u n t i n t h e s c r o l l b a r,
Se t s a n e w v i si b l e a mo u n t f o r t h e sc r o l l b a r,( d e f a u l t,1 0 )
ja va x,s wi n g,JCo mp o n en t
Scroll Bar 属性
Bu b b l e
U n i t i n cr em e n t
Bl o c k d e crem e n t Bl o c k i n crem e n t
M i n i m al v al u e M a x i m al v al u e
U n i t d ec r e m e n t
使用 adjustmentvalueChanged处理
JScrollBar触发 java.awt.event.AdjustmentEvent事件,通知用于处理的监听器,该监听器实现 java.awt.event,
AdjustmentListener接口,调用接口方法
adjustmentvalueChanged处理事件。
Example 7.3.8,使用滚动条问题:编写一个程序,
利用水平和垂直滚动条来控制面板中显示的信息。水平滚动条用于左右移动信息,
垂直滚动条用于上下移动信息。
ScrollBarDemo
滑动块 JSlider
JSlider与 JScrollBar类似,但是 JSlider具有更多的属性和更多的显示形式。
j a v a x,s w i n g,J Slid e r
+ JSl i d e r ( )
+ JSl i d e r ( mi n,i n t,ma x,i n t )
+ JSl i d e r ( mi n,i n t,ma x,i n t,v a l u e,i n t )
+ JSl i d e r ( o r i e n t a t i o n,i n t )
+ JSl i d e r ( o r i e n t a t i o n,i n t,m i n,i n t,ma x,
i n t,v a l u e,i n t )
+ g e t I n v e r t e d ( ),b o o l e a n
+ se t I n v e r t e d ( b,b o o l e a n ),v o i d
+ g e t M a j o r T i c k Sp a c i n g ( ),i n t
+ se t M a j o r T i c k S p a c i n g ( n,i n t ),v o i d
+ g e t M i n o r T i c k S p a c i n g ( ),i n t
+ se t M i n o r T i c k S p a c i n g ( n,i n t ),v o i d
+ g e t M a x i m u m( ),i n t
+ se t M a x i mu m( ma x i m u m,i n t ),v o i d
+ g e t M i n i m u m( ),i n t
+ se t M i n i mu m( mi n i m u m,i n t ),v o i d
+ g e t O r i e n t a t i o n ( ),i n t
+ se t O r i e n t a t i o n ( o r i e n t a t i o n,i n t ),v o i d
+ g e t Pa i n t L a b e l s( ),b o o l e a n
+ se t Pa i n t L a b e l s( b,b o o l e a n ),v o i d
+ g e t Pa i n t T i c k s( ),b o o l e a n
+ se t Pa i n t T i c k s( b,b o o l e a n ),v o i d
+ g e t Pa i n t T r a c k ( ),b o o l e a n
+ se t Pa i n t T r a c k ( b,b o o l e a n ),v o i d
+ g e t V a l u e ( ),i n t
+ se t V a l u e ( i n t v a l u e ),v o i d
C r e a t e s a d e f a u l t h o r i z o n t a l sl i d e r,
C r e a t e s a h o r i z o n t a l sl i d e r u s i n g t h e s p e c i f i e d mi n a n d m a x,
C r e a t e s a h o r i z o n t a l sl i d e r u s i n g t h e s p e c i f i e d mi n,ma x,a n d v a l u e,
C r e a t e s a sl i d e r w i t h t h e s p e c i f i e d o r i e n t a t i o n,
C r e a t e s a sl i d e r w i t h t h e s p e c i f i e d o r i e n t a t i o n,mi n,ma x,a n d v a l u e,
R e t u r n s t r u e i f t h e v a l u e - r a n g e s h o w n f o r t h e sl i d e r i s r e v e r s e d,
Se t s t r u e t o r e v e r se t h e v a l u e - r a n g e,a n d f a l se t o p u t t h e v a l u e r a n g e i n t h e
n o r ma l o r d e r,( d e f a u l t,f a l se )
R e t u r n s t h e n u m b e r o f u n i t s b e t w e e n ma j o r t i c k s,
Se t s t h e n u mb e r o f u n i t s b e t w e e n ma j o r t i c k s,( d e f a u l t,0 )
R e t u r n s t h e n u m b e r o f u n i t s b e t w e e n mi n o r t i c k s,
Se t s t h e n u mb e r o f u n i t s b e t w e e n mi n o r t i c k s,( d e f a u l t,0 )
R e t u r n s t h e ma x i mu m v a l u e r e p r e se n t e d b y t h e sl i d e r,
Se t s a n e w ma x i mu m,( d e f a u l t,1 0 0 )
R e t u r n s t h e mi n i mu m v a l u e r e p r e se n t e d b y t h e sl i d e r,
Se t s a n e w mi n i m u m,( d e f a u l t,0 )
R e t u r n s t h e o r i e n t a t i o n o f t h e sl i d e r,
Se t s a n e w o r i e n t a t i o n f o r t h e sl i d e r,
R e t u r n s t r u e i f t h e l a b e l s a r e p a i n t e d a t t i c k m a r k s,
Se t s a B o o l e a n v a l u e t o d e t e r mi n e w h e t h e r l a b e l s a r e p a i n t e d,( d e f a u l t,f a l se )
R e t u r n s t r u e i f t h e t i c k s a r e p a i n t e d o n t h e sl i d e r,
Se t s a B o o l e a n v a l u e t o d e t e r mi n e w h e t h e r t i c k s a r e p a i n t e d,( d e f a u l t,f a l se )
R e t u r n s t r u e i f t h e t r a c k a r e p a i n t e d o n t h e sl i d e r,
Se t s a B o o l e a n v a l u e t o d e t e r mi n e w h e t h e r t r a c k s a r e p a i n t e d,( d e f a u l t,t r u e )
R e t u r n s t h e c u r r e n t v a l u e r e p r e se n t e d b y t h e sl i d e r,
Se t s a n e w v a l u e r e p r e se n t e d b y t h e sl i d e r,
ja v a x,sw in g,J Co m p o n e n t
JSlider允许用户以图形方式在指定的区间中选择一个数值
。滑动块可以在主标记以及次标记之间滑动。标记间的像素值是由 setMajorTickSpacing和 setMinorTickSpacing方法控制。 Slider可以带或不带标记,也可以有或没有标签
,可以水平显示或垂直显示。
用户改变滑动块的值时,滑动块产生
javax.swing.event.ChangeEvent的一个实例,通知实现
ChangeListener接口的监听器,调用 stateChanged方法处理
Example 7.3.9,Using Sliders
问题:重写前面的程序,使用滑动块代替滚动条,控制在面板上显示的信息。
SliderDemo
创建多个窗口
有时需要在一个应用程序中创建多个窗口。程序新开一个窗口执行指定任务,新开的窗口叫做子窗口,主框架叫主窗口。
从应用程序创建一个子窗口,需要创建 JFrame
的一个子类,用于定义任务和通知新窗口做什么。然后,在程序中创建该子类的一个实例,
通过把它设为可见的即可弹出新窗口。
Example 7.3.10 创建多个窗口
问题:编写程序,创建一个主窗口,它有一个在滚动窗格上的文本区和一个叫,Show Histogram”的按钮。用户点击该按钮时,弹出新窗口,显示文本区中字母出现次数的直方图。
MultipleWindowsDemo Histogram