1

一旦按下按钮在我的小程序上绘制答案,我想使用 drawString() ,但我无法弄清楚。我尝试了很多方法,我的程序可以编译,但在按下按钮时不会 drawString() 请帮忙。

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

public class FortuneTellerApplet extends Applet {

    Image image;
    Button getFortune = new Button("Get Your Fortune");
    Button tryAgain = new Button("Clear And Try Again");
    TextField input = new TextField("Enter Question Here", 30);

    public void init() {

        image = getImage(getDocumentBase(), "webimages/crystalball.jpg");

        getFortune.setBackground(Color.black);
        getFortune.setForeground(Color.orange);
        tryAgain.setBackground(Color.black);
        tryAgain.setForeground(Color.orange);
        input.setBackground(Color.black);
        input.setForeground(Color.orange);

        setLayout(new FlowLayout());
        setBackground(Color.green);
        add(getFortune);
        add(tryAgain);
        add(input);

        MyHandler handler = new MyHandler();
        getFortune.addActionListener(handler);
        tryAgain.addActionListener(handler);

        }

    public void paint(Graphics g) {

        g.drawImage(image, 12, 34, this);

        }

    public class MyHandler extends Button implements ActionListener {

        public void actionPerformed(ActionEvent ev) {

        if (ev.getSource()==getFortune) {

                 // >>>>>>>>> I want be able to use drawString() here <<<<<<<

        } else if (ev.getSource()==tryAgain) {

            input.setText("");
            input.requestFocus();

            }
        }   
    }
}
4

2 回答 2

3

你需要做定制绘画吗?

只需使用Label最初默认为空字符串的 a 。然后,当您想要显示答案时,您调用标签上的 setText() 方法来显示文本。

你为什么使用 AWT?我会学习摇摆。我不使用 AWT,但我猜如果您要进行自定义绘画,那么您应该super.paint()在绘画方法的开头使用 a。我知道这对 Swing 很重要。

于 2011-10-30T16:02:27.603 回答
2

在paint方法中使用布尔值,如下所示:

// Add this to the top
boolean stringVisible = false;    

// Change paint method accordingly
public void paint(Graphics g) {
  g.drawImage(image, 12, 34, this);
  if( stringVisible )
  {
    // draw string
  }
}

按下按钮时将布尔值设置为true,最初必须为false。

于 2011-10-30T15:55:26.427 回答