当前位置: 首页 > 面试题库 >

从另一个类更改JLabel上的文本

龙志勇
2023-03-14
问题内容

因此,我一直在试图弄清楚这一点,却无法弄清楚如何做到这一点。我希望另一个类中的按钮之一可以更改GUI类中JLabel的文本。

这是来自GUI类的代码:`import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;


public class GUI extends JFrame{
    Container pane = getContentPane();
    JButton guess = new JButton("Guess");
    JButton gen = new JButton("Generate number");
    JTextField userInput = new JTextField();
    JLabel Numbers = new JLabel("Press generate to start.");
    JLabel guessedNum = new JLabel("");
    JLabel error = new JLabel("");


    public void CreateGUI(){
        final int WIDTH = 325;
        final int HEIGHT = 200;
        final int centerWIDTH = WIDTH / 4;
        final int centerHEIGHT = HEIGHT / 4;

        guessHandler guessHandle;
        genHandler genHandle;

        pane.setLayout(null);

        guessHandle = new guessHandler();
        guess.addActionListener(guessHandle);
        genHandle = new genHandler();
        gen.addActionListener(genHandle);


        userInput.setBounds(centerWIDTH - 20, centerHEIGHT, 200, 20);
        guess.setBounds(userInput.getX() - 35, (userInput.getY() + 25), 105, 50);
        gen.setBounds((guess.getX() + 105), guess.getY(), 165, 50);
        error.setBounds(70, 125, 300, 20);
        Numbers.setBounds(90, 0, 300, 20);
        guessedNum.setBounds(20, 25, 300, 20);


        pane.add(userInput);
        pane.add(guess);
        pane.add(gen);
        pane.add(Numbers);
        pane.add(guessedNum);
        pane.add(error);

        setSize(WIDTH,HEIGHT);
        setTitle("Number Guesser");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        setResizable(false);
        setLocation(350, 150);
    }
}

这里是尝试更改JLabel“错误”的按钮中的代码:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class guessHandler implements ActionListener{

    public void actionPerformed(ActionEvent e) {

        GUI gui = new GUI();
        gui.changePOS(4, 50, 0, 300, 20);
        gui.error.setText("HI from guessHandler.java");

    }

}

问题答案:

首先,添加具有public访问权限的吸气剂,以便您的第二堂课可以访问该字段。就像是,

public JLabel getError() {
     return error;
}

或(如@MadProgrammer在评论中建议的,是一个变种器),例如

public void setError(String txt) {
     error.setText(txt);
}

然后修改第二个类,并GUI在构造函数中将其实例传递给它。喜欢,

public class guessHandler implements ActionListener{
    private GUI gui;
    public guessHandler(GUI gui) {
        this.gui = gui;
    }
    public void actionPerformed(ActionEvent e) {
        gui.changePOS(4, 50, 0, 300, 20);
        gui.setError("HI from guessHandler.java");
    }
}


 类似资料:
  • 我有两个类和一个文本文件数据库,第一个类中的,我们将其称为自动设置为数据库中的数字。现在,在中,我有一个小的和一个文本字段,当然还有一个按钮,我在文本字段中的值会覆盖数据库中的值,但问题出在这里。第一个类中的标签在运行时不会更新,但如果我重新启动它,它会显示我想要的值。 如何在程序运行时更新它?我尝试在另一个类的中更改标签,但它每次都给我一个。 我怎么解决这个? 我希望这让我更容易理解我的问题。这

  • 问题内容: 是否可以在另一个JLabel上添加一个JLabel?谢谢。 问题答案: 简短的回答是肯定的,一个是一个,所以它可以接受(A 是的子类)添加到使用方法: 在以上代码中,将添加到中。 但是,从视觉上看,显示了带有文本“ Hello”的标签,因此无法真正看到包含在标签中的标签。 因此,问题就来了,一个人到底想通过在另一个标签之上添加一个标签来完成什么工作。 编辑: 从评论: 好吧,我想做的是

  • 问题内容: 亲爱的大家,我遇到了挥杆相关的问题。由于违反公司政策,我无法共享代码,因此我将尽力解释该问题。 简而言之,我创建了一个扩展包含JLabel的JWindow的类。JLabel的文本是通过计时器对象随机更新的,该计时器对象使用scheduleAtFixedRate方法每50毫秒实例化一个TimerTask。JLabel中的值是通过在一个单独的线程(称为传输线程)中调用一个方法来检索的,该线

  • 我试图创建一个,其中有和按钮,并在另一个类中创建了一个方法,该方法将文本设置为。我已经读到,它应该使用多线程,这是更复杂的在我的部分。以下是我的代码: //newclass.java public class NewClass{public void putTextNow(){ NewJFrame nf=new NewJFrame();nf.jlabel1.settext(“ok”);}}

  • 问题内容: 我是java的新手,我被困在这里…我要做的是将一个java文件中arraylist的更改更新为另一个文件中的JPanel。我正在对arraylist进行排序,因此无法手动完成。有什么办法可以让我“告诉” JPanel痛楚吗? 我有进行排序(工作)的BubbleSort.java,有包含JPanel和JFrame类(用于显示未排序的直方图的工作)的Animation.java。 这是家庭

  • 问题内容: 我一直在尝试为我的Roguelike游戏添加一个JLabel。不幸的是,它似乎不起作用。到目前为止,这是我的代码: 我已经阅读了一些其他问题的解决方案,并且只需将JLabel添加到另一个解决方案中就可以完成。它不按这里的预期工作,为什么? PS:我不想为我的JPanel使用JLayeredPane。 问题答案: 不要使用组件(即JLabels)创建游戏环境。相反,您可以绘制所有游戏对象