0

新手程序员在这里:

我刚做了我的第一个按钮。我希望按钮更改标签“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();
    }
}
4

2 回答 2

3

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

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

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");
    }
}
于 2013-05-31T01:15:27.617 回答
0
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);
}

public void actionPerformed(ActionEvent e) {
    if ("change".equals(e.getActionCommand())) {
        Javagame.this.label.setText("I have changed");
    }
}
于 2013-05-31T01:44:20.837 回答