Question

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", "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 :)

Was it helpful?

Solution

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.

OTHER TIPS

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();

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top