JPanel in JFrame

Generic1

Top Contributor
Hi,

ich hab schon lange nichts mehr mit Swing gemacht und scheitere schon an einfachen Dingen, z.B.: ein JPanel in ein JFrame zu platzieren.
Weiß jemand was ich falsch mache? MyPanel ist einfach von JPanel abgeleitet, sonst nichts:

Java:
import java.awt.Graphics;
import javax.swing.JPanel;

public class MyPanel extends JPanel {

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        }
}

Java:
package framepaneltest;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;

public class Main {

    public Main() {
        MyPanel mp = new MyPanel();
        mp.setBackground(Color.RED);
        mp.setPreferredSize(new Dimension(300, 300));
        mp.setVisible(true);
        mp.repaint();

        JFrame f = new JFrame();
        f.setBackground(Color.GREEN);
        BorderLayout bl = new BorderLayout();
        f.setLayout(bl);
        f.setBounds(0, 0, 700, 700);
        f.add(mp, BorderLayout.CENTER);
        f.setVisible(true);
        }

    public static void main(String[] args) {
        new Main();
        }
}
 

André Uhres

Top Contributor
Du scheiterst am Layoutmanager. In Deinem Fall siehst Du die normale Reaktion des BorderLayout: er beansprucht nämlich im mittleren Bereich so viel von dem verfügbaren Raum wie möglich! Siehe auch: Using Layout Managers
Gruß,
André

PS: Mit einem Builder-Tool, wie dem NetBeans IDE Matisse GUI Builder, kannst Du die Reaktion von verschiedenen Layoutmanagern in Echtzeit beobachten.
 
Zuletzt bearbeitet:

California

Aktives Mitglied
Mach mal
Code:
Frame.setContentPane( Panel );
und lass den LayoutManager weg. (nur jetzt!)
Den brauchst Du erst, wenn Du Komponenten auf einem Panel anordnest (Oder mehrere Panels in einem grossen Panel).
Mein Favorit ist GridBagLayout.
Und lass die Finger von Matisse (Meine Meinung, ich bin Gegner des visuellen Designens ;-))
 

André Uhres

Top Contributor
Mach mal
Code:
Frame.setContentPane( Panel );
und lass den LayoutManager weg.

Dein Vorschlag ändert nichts am Resultat: der Panel beansprucht immer noch so viel von dem verfügbaren Raum wie möglich, was er wegen [c]mp.setPreferredSize(new Dimension(300, 300))[/c] offensichtlich nicht will !

Und lass die Finger von Matisse (Meine Meinung, ich bin Gegner des visuellen Designens ;-))
Beim "visuellen Designen" unterscheiden wir drei unterschiedliche Standpunkte: Verfechter, Gegner und Fürsprecher nur bei Prototyp Entwürfen. Ich zähle mich zu den Letzteren ;).

Gruß,
André
 

California

Aktives Mitglied
Java:
Frame.pack(); // macht den Frame so gross, dass die Komponenten mit preferredSize draufpassen
Frame.setVisible( true );

Das ist halt auch nicht das, was er will. Ansonsten in einem Layout alle Plätze rundherum mit
Code:
new JPanel()
belegen.
Z.B. in einem 2,2 GridBagLayout das Panel auf Posiition 0,0 einfügen und die anderen 3 Plätze mit leeren JPanels belegen.

@André: Standpunkt drei ist genehmigt :)
 
Zuletzt bearbeitet:

André Uhres

Top Contributor
Java:
Frame.pack();
Frame.setVisible( true );

Das ist wegen [c]f.setBounds(0, 0, 700, 700);[/c] offensichtlich auch unerwünscht !

@André: Variante drei ist genehmigt :)
Danke :).

Gruß,
André

PS:
Z.B. in einem 2,2 GridBagLayout das Panel auf Posiition 0,0 einfügen und die anderen 3 Plätze mit leeren JPanels belegen.
Leere JPanels sind eventuell gar nicht nötig, wenn man das Panel einfach zentriert(*). GridBagLayout respektiert nämlich die PreferredSize/MinimumSize. Ansonsten würde Dein Vorschlag auch mit BorderLayout funktionieren ;).
(*) respektiv mit anchor=FIRST_LINE_START oben links platziert
 
Zuletzt bearbeitet:

California

Aktives Mitglied
PS:
Leere JPanels sind eventuell gar nicht nötig, wenn man das Panel einfach zentriert. GridBagLayout respektiert nämlich die PreferredSize/MinimumSize. Ansonsten würde Dein Vorschlag auch mit BorderLayout funktionieren ;).

Da könntest Du recht haben...
Ich bin da so drin, dass mir die leeren JPanels zum auffüllen quasi von alleine ins Layout marschieren...;-)
Undd denke nicht mehr drüber nach, der Fluch der Routine...
 

California

Aktives Mitglied
Wir haben das GridBagLayout in eine Helperklasse eingekapselt und sagen im Wesentlichen nur noch
Java:
GridBagLayoutHelper helper = new GridBagLayoutHelper( this, 2 ); // Init mit Insets = 2 und this als Container
helper.addToNew( getComp1() );
helper.addToLast( getComp2() );
...

und so fort, der Helper weiss, welche Zeile und Spalte er zuletzt belegt hat und macht bei addToNew einfach eine neue Zeile und bei addToLast eine neue Spalte in der letzten Zeile.
Ach ja, explizite Positions- und Weight- und Extension- Parameter gibt es in Überladungen, auch eine mit boolean fullSize, wo er dann die Weights 1.0 macht.
Man wird halt faul...
 

L-ectron-X

Gesperrter Benutzer
@Generic1:
Noch ein Hinweis zum Thema:
In einer Swing-Komponente niemals die paint()-Methode überschreiben!
Statt dessen ist bei Bedarf (also wenn man selbst ins Panel zeichnen möchte) die paintComponent()-Methode zu überschreiben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I JPanel soll sich dem JFrame anpassen Allgemeine Java-Themen 1
S OOP JFrame als Observer eines JPanel Allgemeine Java-Themen 3
P JPanel - JFrame Allgemeine Java-Themen 6
M Neues JPanel in JFrame einbinden Allgemeine Java-Themen 6
P Image auf JPanel auf JFrame Allgemeine Java-Themen 3
P JPanel in JFrame Allgemeine Java-Themen 2
Y Bild in JPanel setzen Allgemeine Java-Themen 2
Y Wie kann ich ein erstelltes JPanel meinem Frame hinzufügen? Allgemeine Java-Themen 1
G JPanel lädt nicht?! Allgemeine Java-Themen 20
D JPanel in Mail darstellen Allgemeine Java-Themen 30
T Drucken von JPanel Allgemeine Java-Themen 4
Sin137 OOP Auf JPanel zugreifen, das einem JTabbePane hinzugefügt worden ist Allgemeine Java-Themen 10
M Threads JPanel eingeforen mit Threads Allgemeine Java-Themen 2
F JPanel Hintergrundbilder Allgemeine Java-Themen 1
C Position speichern von verschiebbaren Elementen auf JPanel Allgemeine Java-Themen 3
S JPanel einfügen in MainClass Allgemeine Java-Themen 4
S JLabel auf JPanel Allgemeine Java-Themen 10
DStrohma Swing Nicht möglich für ein JPanel den Fokus zu bekommen? Allgemeine Java-Themen 9
S Swing JPanel werden nicht angezeigt Allgemeine Java-Themen 6
T iText Dokument in DB und dann in ein JPanel Allgemeine Java-Themen 5
B JScrollPane und JPanel: Scrollen nur nach Größe des JPanels Allgemeine Java-Themen 2
Z Dynamisches JPanel Allgemeine Java-Themen 10
J Arbeiten mit Punkten in einem JPanel Allgemeine Java-Themen 3
H JPanel direkt in PDF umwandeln Allgemeine Java-Themen 2
L JPanel schraffiert,contour oder sonst was? Allgemeine Java-Themen 3
G Componenten auf JPanel disablen Allgemeine Java-Themen 3
MQue Raster auf einem JPanel Allgemeine Java-Themen 8
S Lässt sich eigne JPanel Klasse in ein Array "stecken&qu Allgemeine Java-Themen 5
M JTable verändert Position auf meinem JPanel Allgemeine Java-Themen 3
T JPanel to Image? Allgemeine Java-Themen 6
MQue JPanel Allgemeine Java-Themen 8
P JPanel/Zoom Allgemeine Java-Themen 2
L JPanel(bzw.) Panels transparent machen Allgemeine Java-Themen 7
T Allgemeinklasse zu JPanel, JButton. Allgemeine Java-Themen 26
P JPanel in JPanel Allgemeine Java-Themen 3
P Browser in JPanel Allgemeine Java-Themen 3
MQue Komponenten einem JPanel hinzufügen Allgemeine Java-Themen 9
MQue JButton zu JPanel hinzufügen Allgemeine Java-Themen 7
E Pixelweise auf einem JPanel/JLabel o.ä. zeichnen Allgemeine Java-Themen 4
M IExplorer in einen JPanel öffnen und kontrollieren? Allgemeine Java-Themen 9
F While(true)-Schleife im JPanel Allgemeine Java-Themen 9
M ContentPane und JPanel Allgemeine Java-Themen 8
T JApplet - JEditorPane gegen JPanel tauschen Allgemeine Java-Themen 2
S JPanel zur Laufzeit verbergen bzw. wieder anzeigen lassen Allgemeine Java-Themen 4
G JComboBox mit aufklappbarem JPanel? Allgemeine Java-Themen 13
G Aus JPanel Image Hohlen Allgemeine Java-Themen 3
G JPanel auto scrollen Allgemeine Java-Themen 2
Tobero JFrame nimmt keinen Key oder Maus inputs Allgemeine Java-Themen 0
FRI3ND JFrame wird nicht angezeigt Allgemeine Java-Themen 3
N JFrame für Minispiele Allgemeine Java-Themen 14
F JFrame fü Eclipse wie? Allgemeine Java-Themen 6
4 Swing JFrame BackgroundColor Allgemeine Java-Themen 3
RalleYTN Merkwürdiger Fehler mit JFrame im Vollbild Allgemeine Java-Themen 4
snipesss Visueller Countdown in JFrame Allgemeine Java-Themen 1
K Swing OpenStreetMap in JFrame einfügen Allgemeine Java-Themen 1
K Best Practice JFrame Objekt allgemein zugänglich machen Allgemeine Java-Themen 8
S JFrame Variable mitgeben Allgemeine Java-Themen 5
F JFrame übergeben Allgemeine Java-Themen 5
B JFrame Text Ausgabe Allgemeine Java-Themen 7
T JFrame Overlay Allgemeine Java-Themen 1
I JFrame vor schliessen, methode auführen Allgemeine Java-Themen 2
I JFrame Icon in Main übergeben Allgemeine Java-Themen 1
? AWT Translucent JFrame mit repaint Allgemeine Java-Themen 4
X Modalität von JDialog nachträglich in JFrame implementieren? Allgemeine Java-Themen 8
P Ableitungsfehler JFrame Allgemeine Java-Themen 5
A Excel Tabelle in JFrame darstellen Allgemeine Java-Themen 6
S JFrame an Fenstergröße anpassen Allgemeine Java-Themen 16
S JDialog Daten ins JFrame übergeben Allgemeine Java-Themen 5
E Grafiken auf dem JFrame Allgemeine Java-Themen 5
D Bilder in JFrame anzeigen Allgemeine Java-Themen 5
X Kann JLabel in JFrame nicht aktualisieren Allgemeine Java-Themen 3
J pack() lässt JFrame grau Allgemeine Java-Themen 3
J JFrame / PopUp-Menü bearbeiten Allgemeine Java-Themen 2
M JFrame absolut im Vordergrund Allgemeine Java-Themen 2
D JFrame nur in eine Richtung resizen Allgemeine Java-Themen 6
X JFrame sichtbar bei einem gesperrten Computer Allgemeine Java-Themen 11
U Zeichnen mit JFrame. Allgemeine Java-Themen 5
N JFrame Icon selbst erzeugen Allgemeine Java-Themen 2
T applet und JFrame Allgemeine Java-Themen 12
T abspeichern und laden von objekten in JFrame Allgemeine Java-Themen 2
Developer_X JFrame verkleinern Allgemeine Java-Themen 20
D Problem mit Tooltips und JFrame (Tooltips sind zu kurz!) Allgemeine Java-Themen 4
Z Uralt-Applet in JFrame Anwendung konvertieren Allgemeine Java-Themen 12
F JFrame zeigt Hintergrund und nicht den Inhalt Allgemeine Java-Themen 12
G Bilder einer Webcam im JFrame anzeigen Allgemeine Java-Themen 5
D Von Thread auf JFrame zugreiffen? Allgemeine Java-Themen 5
M JFrame anpassen Allgemeine Java-Themen 4
W Das schließen des JFrame abfangen, wiei? Allgemeine Java-Themen 6
M PDF auf JFrame Allgemeine Java-Themen 10
D JFrame vergrößert nicht auf die gewünschte Größe Allgemeine Java-Themen 2
MQue JFrame nur einmal öffnen Allgemeine Java-Themen 3
MQue Fokus von Komponenten/JFrame Allgemeine Java-Themen 3
MQue JFrame bleibt hängen Allgemeine Java-Themen 3
T Sound in JFrame: Ich krichs nich hin =( Allgemeine Java-Themen 7
E 2 Images auf einem JFrame Allgemeine Java-Themen 8
TheJavaKid Component in der Titelleiste vom JFrame? Allgemeine Java-Themen 18
G Word-Dokument in einem JFrame Allgemeine Java-Themen 2
T Servlet und JFrame Allgemeine Java-Themen 2
S JFrame mit Wartezeit Allgemeine Java-Themen 12
thE_29 Java App/JFrame Bildschirm "sperren" Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben