题目:编写一个JApplet程序,运用GridLayout布局设计1+4||1*4的一个小界面

题目描述:

编写一个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课后习题

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值