使用Java的随机字符串生成器-显示和flash

使用Java的随机字符串生成器-显示和flash,java,string,random,generator,Java,String,Random,Generator,我想知道是否有可能在屏幕上以幻灯片一样的方式显示随机字符串?仅仅使用JAVA?如果可能的话,我想用Java来做这件事,因为我的副手项目是用Java来做的 我知道如何使用文本文件生成随机字符串,并以正常方式逐行显示。但我的意思是在黑色背景的面板上,让文字随机闪烁?试试这个 import java.awt.Dimension; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.Ac

我想知道是否有可能在屏幕上以幻灯片一样的方式显示随机字符串?仅仅使用JAVA?如果可能的话,我想用Java来做这件事,因为我的副手项目是用Java来做的

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

试试这个

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));
        }
    }
}
导入java.awt.Dimension;
导入java.awt.EventQueue;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Random;
导入java.util.Scanner;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.Timer;
导入javax.swing.WindowConstants;
公演{
私有静态字符串[]数据;
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
buildFrame();
}
});
}
私有静态void populateData(){
试一试{
Scanner sc=新扫描仪(新文件(“File.txt”);
列表行=新的ArrayList();
while(sc.hasNextLine()){
line.add(sc.nextLine());
}
data=lines.toArray(新字符串[0]);
}catch(filenotfounde异常){
e、 printStackTrace();
}
}
私有静态void buildFrame(){
填充数据();
JFrame f=新的JFrame(“幻灯片”);
f、 setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel p=新的JPanel();
p、 setPreferredSize(新尺寸(500500));
p、 setLayout(空);
最终JLabel标签=新JLabel(“标签上的起始文本”);
标签设置位置(200,0);
label.setSize(label.getPreferredSize());
p、 添加(标签);
定时器=新定时器(1000,新定时器(标签));
timer.start();
f、 加(p);
f、 包装();
f、 setLocationRelativeTo(空);
f、 setVisible(真);
}
静态类TimerListener实现ActionListener{
私有随机;
私人标签;
公共计时器(JLabel标签){
this.label=标签;
随机=新随机();
}
已执行的公共无效操作(操作事件e){
label.setText(数据[random.nextInt(data.length)]);
label.setLocation(random.nextInt(400),random.nextInt(400));
}
}
}

是的,您可以使用JavaFX或libgdx来实现这一点(还有很多其他的可能性),这是完全可能的。然而,从你的问题来看,还不清楚你被困在了什么地方。你试过实现什么吗?我以前从未使用过这些库。我一直在寻找一个安装javafx for macHey的指南,谢谢你的代码!这或多或少是我想要的。但是有可能使它更随意地到处移动?我想你的意思是在容器中随意移动标签。如果是这样,更新后的答案可能适合你。嗨,西亚姆,是的,这正是我的意思。我想知道我是否尝试在读取文本文件时使用文本数组。在我的文本文件中,我有几个句子。每句话放在一行上。“这是第一行”下一句话“这是第二行”。。由于某些原因,它不会出现在文本标签上。我只是在这里使用了与此类似的-你可以共享程序吗?更新程序以读取文件。检查populateData()方法。若您对bufferedReader并没有特别的要求,那个么scanner是一个简单的选项,或者若您使用JDK 7+,我们在文件类中有标准方法来读取列表。希望这有帮助。