【问题标题】:Random string generator using Java - Display and flash [closed]使用 Java 的随机字符串生成器 - 显示和闪存 [关闭]
【发布时间】:2014-06-16 20:34:33
【问题描述】:

我想知道是否可以像幻灯片一样在屏幕上显示随机字符串?只使用 JAVA?如果可能的话,我想用 Java 来做,因为我正在做的副项目是用 java 做的。

我知道如何使用文本文件生成随机字符串并以正常方式逐行显示。但我的意思是在一个黑色背景的面板上,让文字随机闪烁?

【问题讨论】:

  • 是的,你可以用 JavaFX 或 libgdx 来做这个(还有很多其他的可能性)
  • 这是完全可能的。但是,您的问题尚不清楚,您坚持的是哪一部分。您是否尝试过实现任何东西?
  • 我以前从未使用过这些库。我一直在尝试寻找安装 javafx for mac 的指南

标签: java string random generator


【解决方案1】:

试试这个

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;
import javax.swing.WindowConstants;

public class MovingSlideShow {
    private static String[] data;

    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
        buildFrame();
        }
    });
    }

    private static void populateData() {
        try {
            Scanner sc = new Scanner(new File("File.txt"));
            List<String> lines = new ArrayList<String>();
        while (sc.hasNextLine()) {
          lines.add(sc.nextLine());
        }

        data = lines.toArray(new String[0]);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    private static void buildFrame() {
    populateData();
    JFrame f = new JFrame("SlideShow");
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    JPanel p = new JPanel();
    p.setPreferredSize(new Dimension(500, 500));
    p.setLayout(null);

    final JLabel label = new JLabel("Starting Text on Label");
    label.setLocation(200, 0);
    label.setSize(label.getPreferredSize());
    p.add(label);

    Timer timer = new Timer(1000, new TimerListener(label));
        timer.start();

    f.add(p);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setVisible(true);
    }

    static class TimerListener implements ActionListener {

    private Random random;
        private JLabel label; 

        public TimerListener(JLabel label){
            this.label = label;
            random = new Random();
        }

        public void actionPerformed(ActionEvent e) {
            label.setText(data[random.nextInt(data.length)]);
            label.setLocation(random.nextInt(400), random.nextInt(400));
        }
    }
}

【讨论】:

  • 嘿,谢谢你的代码!这或多或少是我想要的。但是有可能让它更遍地和随机吗?
  • 全部移动我想你的意思是在容器中随机移动标签。如果是这样,更新后的答案可能适合您。
  • 嘿 Syam,是的,这正是我的意思。我想知道我试图使用文本数组来读取文本文件。在我的文本文件中,我有几句话。每个句子放在一行上。 “这是第一行”下一句“这是第二行”..等等。由于某些原因,它没有出现在文本标签上。我只是在这里使用了与此类似的东西-homeandlearn.co.uk/java/read_a_textfile_in_java.html
  • 可以分享一下程序吗?
  • 更新程序以读取文件。检查 populateData() 方法。如果您不特别关注 bufferedReader,那么扫描仪是一个简单的选择,或者如果您使用的是 JDK 7+,我们在 File 类中有标准方法可以读取到列表。希望这会有所帮助。
猜你喜欢
  • 1970-01-01
  • 2014-02-01
  • 2018-03-24
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 2015-07-28
  • 2011-12-10
  • 2011-05-20
相关资源
最近更新 更多