Java中GUI—Swing组件

时间:2023-01-27 13:18:38

几乎所有的我们在javaGUI中用到的所有的组件(组件是几乎所有的GUI中东西的统称)都继承自java.awt.Component类;几乎所有的具有容器性质的组件都继承自java.awt.Container类,而且这些组件中一般还会含有这样的成员对象,什么样的成员对象呢?——Container类或继承自Container类的对象

为了能够将GUI掌握,我们会将几乎所有的组件加以介绍,主要是将这些组件的基本功能加以介绍,这样在遇到实际问题时,能够知道用什么组件进行解决,至于每个组件具体的方法当然就不能完全列出来了,可以查阅官方文档加以了解

一、首先要了解java中事件的处理模型——委托事件模型

其中主要的就是说:当一个具体的组件产生一个事件时,这个组件就会将产生的事件对象传递给监听这个组件的事件监听对象——称之为这个组件的事件监听器,有对象来处理这个事件;

二、接下来我们就开始介绍这些组件(是否将《雍俊海》的P243中的——整体介绍写到这个部分的开始)

《》JFrame框架(顶层容器)——javax.swing.JFrame

(1)这个框架主要是用于创建java应用程序窗口的一个顶层容器

(2)构造方法

public JFrame() throws HeadlessException

public JFrame(String title) throws HeadlessException

创建一个视觉上不可见的初始框架(在执行时只会出现一个空的windows窗口);String title 可以指定创建的窗口的标题;

需要注意的是,一般我们并不是直接用JFrame来创建一个窗口对象,而是创建一个继承JFrame的子类,因为这样我们不仅能够使用JFrame中的方法,同时还能够拥有自己的方法,这样就能够更好的使用这个框架了

(3)JFrame中有一个专门用于关闭窗口的方法

public void setDefaultCloseOperation( int opration)

opration一般设为JFrame中的常量JFrame.EXIT_ON_CLOSE ;

只要在代码中调用了这个方法,那么在点击窗口上的关闭按钮时就能够将程序正常的关闭,(虽然不写入这个方法,也能够关闭窗口,但是有时是不能够将程序关闭的,即窗口不见了,但是程序还在运行)

(4)public void setSize(int ,int) //设置窗口的大小

     public void setVisible(boolean)//设置窗口是否可见

(5)接下来我们就能够在JFrame的子类中添加各种组件了,在添加组件之前我们需要为他设置一种布局管理器,方法有两种

一种是直接使用JFrame中的成员方法:

public void setLayout(LayoutManager mgr)

但是实际中我们最常用的方法是:

比如我们应经创建了一个继承了JFrame 的子类对象—MyFrame

则Container coner = myFrame.getContentPane() ;

   coner.setLayout(new FlowLayout());

这是因为在JFrame中含有一个继承自Container容器的成员域,通过使用getContentPane方法就能够返回这个成员域,由于在Container类中也有setLayout()方法,所以这样作也是有道理的,这两个方法分别为:

public Container getContentPane() ;

public void setLayout(LayoutManager mgr) ;

有必要说明的是在JFrame框架中,默认的布局管理器是BorderLayout管理器

(6)public Component add(Component comp) ;

这个方法是用来在窗口中添加组件的,非常的常用

《》JLabel标签(控件)

(1)标签实际上也是一种容器,它也继承了java.awt.container类,在java中它属于一种叫做“不可编辑的信息组件”,在标签中我们可以向其中添加文字和图片,但是我们是能够更改这些文字和图片的,“不可编辑性”体现在他不能像文本编辑框那样“实时更新”

 

(2)构造方法

public JLabel(String text ) ;

public JLabel(Icon icon) ;

public JLabel(String text , Icon icon,int horizon);

text——指定文本文字

icon——指定添加的图片

horizon——指定文字和图片在水平方向上的对齐方式

注意:①Icon类型是一个有关图像的接口,ImageIcon是他的一个子类,所以我们可以将icon指定为一个ImageIcon的实例对象

通过public ImageIcon(String filename) ;等构造方法就能够方便的创建出ImageIcon 对象了,其中的filename代表指定的图片文件名;

②另外一点是:在JLabel类中有很多用于设定添加到标签中的文字和图片的对齐方式的成员方法,我们就不在介绍了,可以查阅官方文档,在这些方法方法中,常常需要用JLabel中 的静态常量来指定方式:JLabel.LEFT/JLabel.RIGHT/JLabel.CENTER等等,可以查阅官方文档

(3)public void setText(String text) //设置标签中的文字内容

pubic void setIcon(Icon icon)//设置标签中的图片

 

 

 

(4)public void setToolTipText(String text)

这个方法非常的有用,当我们在调用了这个方法后,就能够出现这样的效果——当鼠标在标签上稍加停留时,就会在标签上出现

String text指定的文字信息

《》JDialog和JOptionPane对话框(*容器)

对话框就是某个窗口的子窗口,首先介绍JDialog类

(1)构造方法

public JDialog(Dialoge ower,String title,boolean modal);

public JDialog(Frame ower,String title,boolean modal) ;

ower——指定当前窗口的父窗口

title——指定当前窗口的标题

modal——指定当前窗口的模式

说明:所谓的对话框模式就是当前窗口和父窗口的激活状态,

当modal为true时,那么对话窗口为有模式状态,即当调出子窗口后,父窗口是处于非激活状态的,反之,当modal为false时,对话窗口处于无模式状态,子窗口和父窗口同时处于激活状态,当关闭父窗口时,子窗口也一并被关闭;

(2)和JFrame一样 JDialog也有设置属性的方法,如setSize()

,getContentPane(),setLayout()等等方法;当我们调用setVisible()方法时,可以显示对话窗口

(3)public Component add(Component comp);

 

接下来介绍JOptionPane类,通过调用这个类中的一些静态方法,就能够创建一些现成的模式对话框,这些模式对话框非常的简单,当我们需要创建一些非常简单的对话框时,可以直接使用这些方法来创建,所以一般不是通过继承这个类,之后来创建对话框;

——消息对话框

(1)public static void showMessageDialog

(Component  parentCompoent,Object message)throws………..

(2)public static void showMessageDialog

(Component  parentCompoent,Object message ,

String title, int messageType)throws………..

(3)public static void showMessageDialog

(Component  parentCompoent,Object message ,

String title, int messageType , Icon icon)throws………..

parentComponent——指定父窗口

message——指定显示的内容

title——指定标题

massageType——指定对话框显示的消息类型

icon——指定对话框中的消息类型的图标

说明:所谓的消息类型指的是,在消息对话框中有很都类型,比如说错误消息类型的消息对话框(JOptionPane.ERROR_MESSAGE)

信息类型的消息对话框(JOptionPane.INFORMATION_MESSAGE)

警告消息类型的消息对话框(JOptionPane.WARNING_MESSAGE)

疑问类型的消息对话框

(JOptionPane.QUESTION_MESSAGE)

简单消息类型的消息对话框

(JOptionPane.PLAIN_MESSAGE)

不同消息类型的消息对话框在外型上基本一样,只是会采用不同的图标来表示不同的消息类型

——确认对话框

public static int showConfirmDialog

(Component parentComponent,Object message

String title ,int optionType,int messageType,

Icon icon)throws…….

这参数最全的一个确认对话框的静态方法,至于其他的部分参数的方法,查阅官方文档就行了

parentComponent、message、title、messageType、icon参数和上面的方法完全一样

optionType——对话框的选项模式

由于确认对话框中会有像“确定”“取消”“是否”等按钮,这些按钮的不同组合就构成了,对话框的选项模式,参数有静态常量指定:

JOptionPane.TES_NO_OPTION //只含有“是”“否”选项

JOptionPane.TES_NO_CANCEL_OPTION//还含有取消选项

上面的方法会根据所点击的选项的不同,返回不同的整型值

-1——当直接关闭对话框而不做任何选择时

0——单击“是”

1——单击“否”

2——单击“取消”

——文本输入对话框

public static String showInputDialog

(Component parentComponent ,Object message,

String title,int messageType)throws………

这也是参数最全的一个方法,参数的意思和上面的一样,只是会返回在输入框中输入的字符串

——选择输入对话框

public static Object showInputDialog

(Component parentComponent ,Object message,

String title,int messageType,Icon icon,

Object[] selectionValuse,Object initialSelectionValue)throws………

Object[] selectionValues——一般是String型的字符数组,用来指定候选的字符数组选项;

Object initialSelectionValue——指定框中的初始字符串

该方法会返回选定的字符串,当然,如果直接”取消”,则返回null

Java中GUI—Swing组件

《》JTextField和JPasswordField文本编辑框(控件)

——JTextField

(1)构造方法

public JTextField()

public JTextField(String text) ;

public JTextField(int columns);

public JtextField(String text , int columns) ;

text——指定初始文本

columns——指定文本编辑框的长度

——JPasswordField

(1)构造方法

public JPasswrodField()

public JPasswrodField(String text)

public JPasswrodField(int columns)

public JPasswrodField(String ,int columns)

参数意义一样,只不过在文本框中是以密码的形式展现的“*********”

应该还能够指定密文显示字符的类型,可以查阅官方文档

两个类中都有

public String getText()

public void setText()

public void setEditable(boolean)

//用于指定文本框是否可编辑

还有一个有用的成员方法:

public boolean requestFocusInWindow()

当当前的文本框调用这个方法后,光标就会自动的回到当前的对话框中,有些软件中会有这样的效果,比如QQ中,当我们在输入框汇中输入一段话后,按下回车,这时光标马上又从上面的显示框中回到了输入框中,对于用户来说非常的方便

《》JButton命令式按钮/

JCheckBox复选框/

JRadioButton单选按钮/

首先我们先将“按钮系统的继承关系图”展示如下:

Java中GUI—Swing组件

Java中GUI—Swing组件

——JButton

构造方法:

public JButton() ;

public JButton(Icon icon)

public JButton(String text) ;

public JButton(String text,Icon icon) ;

//实际上JButton也是一个容器,可以容纳图片和文字

——JCheckBox

构造方法

public JCheckBox();

public JCheckBox(Icon icon);

public JCheckBox(Icon icon,boolean selected);

public JCheckBox(String text);

public JCheckBox(String text,boolean);

public JCheckBox(String text,Icon icon,boolean selected);

——JRadioButton

构造方法:

public JRadioButton(String text,Icon icon,

boolean selected) ;

//这是参数最全的一个方法

——三个类的共有方法

public void setSelected(boolean ) ;

public boolean inSelected() ;

此外需要注意的是,像单选按钮JRadioButton这样的一组按钮,大都是选中一个,其他的全部自动反选,那么这就需要将一组单选按钮联动起来,这要通过一个类——ButtonGroup类来实现,方法如下:

 

 

JRadioButton bt1 = new JRadioButton();

JRadioButton bt2 = new JRadioButton();

JRadioButton bt3 = new JRadioButton();

ButtonGroup rg = new ButtonGroup() ;

rg.add(bt1); rg.add(bt2); rg.add(bt3);

这样一来这三个按钮就能够形成一种联动

ButtonGroup类的两个方法为:

public ButtonGroup() ;  //构造方法

public void add(AbstractButton b) ;//将按钮添加到这个按钮组中,形成联动

《》JComboBox下拉式选择框/

JList列表框/

JTextArea文本区域框/

JScrollPane滚动窗格/

——JComboBox

(1)构造方法:

public JComboBox(Object [ ] item);

//一般使用String型的对象作为选项

(2)public void setEditable(boolean )

设置当前的下拉框中是否可以自行输入文本信息;

如果设为false,那么就只能够在下拉框中选择,而不能够自行输入内容;

(3)public void setMaximumRowCount(int count)

设置下拉框中能够显示的最大行数,如果选项数多于count的话,下拉式列表中就会自行显示滚动条

(4)public void setSelectedIndex(int anIndex);

通过选项的所在位置数,设置被选中的选项

(5)public void setSelectedItem(Object anObject);

通过选项对象,设置被选中的选项

(6)public int getSelectedIndex();

      public Object getSelectedIntdex() ;

Java中GUI—Swing组件

——JList列表框

(1)构造方法

public JList(Object[ ]listData)

//参数指定列表框中的所有的选项

(2)public setSelectionMode(int selecttionMode)

//设定列表框的选择模式,参数指定了所用的模式:

ListSelectionModel.SINGLE_INTERVAL_SELECTION

//指定的常量代表,只能够在列表框中选中其中一项或者一些连续的项

ListSelectionModel.MULTIPLE_INTERVAL_SELECTION

指定的常量代表可以在选项框中选择若干非连续项

(3)public void setSelectedIndex( int index)

public void setSelectedIndices( int[ ] indices)

//选定数组指定的所有项

public void setSelectedInterval(int anchor,int lead)

//将下标从anchor到lead之间的所有选项全部选中

(4)public int getSelectedIndex()

public int[ ] getSelectedIndices()

public Object getSelectedValue()

public Object [ ] getSelectedValues()

Java中GUI—Swing组件

——JTextArea文本区域框

实际上文本区域框就是用来在窗口中显示文字的一个控件,单独所谓创建一个文本区域框是非的简单的,由于文字的内容可能非常的多,所以我们就想要有一个滑动条来解决问题;所以通常我们将JTextArea和JScrollPane(滚动窗格)配合使用,接下来就分别介绍这两种控件

(1)文本区域框的构造方法

public JTextArea(String text , int rows , int colums);

rows和colums分别指定行数和列数,text指定显示的文本

(2)JScrollPane(滚动窗格)的构造方:

public JScrollPane(Component view) ;

可见我们不仅能够将一个文本区域框放入到滚动窗格中,还能够将其他的Component型的对象放到其中

例如:

JFrame myFrame = new JFrame();

JTextArea myArea = new (“You are right”,20,10) ;

JScrollPane myPane = new JScrollPane(myArea) ;

myFrame.add(myPane) ;

这样就能够将带有滚动窗格的文本框显示到框架中了

在JTextArea成员方法中有这样一个方法:

public void setCaretPosition(int position) ;

效果是,将光标置于JTextArea文本框中由position指定的位置;

当position=0时,光标指到所有文字的最前面

当position为当前文本框中的字符总数时,光标指到所有文字的最后面;

将这在和JScrollPane配合使用时非常的有用,比如QQ中当我们输入一段话后,按下回车,这段话将显示在上面的显示框中,这时我们调用这个方法,使光标被指到文字最后,就能够自动的将滚动条滚动到当前我们刚刚输入的文字处,让用户感到非常的方便

(3)其他的方法我们就不在多讲,查阅官方文档

《》JSlider(滑动条)和JPanel(普通面板)

——JSlider

Java中GUI—Swing组件

(1)构造方法

public JSlider( int min, int max,int value);

public JSlider(int orientation,int min,int max,int value) ;

其中min和max 用来设定滑动条的最大值和最小值,value用来指定当前的滑动条的滑动位置,参数orientation指定滑动条的摆放的方向,有一些静态常量来指定:

JSlider.HORIZONTAL//水平方向放置

JSlider.VERTICAL//竖直方向放置

(2)public void setValue(int n);

     public int getValue() ;

——JPanel

(1)public JPanel()

(2)public void setPreferredSize(Dimension preferredSize)

这个方法是用来设定创建的面板的大小的,其中的Dimension类是专门用来创建一种代表大小的对象的,这一点非常的有趣,在java的GUI中,有非常多的类是专门用来创建平时非常常见的数据对儿的,如:尺寸对象(Dimension),点对象(Point),图片对象(ImageIcon)等等;

Dimension类的构造方法:

pubic Dimension(int width , int height);

(3)public void setBackground(Color bg) ;

//设置面板的背景颜色,需要注意的是除了可以自己创建Color的对象之外,在Color中还有许多的静态的常量Color对象,这些对象是系统已经设置好的颜色对象,如Color.GREEN就是绿色