总是看着黑框框的命令行实在是忒单调,于是我还是先学个界面吧。
java中提供了图形化界面的的工具,java.Awt,javax.Swing两个包。
java.Awt:抽象窗口工具集,需要调用本地系统方法实现功能(依赖于平台,跨平台属性较弱)。属于重量级控件。
javax.Swing:建立在Awt的基础上,提供了更多的组件,增强了移植性(完全跨平台)。属于轻量级控件。
现在我们一般用Swing包
import java.awt.*;
public class Fram {
public static void main(String[] args)
{
Frame f = new Frame("my awt");
//设置大小
f.setSize(500, 100);
//设置位置
f.setLocation(200, 200);
//设置布局方法
f.setLayout(new FlowLayout());
//创建一个按钮
Button b = new Button("hello");
//添加到容器里面,Frame默认为边界布局
f.add(b);
//显示
f.setVisible(true);
}
}
结果:
要点:
1.创建frame窗体
2.对窗体进行基本设置(大小,位置,布局)
3.定义组件
4.通过add将组件添加到窗体中
5.通过setVisible(true)让窗体显示
虽然现在有了窗口界面,但是按钮按下却没有反应,需要给按钮添加事件处理函数。
要点:
1.事件源是awt包或者swing包中的图形界面组件。
2.每一个事件源都有自己的对应事件和共性事件。
3.可以触发某一个事件的动作封装在监听器中。
4.我们只需要将监听器中的事件处理函数写好就可以进行操作了,以上的三者java已经为我们写好了。
import java.awt.*;
import java.awt.event.*;//导入event包
public class Fram {
public static void main(String[] args)
{
Frame f = new Frame("my awt");
//设置大小
f.setSize(500, 100);
//设置位置
f.setLocation(200, 200);
//设置布局方法
f.setLayout(new FlowLayout());
//创建一个按钮
Button b = new Button("hello");
//添加到容器里面,Frame默认为边界布局
f.add(b);
//添加窗口监听函数
f.addWindowListener(new MyWin());
//显示
f.setVisible(true);
}
}
//创建一个窗口适配器,继承于WindowAdapter
class MyWin extends WindowAdapter
{
//覆写父类的方法,参数接收窗口操作,内部为处理函数
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
//打开时运行
public void windowOpened(WindowEvent e)
{
System.out.println("open window");
}
}
为按钮添加事件:
import java.awt.*;
import java.awt.event.*;
public class FrameDemo {
// 定以组件的引用
private Frame frame;
private Button button;
//构造函数中添加初始化函数
FrameDemo()
{
init();
}
//初始化函数,进行相关操作和设置
public void init()
{
frame = new Frame("hello frame");
//对frame进行设置
frame.setBounds(300, 300, 500, 400);
frame.setLayout(new FlowLayout());
//添加组件
button = new Button("hello");
frame.add(button);
//添加窗体事件
myEvent();
//显示
frame.setVisible(true);
}
//自定义窗体事件
private void myEvent()
{
//匿名内部类,窗口事件
frame.addWindowListener(new WindowAdapter()
{
//关闭事件的处理函数
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//按钮添加功能,按钮也是事件源,
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("button is pressed");
}
});
}
//main
public static void main(String[] args)
{
new FrameDemo();
}
}
结果:
要点:
1.在设置好窗口及控件之后,要为各种控件添加响应函数。调用控件的addActionListener(),窗口的addWindowListener()方法。
2.这个方法要实现一个接口,可以写一个类,也可以直接用匿名内部类实现。但是由于接口的各个方法都是抽象方法,实现较困难,所以我们一般采用适配器。
3.addWindowListener()等里面要new 一个对象,即一个适配器(监听器),然后实现适配器的各种方法。
4.适配器里面的各种方法已经写好,我们覆写就可以。方法里面接受*Event型的事件。
5.执行完以上步骤时,监听器就装好啦。我们进行操作后,产生一个事件对象,监听器中的函数接受事件对象,然后进行操作
import java.awt.*;
import java.awt.event.*;
public class MouseEvent {
private Frame frame;
private Button button;
MouseEvent()
{
init();
}
private void init()
{
frame = new Frame("Mouse Event");
frame.setBounds(200,200,500,400);
frame.setLayout(new FlowLayout());
button = new Button("hello");
frame.add(button);
// 添加鼠标事件监听器
myEvent();
frame.setVisible(true);
}
public void myEvent()
{
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
button.addMouseListener(new MouseAdapter()
{
public void mouseClicked(java.awt.event.MouseEvent e)
{
System.out.println("Mouse is clicked");
}
public void mouseEntered(java.awt.event.MouseEvent e)
{
System.out.println("Mouse entered");
}
});
button.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
System.out.println(KeyEvent.getKeyText(e.getKeyCode()) + " " + e.getKeyCode());
}
});
}
//main
public static void main(String[] args)
{
new MouseEvent();
}
}