MVC设计模式
model、view、controller对应三个对象,分别为模型、视图和控制器,有着独立的功能。然后可以存在多个视图,但是只有一个模型。控制器处理用户输入事件。
每个用户 界面元素都有一个包装器类(如 JButton 或 JTextField ) 来保存模型和视图。
模型类将实现一个名字以 Model 结尾的接口,每个 Swing组件都有一个相关的后缀为UI 的视图对象,例如JButton是一个继承了 JComponent 的包装器类,JComponent 包含了一个 DefauUButtonModel 对象, 一些视图数据(例如按钮标签和图标)和一个负责按钮视图的 BasicButtonUI 对象。
Swing布局
边框布局,先放置边缘组件,剩余的可用空间由中间组件占据。当 图 12 -9 边框布局 -9 边框布局容器被缩放时,边缘组件的尺寸不会改变,而中部组件的大 小会发生变化。在添加组件时可以指定 BorderLayout类中的 CENTER、NORTH、SOUTH、EAST 和WEST常量。有点类似于web中三栏布局。
与流布局不同,边框布局会扩展所有组件的尺寸以便填满可用空间(流布局将维持每个 组件的最佳尺寸)。
网格布局
网格组布局是所有布局管理器之母。可以将网格组布局看成是没有任何限制的网格布 局。在网格组布局中,行和列的尺寸可以改变。可以将相邻的单元合并以适应较大的组件
** 文本输入组件**
文本域,20指20列,一列就是在当前使用的字体下一个字符的宽度。如果希望文 本域最多能够输人 n个字符,就应该把宽度设置为n列。
Jpanel panel = new JPanel();
JTextField textField = new JTextField("Default input", 20) ;
panel.add(textField );
标签和标签组件
Jabel 的构造器允许指定初始文本和图标,也可以选择内容的排列方式。可以用 Swing
Constants 接口中的常量来指定排列方式。
]Label label = new ]Label ("User name:", SwingConstants .RIGHT);
文本区
textArea = new JTextArea(8, 40);// 8 lines of 40 columns each
对话框
对话框分为模式对话框和无模式对话框。所谓模式对话框是 指在结束对它的处理之前,不允许用户与应用程序的其余窗口进行交互。模式对话框主要用 于在程序继续运行之前获取用户提供的信息。
无模式对话框是指允许用户同时在对话框和应用程序的其他窗口中输入信息。使用 无模式对话框的最好例子就是工具栏。工具栏可以停靠在任何地方。
对话框SWING提供了多种的选择模式,当然也可以自己设计对话框。
在调用超类构造器时,需要提供拥有者框架(ownerframe)、对话框标题及模式特征。 拥有者框架控制对话框的显示位置,如果将拥有者标识为null, 那么对话框将由一个隐
藏框架所拥有。模式特征将指定对话框处于显示状态时,应用程序中其他窗口是否被锁住。无模式对话 框不会锁住其他窗口,而有模式对话框将锁住应用程序中的所有其他窗口(除对话框的子窗 口外)。
无模式对话框数据传输就没有那么简单了。当无模式对话框显示时, 调用 setVisible(true) 并不阻塞,在对话框显示时,其他程序仍继续运行。如果用户选择了无模 式对话框中的一项,并点击 OK, 对话框就会将一个事件发送给程序中的某个监听器。