java - 将数组中的数组中的选定字符串打印到 JTextField 数组上

标签 java arrays swing list jtextfield

经过大量研究和反复试验,我无法找出如何准确地随机选择 String来自String ArrayArrayString Array s 并将其逐字符打印到 JTextField ArrayJButton之后被按下。我知道这听起来……很尴尬,但不知道如何表达才能让它听起来不那么尴尬。所以,这是我制作的类,它使 JTextField ArrayJPanel上。

package wheelOfFortune;

import java.awt.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.swing.*;
import java.util.List;
import java.util.ArrayList;

 public class letterBoard extends JPanel
                            implements ActionListener                   
 {
 private static JTextField[] fields;
 private static final String wheelFoods[] = {"PASTRAMI SANDWICH","PEANUT BUTTER","JAR OF PICKLES","NUTELLA SPREAD","SPAGHETTI AND MEATBALLS","BUTTERED LOBSTER","KING CRAB","PIRATES BOOTY","ORANGE JUICE","GRILLED STEAK","MOLTEN LAVA CAKE"};
 private static final String wheelHouse[] = {"BURNT OUT LIGHTBULB", "VACUUM CLEANER","DESKTOP COMPUTER", "ANTIQUE FURNITURE","FLATSCREEN TELEVISION","COFFEE TABLE","MAHOGANY DESK","GARDENING SUPPLIES","REMOTE CONTROLLER"};
 private static final String wheelMovies[] = {"SAVING PRIVATE RYAN","THE GREAT GATSBY", "ZOOLANDER","ANCHORMAN","STEP BROTHERS","THE DARK NIGHT RISES",
     "PULP FICTION","FIGHT CLUB","THE SIXTH SENSE","DJANGO UNCHAINED","SHUTTER ISLAND","THE EVIL DEAD","THE NOTEBOOK","FORREST GUMP","HAPPY GILMORE","THE CHRONICLES OF NARNIA",
     "BILL AND TEDS MOST EXCELLENT ADVENTURE","HAROLD AND KUMAR","HARRY POTTER","THE SHAWSHANK REDEMPTION", "THE TERMINATOR", "THE BLUES BROTHERS", "V FOR VENDETTA"};
 private static final String wheelPeople[] = {"OPRAH WINFREY","SPONGEBOB SQUAREPANTS","PATRICK STAR", "LEONARDO DICAPRIO","WILL FERRELL", "NEIL ARMSTRONG", "BARACK OBAMA", "JON TRAVOLTA", "ARNOLD SCHWARZENEGGER", "JAMES FRANCIS RYAN", "MS VOLDSTAD",
     "BILLY MAYS", "EDWARD SCISSORHANDS","BILL GATES", "STEVE JOBS", "GANDOLF THE GRAY","TWOCHAINZ","RICK ASTLEY"};
 private static final String wheelPlaces[] = {"THE EIFFEL TOWER","MOUNT RUSHMORE","THE MOON", "THE GREAT WALL OF CHINA", "FISHERMANS WARF", "DISNEYLAND", "UNDERNEATH A DESK IN A CLASSROOM", "THE GREAT PLAINS", "THE GREAT BARRIER REEF", "AMERISTRALIA", "THE EMPIRE STATE BUILDING",
     "THE NORTH POLE", "THE SPACE NEEDLE", "THE KRUSTY KRAB","WEENIE HUT JUNIOR","THE FORBIDDEN PALACE","MORDOR", "NARNIA","THE LAST STALL ON THE LEFT", "INSIDE OF A BOUNCY HOUSE"};
 private static final String wheelRandom[] = {"A BOWL OF OATMEAL","LEMON PLEDGE","GREASY HAMBURGERS", "STAINED PANTS", "A CUP OF CHOCOLATE MILK", "ROLLY CHAIRS", "BENDY STRAWS", "WIENER DOGS", "AN ANGRY OSTRICH", "BART SIMPSON","A CONFUSED MOUNTAIN COW",
     "BIGFOOT", "THE ILLUMINATI", "THE C HALL BATHROOMS", "A SHAVED BABOON", "THE SPICE GIRLS", "I AM STUPID"};
 private Box[] boxes = new Box[SUIT_COUNT];
 private static int TEXT_FIELD_COUNT = 14;
 private static int SUIT_COUNT = 1;
 Color yungMoney = new Color(0, 180, 100);
 private static String puzzle;
 private static List<JTextField> field;
 private static String[][] puzzles = {wheelFoods, wheelHouse, wheelMovies, wheelPeople, wheelPlaces, wheelRandom};
 private static String[] puzzless;
 private static JPanel panel;

public letterBoard()
{
    fields =  new JTextField[TEXT_FIELD_COUNT];
    setPreferredSize(new Dimension(1,299));
    setBackground(yungMoney);
    JPanel panel = new JPanel(new GridLayout(0,14));
    panel.setBackground(yungMoney);
    for(int t=0; t<4; t++)
    {
        for (int i =0; i < boxes.length; i++)
        {
            boxes[i] = Box.createHorizontalBox();
            for (int j=0; j< TEXT_FIELD_COUNT/SUIT_COUNT; j++)
            {
                int index = i * (TEXT_FIELD_COUNT/SUIT_COUNT) + j;
                fields[index] = new JTextField("    ");
                fields[index].setEditable(false);
                fields[index].setPreferredSize(new Dimension(50, 50));
                fields[index].setBorder(BorderFactory.createLineBorder(Color.BLACK,1));
                panel.add(fields[index]);
            }
        }
    }
    panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK,2),"WHEEL OF FORTUNE"));
    add(panel);
}
public static String findPuzzle()
{
    for(int i=0; i<puzzles.length;i++)
    {
        puzzless = puzzles[(int) Math.round(Math.random() * (puzzles.length-1))];
        for(int j=0; j<puzzless.length; j++)
        {
            puzzle = puzzless[(int) Math.round(Math.random() * (puzzless.length-1))];
        }
    }
    return puzzle;
}
public static void reset()
{
    findPuzzle();
    field = new ArrayList<>(puzzle.length());
    for(int k=0;k<puzzle.length();k++)
    {
        field.add(fields[k]);
    }
}
public void actionPerformed(ActionEvent e) 
{
    //game logic
}
} 

所以,JTextField Array是在类 letterBoard 的构造函数内形成的。构造函数正在运行并且按预期工作。然而,String puzzles[][] ,它保存了拼图被归档的各种数组,(这是一个命运之轮游戏。每个人 array 都是一个里面有拼图的类别,等等)并没有按照我想要的方式与我合作。我本质上想要发生的是:方法 reset()获取构造函数中形成的 letterBoard 并用 String 填充它。在方法findPuzzle()中选择。从那里,一个ActionListener在主课中,wheelGUI将连接到JButton reset ,按下时应调用 reset()方法来自letterBoard类并从板上删除当前拼图,并用从 puzzles[][] 中随机选择的新字符串填充它。 ,允许新一轮的游戏。抱歉,如果这有点……令人困惑。我自己也很困惑。我看了一些写作教程StringsJTextFields ,但我的设置略有不同,并且不允许这种方法起作用。感谢您花时间查看此内容。我将发布wheelGUI类代码(如果需要),但我认为它不包含与此问题有关的任何相关信息。再次感谢。

最佳答案

我认为你正在尝试做类似的事情......

public static void reset() {
    findPuzzle();
    field = new ArrayList<>(puzzle.length());
    // Clear the existing values
    for (int index = 0; index < fields.length; index++) {
        fields[index].setText(null);
    }
    // Update the new values
    for (int k = 0; k < puzzle.length(); k++) {
        // Get an individual character from the String and make it a String
        // cause it's easier to deal with...
        String character = Character.toString(puzzle.charAt(k));
        fields[k].setText(character);
        field.add(fields[k]);
    }
}

现在这将显示答案,但我认为你可以解决它......

关于java - 将数组中的数组中的选定字符串打印到 JTextField 数组上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16827900/

相关文章:

java - 调试 GridBagLayout - 组件聚集到中心

java - Java中能否将字符串转换为包含转义序列的字符串?

java - 为什么我的 jquery ajax 给出 406

java - 正则表达式删除字符串中的最后一个单词

java - 如何处理作为参数发送到 Servlet 的空白日期

c - C 数组中的最大最小值(带指针)

java - 从另一个类运行时,GUI 不响应鼠标单击和拖动

JAVA 或我的 IDE 的限制或 SQL 问题?

python - numpy:如何将函数应用于数组的每一行

Java - 如何创建一个带值的字符串数组?