JTextFields没有出现,但它们仍然存在.(第一个是"可疑的")

Adr*_*son 0 java swing visibility jframe jtextfield

它工作一小时前,但我必须对代码做了一些事情,我不知道是什么.我JTextField没有出现,但如果我将它们设置为可编辑,它们仍然存在.第一个JTextField确实出现了,但看起来很奇怪.有什么想法有什么不对吗?(我称之为JTextField"广场").大小= 10

package gui;

import javax.swing.*;
import engine.GameEngine;
import java.awt.*;
import java.util.*;

public class MineFieldGUI extends JFrame {
    private GameEngine engine;
    Square[][] field;
    int size = 10;

    public MineFieldGUI(GameEngine minefield) {     
        super("MineField");
        this.engine = minefield;
        this.size = minefield.getSize();

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        this.setSize(300, 350);
        Locale.setDefault(new Locale("en"));

        setLayout(new BorderLayout());

        JMenuBar menubar = new JMenuBar();
        setJMenuBar(menubar);
        JMenu helpMenu = new JMenu("Help");
        menubar.add(helpMenu);
        helpMenu.add(new HelpMenu(this));



        //***THE MINE-FIELD***
        JPanel panel = new JPanel(new GridLayout(size,size));
        field = new Square[size][size];
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                field[i][j] = new Square(i, j);
                panel.add(field[i][j]);
            }
        }
        add(panel, BorderLayout.CENTER);    
        setVisible(true);
    }

    public void setColor(int x, int y){
        field[x][y].setBackground(Color.lightGray);
    }

    public void setText(int x, int y, String text){
        field[x][y].setText(text);
    }

    public String getText(int x, int y){
        return field[x][y].getText();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的textFields:

package gui;
import java.awt.Color;
import javax.swing.JTextField;

public class Square extends JTextField {

    int posX;
    int posY;

    public Square(int x, int y) {
        super("");
        posX = x;
        posY = y;

        this.setEditable(false);
        this.setBackground(Color.lightGray);
    }

    public int getX(){
        return posX;
    }
    public int getY(){
        return posY;
    }

}
Run Code Online (Sandbox Code Playgroud)

Rei*_*eus 5

卸下方法getXgetY正在使用由布局管理器的位置Square 的部件.这将让布局管理器正确定位按钮.