Hallo,
ich bekomme beim Kompilieren meines JPanels immer eine IllegalArgumentException:
ich bekomme beim Kompilieren meines JPanels immer eine IllegalArgumentException:
Kenn mich mit der Fehlermeldung aber nicht aus. Kann mir jemand sagen was dem Compiler nicht gefällt?Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
at java.awt.Container.addImpl(Container.java:1022)
at java.awt.Container.add(Container.java:935)
at javax.swing.JFrame.addImpl(JFrame.java:545)
at java.awt.Container.add(Container.java:352)
at Sudoku.<init>(Sudoku.java:39)
at Sudoku.main(Sudoku.java:25)
Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Sudoku extends JFrame{
private int x = 3;
private int y = 3;
private JTextField[][] jTextField;
private JPanel jPanel;
private JButton jButton;
private JFrame jFrame;
public static void main(String[] args) {
new Sudoku (200, 200);
}
/**
*
* @param w
* @param h
*/
public Sudoku(int w, int h) {
this.setPreferredSize(new Dimension(w, h));
// this.setBackground(Color.cyan);
jFrame = new JFrame("Sudoku");
// jFrame.setLocation(300, 300);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.add(this);
jFrame.pack();
jFrame.setVisible(true);
GUI();
}
/**
* grafische Oberflaeche
*/
public void GUI() {
setLayout(new BorderLayout());
jPanel = new JPanel(new FlowLayout());
jButton = new JButton("Neu");
jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
neu();
}
});
jPanel.add(jButton);
jButton = new JButton("Erstellen");
jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
erstellen();
}
});
jPanel.add(jButton);
add(jPanel, BorderLayout.NORTH);
jTextField = new JTextField[x][y];
jPanel = new JPanel(new GridLayout(x, y));
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
jTextField[i][j] = new JTextField();
jPanel.add(jTextField[i][j]);
}
}
add(jPanel, BorderLayout.CENTER);
}
public void neu() {
}
public void erstellen() {
}
}