为什么我的Jframe打开一个空窗口?

时间:2015-03-11 01:22:34

标签: java swing user-interface layout jframe

我试图像Puralax一样为学校制作游戏。这是我的第一年。

目前,我正在通过“测试测试”进行测试。和' DitMoetWerken.java'用于制作完整JFrame的类。

我的猜测是VakUI没有画画,但我不知道为什么。这些应该是我矩阵中的方块。

这是我调用所有JFrame的地方:

public class DitMoetWerken extends JFrame {
Spel spel;

public DitMoetWerken(Spel spel, int level) throws HeadlessException {
    this.spel = spel;
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    setSize(800,500);
    setTitle("Puralax");
    setVisible(true);
    spel.beginLevel(level);
    SpelFrame spelFrame = new SpelFrame(spel,new JButton("terugknop"),new JButton("resetknop"));
    this.add(spelFrame,BorderLayout.CENTER);

这是我为自己的比赛制作名单的地方。它是一个矩阵,在这个级别中长度为3x3:

public class SpelbordUI extends JPanel {

private final Spel spel;
private SpelRooster spelRooster;
private boolean vakChecker = false;
private  Vak bewaardVak;

public SpelbordUI(Spel spel) {
    this.spel = spel;
    this.spelRooster = spel.getSpelRooster();
    initAll();

}

private void initAll(){
    this.removeAll();
    this.setLayout(new GridLayout(spelRooster.getLengte(),spelRooster.getLengte(),20,20));

    for (int i = 0; i < spelRooster.getLengte(); i++) {
        for (int j = 0; j < spelRooster.getLengte(); j++) {
            VakUI vak = new VakUI(spelRooster.getRooster()[i][j]);

            this.add(vak);

        }
    }
}}

A&#39; vak&#39;在我的语言中是一个正方形。对不起任何可能的混淆。 这个VakUI的类看起来像这样,我认为我的问题在于paintComponent。我认为它应该只是填充VakUI中的vak,因为this.setBackground(kleur)或者我应该在新的方块中绘制它们吗?

public class VakUI extends JPanel {

private Color kleur;
private Vak vak;

public VakUI(Vak vak) {
    this.vak = vak;
    this.kleur = vak.getKleur();
}

public Vak getVak() {
    return vak;
}

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    this.setBackground(kleur);

}}

1 个答案:

答案 0 :(得分:0)

在课堂上DitMoetWerken。 setVisible();应该放在this.add(spelFrame,BorderLayout.CENTER);下面。这解决了我的空窗问题。