题目描述:
编写一个JApplet程序,用 GridLayout 的布局方式设计一个界面,如图。当点击有加号的按钮时,则第一排第二个按钮文本变为加号:当点击OK时,将算出1+4的结果添加到第一排的最后一个按钮文本中。当点击有号的按钮时,则第一排第二个按钮文本变为号;当点击OK时,将算出的1*4的结果添加到第一排的最后一个按钮文本中。
完成这个题需要理解以下几个知识点:
ActionEvent事件及其响应
按照Java的委托事件模型,当我们在所设计的用户界面上
按下一个按钮时会激发一个事件,这个事件称为动作事件。动
作事件由AWT的ActionEvent类的方法来处理。
1.动作事件 .
动作事件ActionEvent类含有ACTION_PERFORMED事件,它是引发某个动作的执行事件。能触发这个事件的动作包括:单击按钮;双击一个列表中的选项;选择菜单项;在文本框中输入回车等。
2.ActionEvent类可使用的主要方法
getSource( )方法:用来获取引发事件的对象名。
getActionCommand( )方法:用来获取对象的标签或事先为
这个对象设置的命令名。
3.事件响应 .
当用户点击对象时,就会引发ActionEvent类代表的动作事
件。例如,下面的语句:
对象名.addActionListener(this);
注册事件源对象的监听者对象为this,而且要求this对象的类
必须声明该类并实现ActionListener接口。当事件发生时,引发
的事件将被此事件的监听者监听到,并引用ActionListener的
actionPerformed(ActionEvent e)方法响应动作事件。在此方法体中可以引用ActionEvent事件的getSource( )方法来获取引发事件的对象。
GridLayout布局
如果界面上需要放置的组件较多,且这些组件的大小又基
本一致时,例如计算器、遥控器的面板,使用GridLayout布局
策略是最佳的选择。GridLayout的布局策略是把容器的空间划
分为若干行、若干列的网格区域,而每个组件按添加的顺序从
左向右、从上向下地占据这些网格。
GridLayout类的三个构造方法如下:
(1) GridLayout( ):按默认(1行1列)方式创建一个GridLayout布局。
(2) GridLayout(int rows,int cols):创建一个具有rows行、cols列的GridLayout布局。
(3) GridLayout(int rows,int cols,int hgap,int vgap):按指定的行数rows、列数cols、水平间隔hgap和垂直间隔vgap创建一个GridLayout布局。
import javax.swing.JApplet;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.*;
import java.awt.event.*;
public class NewJApplet第十章作业 extends JApplet implements ActionListener{
Container cp=getContentPane( );
JButton bt1=new JButton("" ); //创建按钮对象
JButton bt2=new JButton("" ); //创建按钮对象
JButton bt3=new JButton("+" ); //创建按钮对象
JButton bt4=new JButton("*" ); //创建按钮对象
JButton bt5=new JButton("OK" ); //创建按钮对象
public void init( ) {
//设置GridLayout布局
GridLayout myLayout=new GridLayout(2,5,20,30);// GridLayout(int rows,int cols,int hgap,int vgap):
cp.setLayout(myLayout);
cp.add(new JButton("1"));
bt1.setRolloverEnabled(true); //将按钮图标变化功能打开
cp.add(bt1);
cp.add(new JButton("4"));
cp.add(new JButton("="));
bt2.setRolloverEnabled(true); //将按钮图标变化功能打开
cp.add(bt2);
cp.add(bt3);
bt3.addActionListener(this); //注册bt的监听者对象this
cp.add(bt4);
bt4.addActionListener(this); //注册bt的监听者对象this
cp.add(bt5);
bt5.addActionListener(this); //注册bt的监听者对象this
cp.add(new JButton("helloworld"));
}
public void actionPerformed(ActionEvent e)
{ if(e.getSource( )==bt3) //判断动作事件是否由bt3引发的
{
bt1.setText("+");
}
if(e.getSource( )==bt4) //判断动作事件是否由bt3引发的
{
bt1.setText("*");
}
if(e.getSource( )==bt5) //判断动作事件是否由bt3引发的
{
if(bt1.getText( )=="+")
bt2.setText("5");
if(bt1.getText( )=="*")
bt2.setText("4");
}
}
}
理论知识来源:面向对象设计——Java
题目来源:面向对象设计——Java课后习题