(一)在面板中添加多个组件,并进行合理的布局
¨ 程序功能:在一个框架(Frame)容器中添加一个面板(Panel)容器,并分别在框架和面板容器中添加组件并使用不同的布局管理方式。
¨ KY7_1.java 程序文件,源代码如下:
import java.awt.*;
import java.awt.Color;
publicclass KY9_1 {
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
Frame f=new Frame(); //创建一个框架f
Panel p=new Panel(); //创建一个面板p
f.add(p); //把面板P添加到框架f中
p.setBackground(Color.blue); //把背景颜色设置为蓝色
p.setLayout(new FlowLayout()); //设置面板p的布局为流式布局
Label l = new Label();
p.add(l); //在面板p中添加一个标签l
Button button1 = new Button();
Button button2 = new Button();
Button button3 = new Button();
Button button4 = new Button();
Button button5 = new Button();
Button button6 = new Button();
p.add(button1);
p.add(button2);
p.add(button3);
p.add(button4);
p.add(button5);
p.add(button6); //在面板p 中添加六个按钮
Choice c=new Choice(); // 创建一个下拉列表c
c.addItem("北京"); // 下拉列表c 中有三个选项:北京、上海和天津
c.addItem("上海");
c.addItem("天津");
p.add(c); //把列表c 添加到面板p 中
f.setBounds(400,400,400,400);
f.setVisible(true);
f.validate(); //设置框架f 的大小和可见性
}
}
实验运行结果如下:
(二)为窗口添加菜单,并处理由菜单项所引发的事件
¨ 程序功能:在窗口中添加菜单条,在菜单条中添加菜单,并在菜单中添加菜单项和子菜单。通过选择菜单项可以引发不同的事件,从而执行不同操作,例如点击“打开”菜单项可以打开一个“打开文件对话框”。
¨编写KY9_2.java 程序文件,源代码如下:
package ch9;
import java.awt.*;
import java.awt.event.*;
publicclass KY9_2 extends Frame implements ActionListener {
static Frame f; //声明一个框架
static FileDialog fd1; //声明一个文件对话框对象
static FileDialog fd2;
publicstaticvoid main(String[] args) {
// TODO Auto-generated methodstub
KY9_2 k = new KY9_2();
f = new Frame(); //创建一个框架f
MenuBar mb = new MenuBar(); //创建一个菜单条mb
Menu m1 = new Menu("文件");
/*在菜单条mb中添加两个菜单m1("文件")和m2("帮助")*/
Menu m2 = new Menu("帮助");
mb.add(m1);
mb.add(m2);
MenuItem m11 = new MenuItem("打开");
/* "文件"菜单m1中有三个菜单项:m11("打开")、m12("关闭")和m13("退出")*/
MenuItem m12 = new MenuItem("关闭");
MenuItem m13 = new MenuItem("退出");
m1.add(m11);
m1.add(m12);
m1.add(m13);
MenuItem m21 = new MenuItem("目录");
/* "帮助"菜单m2中有三个菜单项:m21("目录")、m22("索引")和m23("关于")*/
MenuItem m22 = new MenuItem("索引");
MenuItem m23 = new MenuItem("关于");
m2.add(m21);
m2.add(m22);
m2.add(m23);// "文件"菜单m1中还有一个子菜单m3("编辑")
Menu m3 = new Menu("编辑"); /* "编辑"子菜单m3 中有三个菜单项:m31("复制")、
m32("剪切")和m33("粘贴")*/
MenuItem m31 = new MenuItem("复制");
MenuItem m32 = new MenuItem("剪切");
MenuItem m33 = new MenuItem("粘贴");
m3.add(m31);
m3.add(m32);
m3.add(m33);
m1.add(m3);
m11.addActionListener(k); /* 允许菜单项"打开"引发一个事件,该事件的处理者为当前对象 k */
m13.addActionListener(k); /* 允许菜单项"退出"引发一个事件,该事件的处理者为当前对象 k */
f.setSize(350,200);// 设置框架f的大小
f.setMenuBar(mb); // 设置框架f的菜单条为mb
f.setVisible(true);}
publicvoid actionPerformed (ActionEvent e)
{ if (e.getActionCommand() == "打开")
{FileDialog fd1 = new FileDialog (f, "open", FileDialog.SAVE);
fd1.setVisible (true);
}
if (e.getActionCommand() == "保存")
{FileDialog fd2 = new FileDialog (f, "save", FileDialog.SAVE);
fd2.setVisible (true);
}
}
}
实验运行结果如下: