Java 如何将JTextField放入随机文本?
我想在Textfield中显示shuffle单词。 到目前为止,这是我的随机代码:Java 如何将JTextField放入随机文本?,java,project,jtextfield,shuffle,Java,Project,Jtextfield,Shuffle,我想在Textfield中显示shuffle单词。 到目前为止,这是我的随机代码: public MyTextTwist(String w){ if (w != null){ word = getRandomWord(); txtWord.setText(word);} GameOver = false; } private String getRandomWord(){
public MyTextTwist(String w){
if (w != null){
word = getRandomWord();
txtWord.setText(word);}
GameOver = false;
}
private String getRandomWord(){
ArrayList<Character> chars = new ArrayList<Character>(txtWord.getText().length());
for ( char c : word.toCharArray() ) {
chars.add(c);
}
Collections.shuffle(chars);
char[] shuffled = new char[chars.size()];
for ( int i = 0; i < shuffled.length; i++ ) {
shuffled[i] = chars.get(i);
}String shuffledWord = new String(shuffled);
return shuffledWord;
}
publicMyTextTwist(字符串w){
如果(w!=null){
word=getRandomWord();
setText(单词);}
GameOver=false;
}
私有字符串getRandomWord(){
ArrayList chars=新的ArrayList(txtWord.getText().length());
for(char c:word.toCharArray()){
添加(c)项;
}
收藏。洗牌(字符);
char[]shuffled=新字符[chars.size()];
for(int i=0;i
它不显示 同样,如果要将文本放回JTextField,代码必须通过在JTextField上调用setText(…)来完成,但是在构造函数中不能这样做,因为当调用构造函数时,用户没有机会在JTextField中输入任何文本。相反,您必须在对事件的响应中调用此方法,可能是在已添加到JButton的ActionListener中:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import javax.swing.*;
public class TestWordScramble extends JPanel {
private JTextField txtWord = new JTextField(10);
private JButton scrambleBtn = new JButton("Scramble");
public TestWordScramble() {
scrambleBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String word = getRandomWord(txtWord.getText());
txtWord.setText(word);
}
});
add(txtWord);
add(scrambleBtn);
}
private String getRandomWord(String text) {
ArrayList<Character> chars = new ArrayList<Character>();
for (char c : text.toCharArray()) {
chars.add(c);
}
Collections.shuffle(chars);
char[] shuffled = new char[chars.size()];
for (int i = 0; i < shuffled.length; i++) {
shuffled[i] = chars.get(i);
}
String shuffledWord = new String(shuffled);
return shuffledWord;
}
private static void createAndShowGui() {
TestWordScramble mainPanel = new TestWordScramble();
JFrame frame = new JFrame("TestWordScramble");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.ArrayList;
导入java.util.Collections;
导入javax.swing.*;
公共类TestWordScramble扩展了JPanel{
私有JTextField txtWord=新JTextField(10);
私有JButton-scrambleBtn=新JButton(“加扰”);
公共TestWordScramble(){
scrambleBtn.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
String word=getRandomWord(txtWord.getText());
setText(word);
}
});
添加(txtWord);
添加(BTN);
}
私有字符串getRandomWord(字符串文本){
ArrayList chars=新的ArrayList();
for(char c:text.toCharArray()){
添加(c)项;
}
收藏。洗牌(字符);
char[]shuffled=新字符[chars.size()];
for(int i=0;i
对不起,您的代码有什么问题吗?我很难理解你的最后一句话“它不是单词。我想在我的扭转按钮中使用它。”如果你的意思是“它不起作用”,那么请告诉我们它如何以及为什么不起作用。您是否收到错误消息?如果是,请显示它们。我有一个文本字段,但我不能在文本字段中放一个单词。我要放的是乱排的字母。是否要将JTextField中的单词替换为泛排的文本?如果是这样,您可以简单地调用txtWord.setText(shuffledWord)此方法底部的代码>。或者让调用此方法的代码使用返回的字符串,并将其放置在JTextField或它喜欢的任何地方。不,我想在文本上放置一个混洗字母。例如,当我运行该程序时,文本字段中会自动显示洗牌的单词。这就是我告诉你的方法。非常漂亮的气垫船,装满了鳗鱼+谢谢!谢谢你的代码。但另一个问题尚未解决。我想这个词是自动显示在文本字段就像真正的texttwist游戏。我可以使用相同的过程或逻辑吗?如何自动使用?关于程序创建?如果是这样的话,字符串是从哪里来的?在用户输入之后?你肯定不想让用户输入这个词时,这个词会出现混乱,对吧?如果在用户输入后,什么事件会触发单词加扰?你需要给我们所有的细节,特别是为什么当前的建议对你没有帮助。“这里在WordGenerator.generator()中。不。用户只键入猜测板。”--抱歉,但这对我来说没有意义。您的回复好像我们完全理解您的程序,包括未在此处发布的部分。请准确地解释你想做什么,就好像我们不知道你的程序在做什么,就好像我们看不懂你的心思一样。这是非常有帮助的。另外,我希望文本字段中有一个自动随机单词/字符串。whisch将获得字符串生成器()。