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

我对此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);

    }


}


达令说
浏览 100回答 1
1回答

交互式爱情

您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);    }});那应该做你想做的事,我没有尝试过,但它在我的脑海中有效。附加提示:不要调用setPreferredSize(),而是覆盖getPreferredSize()方法:我应该避免在 Java Swing 中使用 set(Preferred|Maximum|Minimum)Size 方法吗?不要在代码中间留下太多空间并正确缩进。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java