前言:最近刚把《Thinking in Java 3rd》解决掉,虽然有C/C++的底子,但是东西一多还是胡乱起来了,最好的记忆方法就是实践了,对于初出茅庐的我来说,SWING其实是最有吸引力最立杆见影的东西了吧,跟公交线路一样,总是骑车的人不会对它熟悉到哪里去。这里就稍稍谈下个人的学习心得之类的吧。
做个最简只带按钮,文本编辑框的SWING吧:
import java.awt. * ;
import java.awt.event. * ; // 关于监听后面会讲到
/** */ /**
* @author SosoAyaen
**/
/** */ /**
* root Class named SwingEx
**/
public class SwingEx extends JFrame ... { // JFrame就是一个顶层容器,这里直接继承它
private JButton b1, b2; // 两个按钮
private JPanel p1; // JPanel也是一个中间容器
private JTextField t1; // 文本编辑区域
/** *//**
* Method SwingEx构造函数
*
* @param title 程序的标题
*
**/
public SwingEx(String title)...{
super(title); // 调用JFrame的构造函数,把程序标题传入
b1 = new JButton("Click me!"); // 按钮上显示的文本,AWT只能显示文本,SWING甚至可以显示图
b2 = new JButton("Beat me!");
t1 = new JTextField(30); // 设定为30个字符长度
t1.setEditable (true); // 设定t1为可编辑区域
p1 = new JPanel(); // 创建一个JPanel实例
p1.setLayout (new FlowLayout());// 设置JPanel的排列方式,以后马上会说到
p1.add(b2); // 把按钮b2添加到JPanel里
p1.add(b1); // 把按钮b1添加到JPanel里
p1.add(t1); // 把文本区域t1也添加到JPanel里面
this.setSize (100, 100); // 注意这个this,指当前SwingEx,它继承自JFrame,大小设置
this.setLayout (new FlowLayout()); // 同样设置排列方式,只是对顶层容器的排列
// this.add(b1); // 顶层容器也可以直接添加控件
this.add(p1); // 把JPanel容器添加到顶层容器中
}
/** *//**
* Method main
*
* @param args
*
**/
public static void main(String[] args)...{
SwingEx se = new SwingEx("Swing Test"); // 创建一个实例
se.setVisible (true); // 设置为显示,show(boolean)是过时的API
}
}
很简单的程序,不过也是,程序由自己定的啦,想做了简单可以,要做了复杂亦可,来看看SWING的构建步骤吧:首先就是要导入类库了,javax.swing.*当然是必须要导入的,java.awt.*也同样是必不可少的,java.awt.event.*这个类库是主要管理事件的,比如你按下按钮或者改变文本区域内容之类触发的事件之类的,以后会讲到,而且这个是最重要的哟,因为你所有的事件响应可都离不开它呀,呵呵。直接继承JFrame个人感觉比较方便,至少现在不觉得麻烦,呵呵,而且本来就是一个Frame的程序是吧,main所在的Class如果是JFrame不是蛮合情合理的么,容器有好多种,有顶层容器如JFrame等,中间容器如JPanel等,还有其他的,你要做的就是把容器的大小还有排列方式(Layout)设定好,之后就只需要把控件或者容器通过add(控件)方法把控件或者是容器添加进去就行了,注意,中间容器不能添加顶层容器,个人猜想,虽然没试验过,但是想想也不合情理是吧,呼呼。最后要做的就是在mian中把这个继承自JFrame的实例setVisible(true)就可以了。