Java: проблема с использованием метода setText () с Button

StackOverflow https://stackoverflow.com/questions/1626658

  •  06-07-2019
  •  | 
  •  

Вопрос

Я новичок в Java и пытаюсь поменять текст на кнопке, которую я создал. Код для моего основного класса выглядит следующим образом:

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

}



}

Я пытаюсь перейти к тексту в моем методе actionPerformed (ActionEvent e). Как я уже сказал, я новичок, поэтому, пожалуйста, будьте нежны. Спасибо:)

Это было полезно?

Решение

Первое, что вам нужно знать, это то, что вы пытаетесь создать апплет с использованием компонентов AWT или Swing. Вы импортируете классы Swing, но используете компоненты AWT. Большинство людей в наши дни используют Swing.

В Swing вы никогда не переопределите метод paint () апплета. Вы начнете с расширения JApplet, затем просто добавите компоненты на панель содержимого апплета. Если вам нужно сделать пользовательское рисование, то вы делаете это путем переопределения метода paintComponent () JComponent или JPanel.

Начните с чтения учебного пособия по Swing для рабочих примеров использования апплетов.

Другие советы

Вы используете java.awt.Button . В java.awt.Button нет метода setText () . Вместо этого вы можете использовать setLabel (String) .

И вам также не нужно импортировать java.lang. *, поскольку по умолчанию пакет java.lang доступен для всех ваших программ на Java.

Если вы измените строку:

 Button BtnStart;

до

 JButton BtnStart;

и

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

до

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

тогда вы будете использовать кнопку Swing и сможете вызывать setText ();

Как вы сказали, что вы хотите поменять местами текст, вы должны использовать метод setLabel () вместо setText, но для изменения текста метки вы можете использовать метод setText ().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top