我是信息学的学生,从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]);
}
}
}
您知道为什么这个问题会消失吗?
非常感谢您
通常是您的
答案 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]);
}
}