Swing组件和容器

组件从功能上可分为:
顶层容器:JFrame、JApplet、JDialog、JWindow共4个
中间容器:JPanel、JScrollPane、JSplitPane、JToolBar
特殊容器:在GUI上起特殊作用的中间层,如:JInternalFrame、JLayeredPane、JRootPane
基本控件:实现人机交互的组件,如JButton、JComboBox、JList、JMenu、JSlider、JTextField
不可编辑信息的显示:向用户显示不可编辑信息的组件,例如JLabel、JProgressBar、ToolTip
可编辑信息的显示:向用户显示能被编辑的格式化信息的组件,如:JColorChooser、JFileChoose、JFileChooser、JTable、JTextArea

JComponent类的特殊功能又分为:
1、边框设置:使用setBorder()方法可以设置组件外围的边框,使用一个EmptyBorder对象能在组件周围留出空白
2、双缓冲区:使用双缓冲技术能改进频繁变化的组件的显示效果
与AWT组件不同,JComponent组件默认双缓冲区,不必自己重写代码
若关闭双缓冲区,可执行setDoubleBuffered(false)
3、提示信息:使用setTooltipText()方法,为组件设置对用户有帮助的提示信息
4、键盘导航:使用registerKeyboardAction()方法,能使用户用
键盘代替鼠标来驱动组件
JComponent类的子类AbstractButton提供了便利的方法:用setMnemomic()方法指名一个字符,通过这个字符和一个当前L&F的特殊修饰共同激活按钮动作
5、可插入L&F:每个Jcomponent对象有一个相应的ComponentUI对象,为它完成所有的绘画、事件处理、决定尺寸大小等工作
ComponentUI对象依赖当前使用的L&F,用UIManager.setLookAndFeel()方法可以设置需要的L&F
6、支持布局:通过设置组件最大、最小、推荐尺寸的方法和设置X、Y对齐参数的方法能指定布局管理器的约束条件,为布局提供支持


使用Swing的基本规则
与使用AWT组件不用,Swing组件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关的内容面板(content pane)上
内容面板是顶层容器包含的一个普通容器,它是一个轻量级组件。基本规则如下:
把Swing组件放入一个顶层Swing容器的内容面板上
避免使用非Swing的重量级组件

对Frame添加组件有两种方式:
1、用getContentPane()方法获得JFrame的内容面板,再对其加入组件:
frame.getContentPane().add(childComponent)
2、建立一个JPanel或JDesktopPane之类的中间容器,把组件添加到容器中,用setContentPane()方法把该容器置为JFrame的内容面板:
Jpanel contentPane=new JPanel();
……//把其它组件添加到Jpanel中;
frame.setContentPane(contenPane);
//把contentPane对象设置成为frame的内容面板

面板(JPanel)是一个轻量容器组件,用法与Panel相同,用于容纳界面元素,以便在布局管理器的设置下可容纳更多的组件,实现容器的嵌套
JPanel、JScrollPane、JSplitPane、JInteralFrame都属于常用的中间容器,是轻量组件。
JPanel的缺省布局管理器是FlowLayout
层次结构:
java.lang.Object
    java.awt.Component
        java.awt.Container
            javax.swing.JComponent
                 javax.swing.JPanel

根面版(JRootPane)
由一个玻璃面板(GlassPane)、一个内容面板(ContentPane)和一个可选择的菜单条(JMenuBar)组成
内容面板和可选择的菜单条放在同一分层
玻璃面板是完全透明的,缺省值为不可见,为接收鼠标事件和在所有组件上绘图提供方便

分层面板(JLayeredPane)
Swing提供两种分层面板:JLayeredPane和JDesktopPane
JDesktopPane是JLayeredPane的子类,专门为容纳内部框架(JInternalFrame)而设置
向一个分层面板中添加组件,需要说明将其加入哪一层,指名组件在该层的位置:
add(Component c,Integer Layer,int position)

滚动窗口(JScrollPane),带滚动条的面板,主要是通过移动JViewport(视口)来实现的
JViewport是一种特殊的对象,用于查看基层组件,滚动条实际就是沿着组件移动窗口,同时面熟出它在下面"看到"的内容

分隔板(JSplitPane),提供可拆分窗口,支持水平拆分和垂直拆分并带有滚动条,常用方法有:
addlmpl(Component comp,Object constraints,int index)//增加指定的组件
setTopComponent(Component comp)//设置顶部的组件
setDividerSize(int newSize)//设置拆分的大小
setUI(SplitPaneUI ui)//设置外观和感觉

选项板(JTabbedPane),提供一组可供用户选择的带有标签或图标的开关键。常用方法:
add(String title,Component component)//增加一个带特定标签的组件
addChangeListener(ChangeListener l)//选项板注册一个变化监听器

内部框架(JInteralFrame)如同一个窗口在另一个窗口内部,特点:
须把内部框架添加到容器中(通常为JDesktopPane),否则不显示
不必调用show()或setVisible(),内部框架随所在的容器一起显示
必须用setSize()或pack()或setBounds方法设置框架尺寸,否则尺寸为零。框架不能显示
可以用setLocation()或setBounds()方法设置内部框架在容器中的位置,缺省值为(0,0),即容器的左上角
象顶层JFrame一样,对内部框架添加组件也要加在它的内容面板上
在内部框架中建立对话框,不能使用JDialog作为顶层窗口,必须用JOptionPane或JInternalFrame
内部框架不能监听窗口事件,可以通过监听与窗口事件类似的内部框架(JInternalFrameEvent)处理内部框架窗口的操作

JInternalFrame的构造函数要求5个参数,例如:
JInternalFrame frame=new JinternalFrame("Internal Frame",true,true,true,true);
第一个参数是内部窗口的标题栏,第二个参数指能够改变内部窗口的大小,第三个参数是指能够关闭内部窗口,第四个参数指能否最大化窗口,第五个参数指能否最小化内部窗口

JDesktopPane对象用来管理将显示的JInternalFrame子窗口
JInternalFrame有一个能放置GUI构建的内容窗格
缺省时JinternalFrame是透明的,将子窗口设置为不透明:frame.setOpaque(true)
JFrame frame=new JFrame("InternalFrameDemo");
JDesktopPane desktop=new JDesktopPane();//实例化容器JDesktopPane
MyInternalFrame myframe=new MyInternalFrame();//实例化内部窗口
desktop.add(myframe);//把内部窗口添加到容器中
frame.setContentPane(desktop);//把desktop设为frame的内容面板


JTextField和JPasswordField
接收来自键盘的输入或输出简单的显示信息
用户在文本区域输入数据后回车可激活一个事件
如果有相应的事件侦听器被注册,则处理这个事件

按钮
JComponent--AbstractButton
                          JButton
                          JToggleButton
                                       JCheckBox
                                       JRadioButton

你可能感兴趣的:(框架,swing,object,Integer,constraints,jcomponent)