JTextFields 没有出现,但它们仍然存在。 (第一个是“bugily”可见的)

Posted

技术标签:

【中文标题】JTextFields 没有出现,但它们仍然存在。 (第一个是“bugily”可见的)【英文标题】:JTextFields don't show up, but they're still there. (the first one is "bugily" visible) 【发布时间】:2015-01-04 10:14:20 【问题描述】:

它在一小时前工作,但我一定对代码做了什么,我不知道是什么。我的JTextFields 没有出现,但如果我将它们设置为可编辑,它们仍然存在。第一个JTextField 确实出现了,但看起来很奇怪。有什么想法有什么问题吗? (我称我的JTextFields 为“Square”)。大小 = 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();
    

我的文本字段:

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;
    


【问题讨论】:

【参考方案1】:

删除布局管理器用来定位Square 组件的方法getXgetY。这将使布局管理器正确定位按钮。

【讨论】:

谢谢!那成功了!但为什么?这些方法是如何导致问题的? 你在覆盖这些方法 - 布局管理器然后使用它们来定位组件... 你确定?我只是自己添加的。不知道我覆盖了任何东西 是的,只需尝试添加@Override 注释。请参阅文档 here 和 here

以上是关于JTextFields 没有出现,但它们仍然存在。 (第一个是“bugily”可见的)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 出现 DROP USER;但用户仍然存在于 mysql.users 表中

从 JTextFields 发布到数组中

如何将文档侦听器添加到面板内的 JTextFields?

JTextFields 在 JPanel 上的活动绘图之上,线程问题

SQL Server 表中缺少记录

没有告诉 Protobuf 网络序列化 System.Object 但仍然出现错误:没有为类型定义序列化程序:System.Object