这个问题非常普遍,但是,因为我是一个Java菜鸟而且我没有多少练习,我无法应用我在其他主题中找到的答案。
所以这是我的情况:
我希望有一个 ArrayList ,其中包含指定文件夹的文件名,使用此代码我可以拥有它:
File dir = new File(" ++++++ Insert Path Here ++++++");
List<String> list = Arrays.asList(dir.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".mp3");
}
}));
String[] stockArr = new String[list.size()];
stockArr = list.toArray(stockArr);
之后,我想用stockArr
中包含的随机字符串命名一些 JButtons ,好的,很容易做到:
JButton bottone1 = new JButton();
JButton bottone2 = new JButton();
JButton bottone3 = new JButton();
Random r = new Random();
bottone1.setText(stockArr[r.nextInt(stockArr.length)]);
bottone2.setText(stockArr[r.nextInt(stockArr.length)]);
bottone3.setText(stockArr[r.nextInt(stockArr.length)]);
现在我的问题: 我怎么能避免在 JButton的文本?
中有重复的随机字符串P.S。:我不得不说,有时候,在寻找答案时,我无法理解某人的建议,因为他们只写了一部分代码,或者他们认为其他人有知识可以完全理解他们所写的内容。所以我问你是否可以更加具体,一步一步,就像教程一样,非常感谢:)
整个代码:
import java.awt.Container;
import java.io.*;
import java.util.*;
import javax.swing.*;
public class BottoniRandom {
public static void main(String[] args) {
JFrame finestra = new JFrame("ESEMPIO");
finestra.setBounds(100, 500, 300, 200);
Container contenuto = finestra.getContentPane();
contenuto.setLayout(new BoxLayout(contenuto, BoxLayout.Y_AXIS));
JButton bottone1 = new JButton();
JButton bottone2 = new JButton();
JButton bottone3 = new JButton();
File dir = new File(" ++++++ Insert Path Here ++++++");
List<String> list = Arrays.asList(dir.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".mp3");
}
}));
String[] stockArr = new String[list.size()];
stockArr = list.toArray(stockArr);
System.out.println(stockArr.length);
Random r = new Random();
bottone1.setText(stockArr[r.nextInt(stockArr.length)]);
bottone2.setText(stockArr[r.nextInt(stockArr.length)]);
bottone3.setText(stockArr[r.nextInt(stockArr.length)]);
contenuto.add(bottone1);
contenuto.add(bottone2);
contenuto.add(bottone3);
finestra.setVisible(true);
finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}