使用Java的随机字符串生成器-显示和flash
我想知道是否有可能在屏幕上以幻灯片一样的方式显示随机字符串?仅仅使用JAVA?如果可能的话,我想用Java来做这件事,因为我的副手项目是用Java来做的 我知道如何使用文本文件生成随机字符串,并以正常方式逐行显示。但我的意思是在黑色背景的面板上,让文字随机闪烁?试试这个使用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
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+,我们在文件类中有标准方法来读取列表。希望这有帮助。