一、 swing组件和容器概览




1.顶层容器(JFrame,JDialog,JApplet)


    JFrame—框架,主要用来设计应用程序的图像界面


    JDialog—对话框,通常用来设计具有依赖关系的窗口


    JApplet—小应用程序,主要用来设计嵌入网页中运行的java程序


2.一般容器


    普通容器(JPanel、JScrollPane、JToolbar、JSplitPane、JTabbedPane)


        JPanel—面板,通常只有背景颜色的普通容器


        JScrollPane—滚动窗格,具有滚动条


        JToolbar—工具条,通常将多个组件排成一排或者一列


        JSplitPane—分裂窗格,用来装两个组件的容器


        JTabbedPane—选项卡窗格,允许多个组件共享相同的界面空间


    专用容器(JLayeredPane、JRootPane 、JInternalFrame)


        JLayeredPane—分层窗格,给窗格增加了深度的概念


        JRootPane—根窗格,一般是自动创建的容器


        JInternalFrame—内部窗格,可以在一个窗口内显示若干个类似于框架的窗口


3.基本控件


    (JButton、JCombobox、JList、JMenu、JSlider、JTextField)


4.不可编辑信息组件


    (JLabel、JProgressBar、JToolTip等)


5.可编辑组件


    (JColorChooser、JFileChooser、Jtabel、JTextArea、JTree等)


二、 常用的swing组件和容器
1.JFrame


    2 顶层容器,默认不可见;默认布局方式为BorderLayout


    2 构造函数:


        l JFrame()


        l JFrame(String title)//title 为框架的标题内容


    2 JFrame常用方法


        l setDefaultCloseOperation(int operation)—设置关闭框架的行为


        参数operation一般是JFrame. EXIT_ON_CLOSE,表示关闭框架时,则退出程序


        l setSize(int width, int height)— 设置框架的大小


        l setVisible(boolean b)—设置框架是否可见,默认为false


        l getContentPane()—获取顶层容器的内容面板


        l add(Component comp)—往内容面板添加组件


        l setLayout(LayoutManager mgr)—设置布局方式,默认为BorderLayout


example:JDialog 和 JOptionPane的demo






2.JDialog 和 JOptionPane


a) JDialog


    2 在已有的窗口上创建对话框,可以使用此类创建自定义的对话框


    2 构造函数:


        JDialog(Dialogowner,Stringtitle, boolean modal)


        JDialog(Frameowner,Stringtitle, boolean modal)


        参数:owner—指定对话框的父窗口


                title—对话框的标题


                modal—对话框的模式(true为“有模式对话框”,false为“无模式对话框”


    2 JDialog常用方法


        n setSize(int width, int height)— 设置对话框的大小


        n getContentPane()—获取顶层容器的内容面板


        n add(Component comp)—往内容面板添加组件


        n setLayout(LayoutManager mgr)—设置布局方式,默认为BorderLayout


b) JOptionPane


    2 提供一些现成的、各种常用的标准对话框(有模式的对话框)


    2JOptionPane类里静态方法众多,但几乎所有静态方法都遵循showXxxDialog()的形式,如下:


方法名    


描述


showConfirmDialog()


显示确认对话框


showInputDialog()


显示输入文本对话框


showMessageDialog()


显示信息对话框


showOptionDialog()


显示选择性的对话框


        这四种方法的参数都遵循一致的模式:


        ①ParentComponent:指示对话框的父窗口对象,一般为当前窗口。也可以为null即采用缺省的Frame作              为父窗口,此时对话框将设置在屏幕的正中。


        ②message:指示要在对话框内显示的描述性的文字


        ③String title:窗口标题


        ④Component:在对话框内要显示的组件(如按钮)


        ⑤Icon:在对话框内要显示的图标


        ⑥messageType:定义 message 的样式,一般可以为如下的值


                n ERROR_MESSAGE


                n INFORMATION_MESSAGE


                n WARNING_MESSAGE


                n QUESTION_MESSAGE


                n PLAIN_MESSAGE


        ⑦ optionType:定义在对话框的底部显示的选项按钮的集合。一般可以为


                n DEFAULT_OPTION


                n YES_NO_OPTION


                n YES_NO_CANCEL_OPTION


                n OK_CANCEL_OPTION。


    2 当showXxxDialog 方法返回整数时,可能的值为:


        n YES_OPTION


        n NO_OPTION


        n CANCEL_OPTION


        n OK_OPTION


        n CLOSED_OPTION


3.JLabel


    2 构造函数;


        n JLabel()


        n JLabel(String text)


        n JLabel(Icon image)


        n JLabel(String text, Icon icon, int horizontalAlignment)


其中参数text为JLabel的文字信息,image为JLabel的图标,horizontalAlignment为文字与图标在水平方向上的对齐方式,常见的取值有常量 JLabel.LEFT(左对齐),JLabel.CENTER(中对齐), JLabel.RIGHT(右对齐),


    2 JLabel常用方法:


        n setText(String text)—设置文字信息


        n setIcon(Icon image)—设置JLabel的图标


        n setHorizontalAlignment(int alignment)—设置文字与图标在水平方向的对齐方式


        n setVerticalAlignment(int alignment)—设置文字与图标在竖直方向的对齐方式


        n setToolTipText(String text)—在JLabel上停留时出现的提示信息


4.JTextField 和 JPasswordField


    2 都是用来编辑单行文本,JTextField可以直接看到输入的字符,JPasswordField将输入的字符表示成”*”


    2 构造函数:


JTextField()


JPasswordField()


JTextField(String text)


JPasswordField(String text)


JTextField(int columns)


JPasswordField(int columns)


JTextField(String text, int columns)


JPasswordField(String text, int columns)


    参数text指定文本编辑框显示的初始文本,columns为文本编辑框的宽度(大于0)。


       


    2 常用方法:


        getText()—获取编辑框的文本信息(String 类型)


        setText(String text)—设置文本信息


        setEditable(boolean b)—设置是否可编辑


5.JButton、JCheckBox(复选框)和JRadioButton(单选按钮)


    2 触击式组件(单击这三个组件,都能触发特定的的事件。)


        JButton——命令式事件 ·


        JCheckBox、JRadioButton—选择状态发生变化


    2 构造函数:


        JButton()


        JButton(Icon icon)


        JButton(String text)


        JButton(Stringtext,Iconicon)


JCheckBox()


JRadioButton()


JCheckBox(Stringtext,Iconicon, boolean selected)


JRadioButton(Stringtext,Iconicon, boolean selected)


参数text为指定组件显示的文本信息,icon为指定组件的图标,selected指定组件是否被选中






    2 JCheckBox、JRadioButton常用方法:


        setSelected(boolean b)—设置组件的选中状态


        isSelected()—判断组件时否被选中


     2 与ButtonGroup对象配合使用可创建一组按钮,一次只能选择其中的一个按钮。ButtonGroup提供的一个空的构造方法,使用成员方法add(AbstractButton b)添加单选按钮( JRadioButton是AbstractButton的子类)


     2 如果需要把多个JRadioButton排成一排或者一列,可以创建一个布局为GridLayout或者BoxLayout的JPanel。


        如:JPanel jpanel = new JPanel(new GridLayout(0,1));//排成一列


               jpanel.add(JRadioButton);


6.JComboBox(组合框),JList,JTextArea和JScrollPane


    2 用于显示多行文本的组件


    (一) JComboBox(组合框)


        2 构造函数:


            JComboBox(Object[] items)


            参数items为组合框的各个选项






        2 常用方法:


            setEditable(boolean aFlag)—设置组合框是否可以自行输入一行文本信息,默认为false。当为false时,只能选择组合框中的某个选项


            setMaximumRowCount(int count)—设置显示的最大行数


            setSelectedIndex(int anIndex)—选择索引第anIndex+1处的选项


            getSelectedIndex()—返回列表中与给定项匹配的第一个选项的下标值


            getSelectedItem()—返回当前所选项。


            getSelectedObjects()—返回包含所选项的数组。


(二) JList(列表框)


    2 构造函数:


        JList(Object[] listData)


        参数listData为列表框的各个选项


    2 常用方法:


        setSelectionMode(int selectionMode)—设置列表的选择模式。


        selectionMode常为以下常数:


            ListSelectionModel.SINGLE_SELECTION- 一次只能选择一个列表选项


            ListSelectionModel.SINGLE_INTERVAL_SELECTION- 一次只能选择一个连续间隔


            ListSelectionModel.MULTIPLE_INTERVAL_SELECTION –一次可选择一个或多个选项。此模式是默认设置。


        setSelectedIndex(int index)—设置被选中的选项


        getSelectedIndex()—返回最小的选择单元的索引


(三) JTextArea (文本区域)


    2 构造函数;


        JTextArea(Stringtext, int rows, int columns)


        构造具有指定文本text、rows行columns列的 TextArea


7.菜单编写


    2 相关的类:


        通过JMenuBar类(利用setJMenuBar()方法加入窗口中)


        JMenu(级联)


        JMenuItem(菜单项目)


        JCheckBoxMenuItem(选择性的菜单项目)


        JRadioButtonMenuItem(选择性的菜单项目(圆点))。


    2 编程要点:


        a)、产生快捷键


            mnuFileNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, ActionEvent.ALT_MASK));//快捷键alt+1


        b)、添加分割条


          mnuFile.addSeparator();


        c)、给菜单加上图标


            mnuFileNew.setIcon(newImageIcon("new.gif"));


       d)、给菜单加上助记符


            mnuFile.setMnemonic('F'); //alt+F


        e)、要使得多个JRadioButtonMenuItem项目产生单选的效果,可以将它们放入一个ButtonGroup组件中;否则为多选效果


        2 example:MenuLookDemo






8.工具条JToolBar


    2 在Swing中的窗口工具条是由JToolBar来实现,它也是一种容器并按照行或列对组件(它们一般为按钮)进行分组。


    2 缺省时为水平方向但可以使用SwingConstants. HORIZONTAL或者SwingConstants. VERTICAL来设置其方向。


    2 构造函数:


        n JToolBar() 创建出水平方向的工具条(缺省为HORIZONTAL)。


        n JToolBar(int orientation) 创建出指定方向的工具条。


        n JToolBar(String name) 创建出指定名称的工具条。


        n JToolBar(String name, int orientation) 创建出指定方向和名称的工具条。


    2 工具条上的工具按钮的事件编程: 
        类似于一般的按钮事件编程,可以分别为各个不同的按钮单独进行事件编程。


    2 编程方法:


        n 创建出JToolBar对象


        n 然后采用add(Object)方法将组件(可以为按钮或其它组件)加入到工具条中。


        n 最后再将工具条加入到内容面板中


    example:ToolBarDemo






9. JTabbedPane(选项卡窗格)






    2 特性:它表现为一组文件夹页,每个文件夹都有标题(如下)


    2 其内的每个页面为一个JPanel类或者其子类的对象


    2 构造函数:


        public JTabbedPane(int tabPlacement, int tabLayoutPolicy)


        其中Tabplacement可以是:


            2 JTabbedPane.TOP(表头在上面)


            2 JTabbedPane.BOTTOM(表头在下面)


            2 JTabbedPane.LEFT(表头在左面)


            2 JTabbedPane.RIGHT(表头在右面)。


         TablayoutPolicy可以是


            2 JTabbedPane.WRAP_TAB_LAYOUT(表头不产生SCROLL效果)


            2 JTabbedPane.SCROLL_TAB_LAYOUT(表头产生SCROLL效果)


    2 编程方法:


          创建出JTabbedPane类的对象;


        l 调用addTab()方法加入一个页面组件(JPanel或其子类);


        l 最后将JTabbedPane类的对象加入到顶级容器的ContentPane中。
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐