我有一个java杯子的图像,可以通过点击5个按钮将其移动到applet窗口的主要区域来重新定位。我的问题是按钮没有显示在我的小程序中,唯一显示的是我的杯子。gif在蓝色背景上,任何人都可以看到代码的问题,我希望按钮显示和工作是的,伙计们,我知道AWT很老了,但我必须为了我的课程而学习它。任何帮助将是伟大的,谢谢大家!
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class moveIt extends Applet implements ActionListener
{
private Image cup;
private Panel Keypad = new Panel();
public int top = 15;
public int left = 15;
private Button Keyarray[] = new Button[5];
public void init ()
{
cup=getImage(getDocumentBase(), "cup.gif");
Canvas myCanvas= new Canvas();
Keyarray[0] = new Button ("Up");
Keyarray[1] = new Button ("Left");
Keyarray[2] = new Button ("Down");
Keyarray[3] = new Button ("Right");
Keyarray[4] = new Button ("Center");
setBackground(Color.BLUE);
Panel frame = new Panel();
frame.setLayout(new BorderLayout());
frame.add(myCanvas, BorderLayout.NORTH);
frame.add(Keypad, BorderLayout.SOUTH);
Keypad.setLayout(new BorderLayout());
Keypad.add(Keyarray[0], BorderLayout.NORTH);
Keypad.add(Keyarray[1], BorderLayout.WEST);
Keypad.add(Keyarray[2], BorderLayout.SOUTH);
Keypad.add(Keyarray[3], BorderLayout.EAST);
Keypad.add(Keyarray[4], BorderLayout.CENTER);
Keyarray[0].addActionListener(this);
Keyarray[1].addActionListener(this);
Keyarray[2].addActionListener(this);
Keyarray[3].addActionListener(this);
Keyarray[4].addActionListener(this);
}//end of method init
public void paint(Graphics g)
{
g.drawImage(cup, left, top, this);
}
public void actionPerformed(ActionEvent e)
{
String arg= e.getActionCommand();
if (arg.equals("Up"))
top -= 15;
if (arg.equals("down"))
top += 15;
if (arg.equals("Left"))
left -= 15;
if (arg.equals("Right"))
left += 15;
if (arg.equals("Center"))
{
top=60;
} left=125;
repaint();
}//end paint method
}//end of class
- 你从未将
frame
添加到appletthis.add(frame)
- 一旦你这样做,你将不得不
setOpaque(false)
到frame
,这样你就可以看到背景
重要附注:
-
不要直接在Applet上绘制,你应该在
JPanel
上绘制,并覆盖它的paintComponent
方法。 -
你需要在油漆方法中调用
super.paint(g)
或super.paintComponent(g)
(对于JPanel),以免破坏油漆链并看到各种奇怪的油漆工件 -
我刚刚注意到AWT组件。AWT已经过时了。您应该将其升级为使用Swing。参见Swing教程
-
使用Java命名约定。变量以小写字母开头,使用camelcase,例如
Keyarray
→keyArray
。类名以大写字母开头,使用camel大小写,例如moveIt
→MoveIt