java - 通过按钮更改标签(Java/Swing 问题)

标签 java swing jbutton actionlistener jlabel

这里是新手程序员:

我刚刚制作了第一个按钮。我想要按钮更改标签“Hello World!”到“你好宇宙!”。我尝试通过 public void actionPerformed(ActionEvent e) 寻找更改标签的方法,但未能找到任何方法。如果有人愿意向我解释如何更改 public void actionPerformed(ActionEvent e) 中的注释部分来更改标签,请解释一下!

谢谢!

我的代码:

package game;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Javagame extends JPanel implements ActionListener{
    double x=Math.random()*500;
    double y=Math.random()*500;
    protected JButton b1;
    public Javagame() {
        b1 = new JButton("Button!");
        b1.setActionCommand("change");

        b1.addActionListener(this);
        add(b1);
    }
    public void actionPerformed(ActionEvent e) {
        if ("change".equals(e.getActionCommand())) {
            //I want a code here that changes "Hello World" to "Hello Universe". Thank you.
        }
    }
    private static void createWindow(){
        JFrame frame = new JFrame("Javagame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setPreferredSize(new Dimension(500,500));

        JLabel label = new JLabel("Hello World!", SwingConstants.CENTER);
        label.setFont(new Font("Arial", Font.BOLD, 20));
        label.setForeground(new Color(0x009900));

        Javagame newContentPane = new Javagame();
        newContentPane.setOpaque(true);
        frame.setContentPane(newContentPane);
        frame.getContentPane().add(label, BorderLayout.CENTER);

        frame.setLocationRelativeTo(null);
        frame.pack();
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        createWindow();
    }
}

最佳答案

那是因为您无法获取对标签的引用来更改它......

将标签的减速度移动到类级别...

public class Javagame extends JPanel implements ActionListener{
    double x=Math.random()*500;
    double y=Math.random()*500;
    protected JButton b1;
    // Add me...
    private JLabel label;

将标签移动到面板中

public Javagame() {
    b1 = new JButton("Button!");
    b1.setActionCommand("change");

    b1.addActionListener(this);
    add(b1);

    // Move me here
    label = new JLabel("Hello World!", SwingConstants.CENTER);
    label.setFont(new Font("Arial", Font.BOLD, 20));
    label.setForeground(new Color(0x009900));
    add(label);
}

然后在您的 actionPerformed 方法中您将能够引用它...

public void actionPerformed(ActionEvent e) {
    if ("change".equals(e.getActionCommand())) {
        label.setText("I have changed");
    }
}

关于java - 通过按钮更改标签(Java/Swing 问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16848311/

相关文章:

java - 动态改变JBouton的位置

java - JButton ActionListener 集成问题

java - 如何使用 Spring MVC 和 Thymeleaf 添加静态文件

卡加载时的 Java Swing 卡布局

java - 单击 Java 中的 JButton 时如何设置AlwaysOnTop()?

java - 某些组件不响应事件

java - 使用 css 的 HTML 表格格式在 JTextPane 中不起作用

java - CRL 处理中比较 interim_reasons_mask 和reasons_mask 的原因

java - Android:如果我在文件夹 layout-sw.. 中创建 xmls,是否值得在默认布局文件夹中维护相同的 xmls?

java - Spring Social Google - 将一次性授权代码转换为服务器上的访问 token /刷新 token