Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按下GUI按钮,从数组中选择一个随机单词并将其放置在JLabel上_Java_Swing - Fatal编程技术网

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

Java 按下GUI按钮,从数组中选择一个随机单词并将其放置在JLabel上,java,swing,Java,Swing,我对这个GUI代码有一个问题。如何在JLabel随机词上显示 基本上,该程序的目的是创建一个GUI按钮,单击该按钮时,从数组中选择一个随机单词,并将其放入JLabel 我遇到的问题是让单词出现在JLabel上,我不太确定该怎么做 import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java

我对这个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);
    }

}
  • 在编写以下内容时,您正在声明匿名
    JLabel

    subPanel1.add(new JLabel("Random word here"));
    
    您需要将其设置为变量:

    JLabel label = new JLabel("Random word here");
    subPanel1.add(label);
    
  • 现在您有了
    按钮
    和自己的
    操作侦听器

    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()
      方法:

    • >P>不要在代码中间留那么多空间,并正确缩进。


    您有什么问题?JLabel,setText(“我的文本”);Progman当按下按钮时,如何将数组选择的随机单词添加到JLabel中?提示:添加@Progman或您回复的任何人,以通知他们(重要的是
    @
    ),如果答案解决了您的问题,请确保@Luis