【问题标题】:JTextFields don't show up, but they're still there. (the first one is "bugily" visible)JTextFields 没有出现,但它们仍然存在。 (第一个是“bugily”可见的)
【发布时间】: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;
    }

}

【问题讨论】:

    标签: java swing jframe visibility jtextfield


    【解决方案1】:

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

    【讨论】:

    • 谢谢!那成功了!但为什么?这些方法是如何导致问题的?
    • 你在覆盖这些方法 - 布局管理器然后使用它们来定位组件...
    • 你确定?我只是自己添加的。不知道我覆盖了任何东西
    • 是的,只需尝试添加@Override 注释。请参阅文档 herehere
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 2016-11-18
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多