开发者

Java: Problem using setText() method with Button

I'm new to java and I'm trying to swap out the text on a Button I've created. The code for my main class is as follows:

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;

public class TeamProject extends Applet implements ActionListener, MouseListener
{
char[][] charValues = new char[10][10];
Table aTable;
boolean allowUserInput = false;
Button BtnStart;
Button randomChangeBtn;
boolean guessMode;
private AudioClip[] sounds = new AudioClip[5];
private int counter = 0;
//JSObject jso;

public void init()
{
        //setup buttons
    BtnStart = new Button("add row/column");
    BtnStart.addActionListener((ActionListener)this);   //cast
    randomChangeBtn = new Button("change one value");
    randomChangeBtn.addActionListener((ActionListener)this);

            //add button
    this.add(BtnStart);

    //add image to Image objects
    Image imgO = getImage(getCodeBase(), "images/not.gif");
    Image imgX= getImage(getCodeBase(), "images/cross.gif");

            //setup table
    aTable = new Table(100, 100, 75, 55, 5, 5, imgX, imgO);

    //setBackground(Color.LIGHT_GRAY);
    super.resize(700, 700);

            //add mouse listener
    addMouseListener(this);

    //initially guessMode will be false
    guessMode = false;

            //to talk to javascript
    //jso = JSObject.getWindow(this);

    sounds[0] = getAudioClip (getCodeBase(), "images/buzzthruloud.wav");
    sounds[1] = getAudioClip (getCodeBase(), "images/inconceivable4.wav");
    sounds[2] = getAudioClip (getCodeBase(), "images/foghorn.wav");
    sounds[3] = getAudioClip (getCodeBase(), "images/waiting.wav");
    sounds[4] = getAudioClip (getCodeBase(), "images/whistldn.wav");
}

  public void paint(Graphics g)
  {
g.setColor(Color.black);
aTable.draw(g);
  }

  //Mouse listener methods
  public void mousePressed (MouseEvent e)
  {
    if(!guessMode){
  if ((allowUserInput)){
    aTable.swapSquareValue(e.getX(), e.getY());
    repaint();
  }
    }
    else{
      System.out.println("guessed row = " + e.getY() + " guessed col = " + e.getX());
      if(aTable.checkGuess(e.getX(), e.getY())){
        int n = JOptionPane.showConfirmDialog(null, "Excellent!! Would you like to progress to next level",

                                         "Correct!!!", JOptionPane.YES_NO_OPTION);

    if (n == JOpionPane.YES_OPTION) {


               }
 else{

    JOptionPane.showMessageDialog(null, "Nope",开发者_Go百科 "alert", JOptionPane.INFORMATION_MESSAGE);

    sounds[counter].play();

  }



  //repaint();

}



  }



  public void mouseClicked (MouseEvent e) {}

  public void mouseEntered (MouseEvent e) {}

  public void mouseReleased (MouseEvent e) {}

  public void mouseExited (MouseEvent e) {}



  //Button action listener

public void actionPerformed(ActionEvent e)

{

    if (e.getSource() == BtnStart) {

      aTable.addRow();

      aTable.addColumn();

      BtnStart.setText("Roseindia.net");

      //this.remove(BtnStart);

      //this.add(randomChangeBtn);

      super.resize(700, 700);

      repaint();

}

else if (e.getSource() == randomChangeBtn) {

  aTable.randomChangeFunc();

  repaint();

  guessMode = true;

}



    allowUserInput = true;

    System.out.println(aTable.toString());

}



}

I'm trying to change to text in my actionPerformed(ActionEvent e) method. Like I said, I'm new, so please be gentle. Thanks :)


You are using java.awt.Button. There is no setText() method in the java.awt.Button. You may use setLabel(String) instead.

And you do not have to import java.lang.* either since the java.lang package is available to all your Java programs by default.

If you change the line:

 Button BtnStart;

to

 JButton BtnStart;

and

 BtnStart = new Button("add row/column");

to

 BtnStart = new JButton("add row/column");

then you will be using the Swing Button and you will be able to call setText();


The first thing you need to know is are you trying to create an Applet using AWT or Swing components. You import the Swing classes but are using AWT components. Most people these days use Swing.

In Swing your would never override the paint() method of the Applet. You would start by extending JApplet, then you would simply add components to the content pane of the applet. If you need to do custom painting then you do that by overriding the paintComponent() method of a JComponent or JPanel.

Start by reading the Swing tutorial for working examples of using applets.


As you said that you want to swap the text then you should use the setLabel() method instead of setText, but for changing the text of a Label then you can use the setText() method.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜