Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将JTextField放入随机文本?_Java_Project_Jtextfield_Shuffle - Fatal编程技术网

Java 如何将JTextField放入随机文本?

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(){

我想在Textfield中显示shuffle单词。 到目前为止,这是我的随机代码:

    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将获得字符串生成器()。