【基础训练 1】点击按钮随机改变窗体的背景颜色。
【目标】了解图形界面的布局、事件处理特点。
(1)让窗体可见
调试程序,发现窗体是可见的。此时若把setVisible一行注释掉,会出现以下情况:
发现程序运行了,但是没有窗体出现。由此可见,此语句的作用是使窗体可视化。
(2)在窗体加入按钮
package test;
import java.awt.*;
public class Change_Color extends Frame{
public Change_Color() {
super("更改背景");//调用父类的构造方法定义窗体的标题
setLayout(new FlowLayout());//指定按流式布局排列部件
Button btn=new Button("更改背景");//创建按钮并配上文字“更改背景”
add(btn);//将按钮加入窗体
setSize(300,300);//窗体大小
setVisible(true);//让窗体可视化
}
public static void main(String[] args) {
new Change_Color();
}
}
(3)给按钮注册事件
package test;
import java.awt.*;
import java.awt.event.*;
public class Change_Color extends Frame implements ActionListener{
public Change_Color() {
super("更改背景");//调用父类的构造方法定义窗体的标题
setLayout(new FlowLayout());//指定按流式布局排列部件
Button btn=new Button("更改背景");//创建按钮并配上文字“更改背景”
add(btn);//将按钮加入窗体
btn.addActionListener(this);//给按钮注册动作事件监听者
setSize(300,300);//窗体大小
setVisible(true);//让窗体可视化
}
public static void main(String[] args) {
new Change_Color();
}
public void actionPerformed(ActionEvent e) {
Color c=new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256));
//随机产生背景颜色
setBackground(c);
}
}
【思考】修改事件的监听者,采用内嵌类或匿名内嵌类实现,如何做?
package test;
import java.awt.*;
import java.awt.event.*;
public class Change_Color extends Frame{
public Change_Color() {
super("更改背景");//调用父类的构造方法定义窗体的标题
setLayout(new FlowLayout());//指定按流式布局排列部件
Button btn=new Button("更改背景");//创建按钮并配上文字“更改背景”
add(btn);//将按钮加入窗体
btn.addActionListener(new process());//给按钮注册动作事件监听者
setSize(300,300);//窗体大小
setVisible(true);//让窗体可视化
}
class process implements ActionListener{
public void actionPerformed(ActionEvent e) {
Color c=new Color((int)(Math.random()*256),(int)(Math.random()*256),(int)(Math.random()*256));
//随机产生背景颜色
setBackground(c);
}
}
public static void main(String[] args) {
new Change_Color();
}
}