java中的按钮,创建和使用动作侦听器

时间:2013-05-01 18:27:30

标签: java eclipse swing applet radio-button

我是eclipse的新手,我是第一次创建按钮。我认为我有基本的想法,但它不起作用。您可以在我的代码的任何部分添加的任何内容都非常有用。救命!这是我的代码:

import java.applet.Applet; 
import java.awt.*; 
import java.awt.event.*; 

public class MovingBox extends Applet 
{
  Thread thread; 
  Dimension dim; 
  Image img; 
  Graphics g; 
  Color red = null;
  Color blue = null;
  Font fnt16P = null;


  public void init()
  { 
    resize(800,500);    


    Button b_Up = new Button("Up"); 
    b_Up.setSize(100, 25);
    b_Up.setLocation(450,450+ 90);
    b_Up.setBackground(red); 
    b_Up.setForeground(blue);
    b_Up.setFont(fnt16P);
    b_Up.setVisible(true);
    b_Up.addActionListener((ActionListener) this);
    add(b_Up);


  }

  public void paint(Graphics gfx)
  {
    g.setColor(Color.green);
    g.fillRect(0,0,800,500);
  }
  public void actionPerformed(ActionEvent event)
  {
    int value, total;;
    Object cause = event.getSource();

    if (cause == b_Up)
    (
    )

  }

}

2 个答案:

答案 0 :(得分:2)

此代码无法编译,原因有三个:

变量b_UpactionPerformed中不可见。使它成为一个类成员变量,使其工作并将其声明为

b_Up = new Button("Up"); 

您无法将this注册为ActionListener

b_Up.addActionListener(this);

除非该类属于该类型,因此该类需要声明为

public class MovingBox extends Applet implements ActionListener {

使用大括号而不是括号来定义if语句的主体:

if (cause == b_Up) {
   ...
}

考虑使用以下内容:

  • 对组件使用匿名ActionListener。更好的实施方法
  • private类成员变量 - 绝对使用这些
  • Java命名约定建议使用 camelCase 而不是匈牙利符号
  • 考虑使用比重量级AWT更现代的轻量级Swing库,

答案 1 :(得分:2)

不要定义Graphics对象。使用传递给方法的Graphics对象。

Graphics g; 
...
public void paint(Graphics gfx)
  {
    g.setColor(Color.green);
    g.fillRect(0,0,800,500);
  }

请勿手动设置尺寸/位置。使用布局管理器,让布局管理器完成它的工作。

Button b_Up = new Button("Up"); 
b_Up.setSize(100, 25);
b_Up.setLocation(450,450+ 90);

我建议你花时间学习如何使用Swing而不是学习AWT。从Swing tutorial开始,了解基础知识。