-3

我对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)
    (
    )

  }

}
4

2 回答 2

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 教程开始,了解基础知识。

于 2013-05-01T20:00:55.007 回答
2

由于 3 个原因,此代码无法编译:

该变量b_Up在 中不可见actionPerformed。使它成为一个类成员变量以使其工作并将其声明为

b_Up = new Button("Up"); 

您不能注册thisActionListener

b_Up.addActionListener(this);

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

public class MovingBox extends Applet implements ActionListener {

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

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

考虑使用以下内容:

  • 对组件使用匿名ActionListener。更好的实施方法
  • private类成员变量 - 绝对使用这些
  • Java 命名约定建议使用驼峰命名法而不是匈牙利表示法
  • 考虑使用更现代的轻量级 Swing 库而不是重量级 AWT,
于 2013-05-01T18:37:12.240 回答