程序结构
事件和交流:
当用户图形界面被构造,程序将停止运行,直到感应到用户的调用, 从而引发相应的监听器。
界面结构模式:
这样做的好处有两个:
1 降低复杂性: 越大的项目,设计模块越多,牵一发而动全身, 独立性越高越好。
2 界面的可移植性:界面最好能够随时转化为 基于 Swing, SWT, XML based GUI 的界面,甚至在UNIX 系统下能够支持,命令行模式。
我们熟悉的解构模式有3种:
1 MVC - Model-View-Controller Pattern 模型视图控制器模式
可视觉部分控制显示输出,并且与逻辑模型进行交互。
控制部分,负责接收用户的输入,并且与逻辑模型和可视部分交互。
逻辑模型负责实现逻辑结构,对界面一无所知。
2 演示文档模式-presentation-document pattern
演示模式包含所有用户借口代码。
文档部分包含逻辑代码也就是逻辑模型。
3 PAC- 演示抽象控制模型 presentation-abstraction-control pattern
PAC模式是一个递归的 MVC模式
它有很多层次结构,每个构成点又遵循PAC模式。
基础的GUI 空间
JLabel- 固定的文本
实例化: jlab=new JLabel(t/icon, [option align])
JTextField-包含文字的文本框
tf=new JTextField(n) 实例化 宽为N 字符
tf.setText();设置文字
tf.getText();获取文字
tf.addActionListener(lst); 添加监听器
tf.setEditable(bool); 设置访问性
tf.setHorizontalAlignment(align); 设置显示的文字在文本框内的位置
JButton-包含文字或图标的按钮
jb=new JButton(); 实例化
jb.setActionLinstener(); 添加监听器,当按钮被按下时候相应
jb.setEnable(); 设置按钮的可访问性
JTextArea: 包含文字的文本区,可以有多行。
jta=new JTextArea(x,y); 实例化设置X行,Y列的文本区
jta.getText(); 得到文本框里的内容
jta.setText(t); 设置文本框里的内容
jta.append(t); 在文本框内容后添加文字
jta.insert(s,pos); 在文本内容中的POS 位置添加内容s.
jta.setEditable(bool); 设置文本框的可访问性
jta.setLineWrap(bool); 允许过长的行自动换行
jta.setBorder(brtr);在内容和边框间添加空白
JCheckBox(); 可选框
jcb=new JCheckBox(text); 创建可选框与文本
b=jcb.IsSelected(); 如果可选框被选时,返回TRUE
jcb.setSelected(); 设置可选框被选
jcb.addActionLinstener(al); 如果被选框被按, 监听器相应。
jcb.setEnable(bool); 设置可选框的可访问性。
GUI container
JFrame: 视窗 javax.swing包里
w=new JFrame();
w.setTitle(t); 设置标题框内容
w.setDefaultCloseOperation
w.setVisible(); 设置窗口的可访问性,也就是显示还是不显示
w.pack(); 计算JFrame中包含的容器,并且设置JFrame的尺寸
w.setContentPane(cont); 把其中的一个容器设置为JFrame的内容面板
cont=w.getContentPane(); 得到JFrame的内容面板
w.setJMenuBar(); 设置菜单条
w.setResizable(false); 设置窗口的可访问性
w.setLocation(x,y) 设置窗口的位置。
Dialogs: JOptionPane, JFileChooser, JColorChooser, JDialog
JOptionPane 用来创建对话框。
Object[] options = {"确定","取消","帮助"};
if(response==0)
{
JFileChooser();选择对话框打开选择的文件
fc=new JFileChooser();
int n=fc.showOpenDialog(this); OR
int n=fc.showSaveDialog(this);
if(n==JFileChooser.APPROVE_OPTION)
File f=fc.getSelectedFile();
JColorChooser.showDialog(this,"chose a color",color);
JDialog();创建对话框窗口的主要类。可以使用此类创建自定义的对话框
JPanel 一般的轻量级容器
p=new JPanel();
p.setLayout(); 设置容器的布局
p.add(); 为容器添加新的组件
p.add(widge, constraint); 以布局限制添加组件
JSrollPane, JTabbedPane 特别的容器。
JScrollPane logScrollPane = new JScrollPane(log); 将LOG组件添加为 JSrollPane组件
tb=new JTabbedPane(); 实例化表格板
tb=new JTabbedPane(place); example: top,bottom,left
tp.addTab(title, comp);
Layouts (FlowLayout, BorderLayout, GridLayout)
FlowLayout: 流式布局
flow= new FlowLayout(align); //FlowLayout.LEFT FlowLayout.CENTER
BorderLayout:边界布局
| ||
| new BorderLayout(); | |
GridLayout - Lays out components in equal sized rectangular grid, added r-t-l, top-to-bottom. | ||
grid | new GridLayout(r, c); | 创建表格为R行C列 |
| ||