In der Mitte eines Frames mit BorderLayout etwas malen

Ic3Cub3

Mitglied
Hallo zusammen,

ich verzweifle gerade etwas an einem Projekt für die Schule und bitte euch um Hilfe.

Ich habe ein JFrame mit BorderLayout. In die Mitte des BorderLayouts soll ein JPanel. Auf diesem JPanel würde ich gerne auf Knopfdruck eines Buttons, welcher sich am Rand der BorderLayouts befindet etwas malen.

Jedoch kriege ich noch nicht mal Schritt 1 hin. Ein Frame ist gesetzt:
Java:
import java.awt.BorderLayout;

import javax.swing.JFrame;

public class Fenster extends JFrame{

    public void setFrame() {
        //Fensterschließ-Operation
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        //Fenstername
        setTitle("MeinFenster");   
        //Fenstergroesse in px
        setSize(1000,1000);
        //Skalierung des Fensters
        setResizable(false);
        //Layout des Fensters
        setLayout(new BorderLayout());
        //Ort des Fensters in Relation
        setLocationRelativeTo(null);
        //Sichtbarkeit
        setVisible(true);
    }
    
}

Auch wurde ein JPanel erstellt:

Java:
import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JPanel;

public class MeinPanel extends JPanel{

    Fenster window = new Fenster();
    JPanel test = new JPanel();
    JPanel test1 = new JPanel();
    JPanel test2 = new JPanel();
    JPanel test3 = new JPanel();
    JPanel test4 = new JPanel();
    
    
    
    public void init() {
        window.setFrame();
        test.setBackground(Color.green);
        window.add(test, BorderLayout.CENTER);
        window.add(test1, BorderLayout.NORTH);
        window.add(test2, BorderLayout.EAST);
        window.add(test3, BorderLayout.SOUTH);
        window.add(test4, BorderLayout.WEST);
    }
    
}

Jedoch schaffe ich es einfach nicht dass dieser mir z.B. einen blauen Würfel in das Panel malt. Könnt ihr mir diesbezüglich helfen?

Danke!
 
Ok, ich hab mich vertan. Ich erhalte keine Errors, es wird nur nichts gezeichnet.

MeinPanel erbt von JPanel, weil das eine Vorgabe war... Allerdings musste ich ein neues JPanel erstellen, damit ich dieses zum Fenster adden konnte.
 
Wie meinst Du das? Du musst natürlich eine Instanz der Klasse erzeugen.

Wenn ich das mache:
Java:
MeinPanel p = new MeinPanel();

und p dann zum fenster in die Mitte adde, dann bekomme ich folgenden Errors:

Code:
Exception in thread "main" java.lang.StackOverflowError
    at java.awt.Window.init(Unknown Source)
    at java.awt.Window.<init>(Unknown Source)
    at java.awt.Frame.<init>(Unknown Source)
    at java.awt.Frame.<init>(Unknown Source)
    at javax.swing.JFrame.<init>(Unknown Source)
    at Fenster.<init>(Fenster.java:5)
    at MeinPanel.<init>(MeinPanel.java:9)
    at MeinPanel.<init>(MeinPanel.java:16)
    at MeinPanel.<init>(MeinPanel.java:16)
 
Ich sehe leider nicht, wo MeinPanel und Fenster erzeugt werden.

Ansonsten sollte das Panel nur aus folgendem Code bestehen:
Java:
public class MeinPanel extends JPanel {

    @Override
    protected void paintComponent(Graphics g) {
         // hier Code zum Zeichnen einfügen
    }
}
 

Neue Themen


Zurück
Oben