java-Hangman中的GUI问题

java-Hangman中的GUI问题,java,Java,我试图用java制作一个使用JPanel和标签的刽子手游戏,但是我很难让我所有的面板都显示出来。我必须在文本字段下面的面板中绘制绞刑架,但是当我运行代码时,文本字段占据了整个GUI,根本不显示我的图形。如果有人能帮忙,那就太好了。这是我的密码 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.ut

我试图用java制作一个使用JPanel和标签的刽子手游戏,但是我很难让我所有的面板都显示出来。我必须在文本字段下面的面板中绘制绞刑架,但是当我运行代码时,文本字段占据了整个GUI,根本不显示我的图形。如果有人能帮忙,那就太好了。这是我的密码

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;


public class GameMaker extends JFrame {
    private JLabel label;
    private JButton button;
    private JButton button1;
    private JLabel wordLabel = new JLabel("Word to Guess");
    private JTextField text = new JTextField(5);
    private JPanel wordPanel = new JPanel();
    private JPanel displayPanel = new JPanel();
    private JPanel renameThisField;
    private Random random = new Random();
    private String[] guesses = {"Brendan", "Vaughn", "Josh"};
    private char[] randomWordToGuess = 
guesses[random.nextInt(guesses.length)].toCharArray();
    private int amountOfGuesses = randomWordToGuess.length;
    private char[] playerGuess = new char[amountOfGuesses];
    private Graphics g;

    public GameMaker(){
        createComponents();
    }

    public void createComponents(){
        boolean wordIsGuessed = false;
        int tries = 0;
        for (int i = 0; i<playerGuess.length; i++){
            playerGuess[i] = ' ';
            printArray(playerGuess);
        }

        JLabel wordToGuessLabelBlank = new JLabel("_ _ _ _ _ _ _");
        button = new JButton("Submit Letter");
        ActionListener listener = new SubmitLetter();
        button.addActionListener(listener);
        button1 = new JButton("adasdasd");
        ActionListener listener1 = new SubmitLetter();
        button1.addActionListener(listener1);
        label = new JLabel();

        JLabel wordLength = new JLabel("The word to Guess is " + playerGuess.toString() + 
"letters long.");
        JPanel panel = new JPanel();
        final int FIELD_WIDTH = 1;
        final JTextField rateField = new JTextField(FIELD_WIDTH);
        panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
        panel.add(wordLabel);
        panel.add(wordToGuessLabelBlank);
        panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
        panel.add(wordLength);
        panel.add(rateField);
        JComponent component = new BodyComponent();
        panel.add(component);
        panel.add(button);
        panel.add(label);
        add(panel);

    }
    public void printArray(char[] array){
        for(int i = 0; i < array.length; i++){
            System.out.println(array[i] + " ");
        }
    }

    public class SubmitLetter implements ActionListener
    {
        public void actionPerformed(ActionEvent event){


        }

        /*This is where the magic happens.
         * increment the numClicks and display results
         */
    }

}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.Random;
公共类GameMaker扩展了JFrame{
私人标签;
私人按钮;
私人按钮1;
私有JLabel wordLabel=新JLabel(“单词猜测”);
私有JTextField text=新JTextField(5);
private JPanel wordPanel=new JPanel();
private JPanel displayPanel=new JPanel();
private JPanel renameThisField;
私有随机=新随机();
私有字符串[]猜测={“Brendan”、“Vaughn”、“Josh”};
private char[]randomWordToGuess=
猜测[random.nextInt(guesss.length)].toCharArray();
private int amountofguesss=randomWordToguesss.length;
私有字符[]playerGuess=新字符[amountofguesss];
私有图形g;
公共游戏机(){
createComponents();
}
public void createComponents(){
boolean wordIsGuessed=false;
int=0;

对于(int i=0;该代码不完整。您是否有创建
GameMaker
并显示窗口的驱动程序代码?这将非常有帮助。此外,
BodyComponent
的代码未显示,请将其包含在MCVE中或从MCVE中删除该行。在我添加驱动程序类并删除一些lin后,上面的代码似乎显示正常无法解决的问题。您必须为我们做一些工作并发布一个,并且在描述实际问题时要具体说明。为什么要调用
panel.setLayout()
两次。?