Как использовать Graphics вне метода paint () в моем Java-апплете? - PullRequest
1 голос
/ 30 октября 2011

Я хочу использовать 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();

            }
        }   
    }
}

Ответы [ 2 ]

3 голосов
/ 30 октября 2011

Вам нужно сделать пользовательское рисование?

Просто используйте Label, который изначально по умолчанию равен пустой строке.Затем, когда вы хотите отобразить ответ, вы вызываете метод setText () на метке для отображения текста.

Почему вы используете AWT?Я бы выучил Swing.Я не использую AWT, но я думаю, что если вы собираетесь рисовать на заказ, тогда у вас должно быть super.paint() в начале вашего метода рисования.Я знаю, что это важно для Swing.

2 голосов
/ 30 октября 2011

Используйте логическое значение в методе рисования, например:

// 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, когда кнопка нажата, изначально оно должно быть ложным.

...