我在JFrame中添加容器时遇到问题

时间:2020-03-08 10:24:21

标签: java jframe

我是信息学的学生,从Java入手,我想创建一个项目,使我能够制作计算器。

我遇到以下问题:我想用add(contenu)在我的JFrame中添加Container,但是它给了我以下警告:

线程“ main”中的Blockquote异常java.lang.IllegalArgumentException:将容器的父级添加到自身中

我不明白为什么会出现此问题。

这是我的项目的班级代码:

Main类:

package com.company;

import javax.swing.*;

public class Main {

    public static void main(String[] args) {
	// write your code here
        Fenetre fen = new Fenetre();
        fen.setVisible(true);
    }
}

费内特级:

package com.company;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Fenetre extends JFrame {
    public JButton boutonsNombre[];
    private static int nChiffres = 10;

    public Fenetre() {
        setTitle("CALCULATRICE");
        setSize(1700, 900);
        Container contenu = getContentPane();
        contenu.setLayout(new FlowLayout());
        add(contenu);
        boutonsNombre = new JButton[nChiffres];
        for (int k = 0; k < nChiffres; k++) {
            boutonsNombre[k] = new JButton(String.valueOf(k+1));
            contenu.add(boutonsNombre[k]);
        }
    }


}

您知道为什么这个问题会消失吗?

非常感谢您

通常是您的

1 个答案:

答案 0 :(得分:1)

正如评论中已经提到的那样,您正在尝试将JFrame的内容窗格添加到自身。

以下将起作用:

public Fenetre() {
        setTitle("CALCULATRICE");
        setSize(1700, 900);
        this.setLayout(new FlowLayout());
        boutonsNombre = new JButton[nChiffres];
        for (int k = 0; k < nChiffres; k++) {
            boutonsNombre[k] = new JButton(String.valueOf(k+1));
            this.add(boutonsNombre[k]);
        }
    }