swing_xml框架的使用文档
来源:互联网 发布:天空之城软件站 编辑:程序博客网 时间:2024/06/05 19:05
前言:
框架jar包:swing_xml.jar
框架源码:http://git.oschina.net/kk_wdj/swing_xml
该框架是我在写java课程设计时,在写界面代码时,联想到android中对界面的处理,觉得可以用xml来描述swing界面,这样就可以简单的写课程设计。不过,该框架只是我打发时间时随机一动的小想法,没有多高的完成度,只是简单的可以实现。
特别提醒:本框架只是个人随意写的而已,bug应该估计肯定多得不行吧,是吧?因为我写好了,就简单测试了一下而已,没有详细的进行测试,如无法解决你的问题,望请谅解
例子 :
xml文件
<v_layout gravity="horizontal" width="match_parent" height="match_parent"> <h_layout width="wrap_content" gravity="vertical"> <label text="姓名:" width="60"></label> <text ></text> </h_layout> <h_layout width="wrap_content" gravity="vertical"> <label text="学号:" width="60"></label> <text id="aa"></text> </h_layout> <h_layout width="wrap_content" gravity="vertical"> <label text="性别:" width="60"></label> <text ></text> </h_layout> <h_layout width="wrap_content" gravity="vertical"> <label text="学科:" width="60"></label> <text ></text> </h_layout> <h_layout gravity="vertical"> <button id="bb" text="添加" margin_left="10" margin_right="10"></button> <button text="删除" margin_left="10" margin_right="10"></button> <button text="修改" margin_left="10" margin_right="10"></button> <button text="查询" margin_left="10" margin_right="10"></button> </h_layout></v_layout>
使用代码
MyFrame frame = new MyFrame("asd");frame.inflate(new File("src/asd.xml"),300,200);frame.show();
使用说明:
1、xml文件中的节点和属性的使用方法
目前只有5个控件可以使用(如果有其他的控件想做可以才能考第三点)
现在开始介绍每一个控件都有的共有属性
width:设置控件的宽度。
属性值:
match_parent:让该控件的宽度跟父布局的宽度一致
wrap_content:宽度由控件的自己想要的宽度决定
具体的数字 :如width=”100”,就是指控件的宽度就是100
height:设置控件的高度,对应上述width
margin_xxx:在不同方向上跟其他控件的间距(margin_top在控件上方的间距,margin_bottom控件下方的间距,margin_left和margin_right同理)
属性值:只能是具体数字,表示间距大小
id:用于唯一标志控件的编号,由字符串组成
现在开始介绍不同控件中不同的属性
布局控件:v_layout和h_layout用于描述布局中控件的排列方式
v_layout:垂直布局,使在该布局中的组件以垂直方式排列
目前已有属性:gravity
属性介绍:
gravity:描述布局中控件的对齐方式,
属性值:
vertical,描述布局中的控件的对齐方式为垂直居中
horizontal,描述布局中的控件的对齐方式为水平居中
center,描述布局中的控件不仅水平居中,而且垂直居中
特别说明:width和height中的wrap_content指其长度由布局中的控件长度相加,而且子控件中的match_parent会以wrap_content处理
h_layout:水平布局,使在该布局中的组件以水平方式排列
属性介绍:同v_layout
以下介绍对swing控件进行封装的控件
Button:在xml中用button表示,对应的swing控件为JButton
属性:text,描述button中的文字
Label:在xml中用label表示,对应的swing控件为JLabel
属性:text,描述label中的文字
Text:在xml中用text表示,对应的swing控件为JTextField
属性:text,描述button中的文字
2、关于id的三个api和一些字段
为了加强框架的作用,为此设计了3个简单的api
getTextById(String id):获取对应控件的文本信息,参数为在xml文件中的id(要求控件要实现TextView接口)
addListener(String id,ActionListener l):将监听器添加到对应的控件上
findCptById(String id):直接获取封装的控件
字段:
component字段是每个继承ComponentView中的swing控件的对象。
frame字段是每个MyFrame中的JFrame对象。
(因为这个框架不可能面面具到,所以将控件暴露出来,可以实现其他的功能)
3、自定义控件
如果上述的控件无法满足需求,那么还可以自己定义自己的控件。
注:在自定义控件时,要将控件写在自己独立的类文件中,用public修饰类。
先上一段通过ComponentView<T>自定义控件的代码:
public class Table extends ComponentView<JTable> implements TextView{ public Table(MyFrame frame, org.jsoup.nodes.Element e, JPanel panel) { super(frame, e, panel); } //返回对应swing控件 @Override public JTable create(int width, int height) { JTable t = new JTable(); t.setSize(i,i1); return t; } @Override public int getWrapWidth() { return 100; } @Override public int getWrapHeight() { return 100; } //自定义属性 @Override public void onOtherAttr(String key, String value) { if (key.equals("asd")) System.out.println(value); } int count=0; @NotNull @Override public String getText() { return String.valueOf(++count); }}
继承ComponentView类时要在泛型上写上要封装的swing控件
字段:
component为在调用create方法后保存的swing控件对象
重写方法:
create函数中的参数width,height为控件的宽高,在函数内创建对应的控件,并为其设置大小,以及其他操作
getWrapWidth(),getWrapHeight()返回值为控件的默认宽高,即在宽高的属性值是wrap_content时的宽高
onOtherAttr(String key,String value) key是属性名,value是属性值,这样就可以自定义控件的属性,从而实现方便的功能
getText(),该方法是TextView接口中的方法,从而让该控件可以使用getTextById()这个api,函数中写上对应的获取swing控件所需要的文本信息(上述例子因为封装的是JTable,故随意写的内容)
注册到框架中:
MyFrame.Companion.registerCpt("table",Table.class);
在使用自定义的控件的时候,是调用上述方法注册到框架中,第一个参数是xml文件描述中的元素,第二参数是相关类
总结
一个好的架构是非非常长重要的,不仅能让你快速的写代码,更能让你在变动时,更方便的解决问题。
在debug的时候,发现java中的内部类的构造器,默认是有外部类的参数的org。
最后,发现写了这个框架,也没有用到的地方,因为写课程设计还要写文档,如果使用这个框架,感觉文档要不少,不如我乖乖写那些重复代码比较好/(ㄒoㄒ)/~~。
- swing_xml框架的使用文档
- MFC单文档框架编程(三): CTabView的使用
- TP框架开发的站点使用phpdoctor生成文档注意事项
- MFC单文档框架编程(三): CTabView的使用
- Robolectric测试框架使用文档
- Zend 框架的在线文档
- MFC的 文档 视图 框架
- Spring 框架的官方文档
- yii框架使用心得(实用性文档)
- HBase ORM框架GORA使用文档
- Delta - 轻量级JavaWeb框架使用文档
- SpringMVC框架使用iReport生成pdf文档
- MFC应用程序中指针的使用 视图 框架 文档 状态栏 菜单栏
- MFC应用程序中指针的使用 视图 框架 文档 状态栏 菜单栏
- MFC应用程序中指针的使用 视图 框架 文档 状态栏 菜单栏
- MFC应用程序中指针的使用 视图 框架 文档 状态栏 菜单栏
- 使用Javadoc命令获取开源框架或者库的文档
- 文档编辑器的使用
- python 04 用户注册、注销、登陆
- #
- 使用 Supervisor 来管理 Redis 进程
- vim默认显示行号
- Java处理高并发量访问的处理总结
- swing_xml框架的使用文档
- 文章标题
- hive环境搭建 Terminal initialization failed; falling back to unsupported 解决
- 工作一年后的面试过程遇到的面试题
- Oracle的连接超时的解决方法
- 连续子数组的最大和
- 归并排序(非递归)
- The nobel table can be used to practice more SUM and COUNT functions.
- 计算几何点,直线,线段模板