为了账号安全,请及时绑定邮箱和手机立即绑定

按下 GUI 按钮,从数组中选择一个随机单词并将其放置在 JLabel 上

按下 GUI 按钮,从数组中选择一个随机单词并将其放置在 JLabel 上

达令说 2022-11-02 10:42:37
我对此GUI代码有疑问。如何出现在JLabel随机词上?基本上,该程序的目的是创建一个GUI按钮,单击该按钮时从数组中选择一个随机单词并将其放入JLabel.我遇到的麻烦是让单词出现在 上JLabel,我不太确定应该怎么做。import java.awt.Color;import java.awt.Dimension;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class GuiQuiz {    public static void main(String[] args) {        JFrame frame = new JFrame("Button Example");        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        JPanel mainPanel = new JPanel();        mainPanel.setBackground(Color.BLUE);        mainPanel.setPreferredSize(new Dimension(500, 500));        JPanel subPanel1 = new JPanel();        subPanel1.setBackground(new Color(134, 179, 0));        subPanel1.setPreferredSize(new Dimension(150, 100));        subPanel1.add(new JLabel("Random word here"));        String[] names = { "Class", "Charger", "Pencil", "Dog", "Robot", "Ninja", "Teacher", "Video", "Book",            "Computer" };        JButton button = new JButton("Generates a random word");        button.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                String name = names[(int) (Math.random() * names.length)];                 ((JButton) e.getSource()).setText(name);            }        });        mainPanel.add(button);        mainPanel.add(subPanel1);        frame.getContentPane().add(mainPanel);        frame.pack();        frame.setVisible(true);    }}
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

您JLabel在写作时声明匿名:


subPanel1.add(new JLabel("Random word here"));

您需要将其设置为变量:


JLabel label = new JLabel("Random word here");

subPanel1.add(label);

现在你有你button自己的ActionListener:


button.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {

        String name = names[(int) (Math.random() * names.length)]; 

        ((JButton) e.getSource()).setText(name);

    }

});

而且您正在设置JButton的文本,而不是标签,因此我们需要将其更改为:


button.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {

        String name = names[(int) (Math.random() * names.length)]; 

        label.setText(name);

    }

});

那应该做你想做的事,我没有尝试过,但它在我的脑海中有效。

附加提示:


查看完整回答
反对 回复 2022-11-02
  • 1 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信