Swing JBorderLayout - Abstand

Status
Nicht offen für weitere Antworten.

Chimi

Mitglied
Guten Tag. Ich habe mal zu Testzwecken folgende kleine Oberfläche geschrieben:

[HIGHLIGHT="Java"]import javax.swing.*;
import java.awt.*;

public class Anmeldung extends JFrame
{
private JTextField textfeld_name = new JTextField();
private JPasswordField textfeld_passwort = new JPasswordField();

public Anmeldung(String title)
{
super(title);

setLayout(new BorderLayout());

JPanel beschreibung = new JPanel(new GridLayout(2,1,5,5));
beschreibung.add(new JLabel("Name: "));
beschreibung.add(new JLabel("Passwort: "));
add(beschreibung, BorderLayout.WEST);

JPanel eingabe = new JPanel(new GridLayout(2,1,5,5));
eingabe.add(textfeld_name);
eingabe.add(textfeld_passwort);
add(eingabe, BorderLayout.CENTER);

JPanel unten = new JPanel(new FlowLayout(FlowLayout.CENTER));
add(unten, BorderLayout.SOUTH);
JPanel knoepfe = new JPanel(new GridLayout(1,2,5,5));
knoepfe.add(new JButton("Anmelden"));
knoepfe.add(new JButton("Abbrechen"));
unten.add(knoepfe);

setSize(400, 150);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}

public static void main(String[] args)
{
Anmeldung a = new Anmeldung("Anmeldung");
}
}[/HIGHLIGHT]

Wie kann ich hier einen Abstand zum Fensterrand hinbekommen? Also Links neben den JLabels und Rechts neben den Textfeldern? setLayout(new BorderLayout(10,10)) setzt ja nur den Abstand der Zellen untereinander, aber wie mach ich das um das Borderlayout herum ein Rahmen entsteht?

LG Chimi
 
Zuletzt bearbeitet von einem Moderator:
M

MiDniGG

Gast
such mal nach irgendwas mit padding :)

Edit: Oder setz einfach mal en BorderLayout um das BorderLayout. Also dem äußeren dann das innere (mit den Daten) mit CENTER übergeben... Und dann kannst ja beim äußeren sagen new BorderLayout(10, 10); Sollte denke ich funktionieren. Habs aba ned probiert!
 
Zuletzt bearbeitet von einem Moderator:

diggaa1984

Top Contributor
ich weiss nich ob man das bei einem JFrame machen sollte, bzw ob das zum erfolg führt ..

[HIGHLIGHT="Java"]
getInsets() = new Insets(...);
[/HIGHLIGHT]
damit bekommst die Insets der Border sofern vorhanden.
Ich vermute mal JFrame hat meist ne Border, sowie JPanel implizit wohl auch.
Daher würde ich eher dazu tendieren ... auf das ContenPane des JFrames nur 1 Panel zu setzen, das mit BorderLayout auszustatten und alle deine Komponenten da rauf zu legen. Dann kannst du getInsets auf dem Panel aufrufen und überschreiben.
 

Chimi

Mitglied
beschreibung.setBorder(new EmptyBorder(5, 5, 0, 0));
eingabe.setBorder(new EmptyBorder(5, 0, 0, 5));

Danke, das war die Lösung. Ich hatte vorhin schon etwas ausprobiert mit dem EmptyBorder, hatte aber nicht wirklich geklappt. Muss ich wohl was falsch gemacht haben.

Mein bisheriger Quellcode:

[HIGHLIGHT="Java"]import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;

public class Anmeldung extends JFrame
{
private JTextField textfeld_name = new JTextField();
private JPasswordField textfeld_passwort = new JPasswordField();

public Anmeldung(String title)
{
super(title);

setLayout(new BorderLayout());

JPanel beschreibung = new JPanel(new GridLayout(2,1,5,5));
beschreibung.setBorder(new EmptyBorder(10,10,10,10));
beschreibung.add(new JLabel("Name: "));
beschreibung.add(new JLabel("Passwort: "));
add(beschreibung, BorderLayout.WEST);

JPanel eingabe = new JPanel(new GridLayout(2,1,5,5));
eingabe.setBorder(new EmptyBorder(10,10,10,10));
eingabe.add(textfeld_name);
eingabe.add(textfeld_passwort);
add(eingabe, BorderLayout.CENTER);

JPanel unten = new JPanel(new FlowLayout(FlowLayout.CENTER));
add(unten, BorderLayout.SOUTH);
JPanel knoepfe = new JPanel(new GridLayout(1,2,5,5));
knoepfe.add(new JButton("Anmelden"));
knoepfe.add(new JButton("Abbrechen"));
unten.add(knoepfe);

setSize(400, 150);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}

public static void main(String[] args)
{
Anmeldung a = new Anmeldung("Anmeldung");
}
}[/HIGHLIGHT]

Ich hab aber noch eine Frage bezüglich der Textfelder. Wenn ich das Fenster Maximiere, dann vergrößern sich meine Textfelder natürlich auch. Das liegt an dem JGridLayout. Gibt es eine Möglichkeit die natürliche Größte der Textfelder beizubehalten, evtl mit einer Schachtelung von Layouts wie ich es unten bei den JButtons gemacht habe?

lg
 
Zuletzt bearbeitet von einem Moderator:

André Uhres

Top Contributor
Wenn ich das Fenster Maximiere, dann vergrößern sich meine Textfelder natürlich auch. Das liegt an dem JGridLayout. Gibt es eine Möglichkeit die natürliche Größte der Textfelder beizubehalten, evtl mit einer Schachtelung von Layouts wie ich es unten bei den JButtons gemacht habe?
Sowas kann man machen, die Frage ist nur, wie sich der ungenutzte Platz verteilen soll. Alternativ können wir auch die Grösse des Frames einfrieren:
setResizable(false);
 

Chimi

Mitglied
Guten Tag.

setResizable(false) ist mir bekannt. Aber an was ich gedacht habe ist das man das Fenster vergrößern oder Maximieren kann und die Textfelder nur in die Breite mit wachsen.Die natürliche Höhe soll beibehalten werden. Der freie Platz der sich ergibt kann ruhig frei bleiben und die Textfelder können auch in der horizontalen ruhig auseinander gezogen werden.
 

André Uhres

Top Contributor
an was ich gedacht habe ist das man das Fenster vergrößern oder Maximieren kann und die Textfelder nur in die Breite mit wachsen.Die natürliche Höhe soll beibehalten werden.
Eine Möglichkeit wäre, GridLayout einfach durch RelativeLayout zu ersetzen:
Java:
/*
 * Anmeldung2.java
 *
 * benutzt die Klasse RelativeLayout, die wir hier finden:
 * http://tips4java.wordpress.com/2008/11/02/relative-layout/
 */

import javax.swing.*;
import java.awt.*;
import relativelayout.RelativeLayout;

public class Anmeldung2 extends JFrame {

    private JTextField textfeld_name = new JTextField();
    private JPasswordField textfeld_passwort = new JPasswordField();

    public Anmeldung2(String title) {
        super(title);

        setLayout(new BorderLayout());
        RelativeLayout rl = new RelativeLayout(RelativeLayout.Y_AXIS, 5);
        rl.setFill(true);
        JPanel beschreibung = new JPanel(rl);
        beschreibung.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        beschreibung.add(new JLabel("Name: "));
        beschreibung.add(new JLabel("Passwort: "));
        add(beschreibung, BorderLayout.WEST);

        JPanel eingabe = new JPanel(rl);
        eingabe.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
        eingabe.add(textfeld_name);
        eingabe.add(textfeld_passwort);
        add(eingabe, BorderLayout.CENTER);

        JPanel unten = new JPanel(new FlowLayout(FlowLayout.CENTER));
        add(unten, BorderLayout.SOUTH);
        JPanel knoepfe = new JPanel(new GridLayout(1, 2, 5, 5));
        knoepfe.add(new JButton("Anmelden"));
        knoepfe.add(new JButton("Abbrechen"));
        unten.add(knoepfe);

        setSize(400, 150);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(final String[] args) {
        Runnable gui = new Runnable() {

            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                new Anmeldung2("Anmeldung").setVisible(true);
            }
        };
        //GUI must start on EventDispatchThread:
        SwingUtilities.invokeLater(gui);
    }
}
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JavaFX Abstand zwischen AnchorPane und Labels in dem HBox halten AWT, Swing, JavaFX & SWT 1
Z Swing Kann man denn abstand zwischen zwei Buttons berechnen AWT, Swing, JavaFX & SWT 5
H JavaFX Abstand rechts zur scrollbar AWT, Swing, JavaFX & SWT 1
D JGridLayout zwischen Zeilen bestimmter Abstand AWT, Swing, JavaFX & SWT 3
J Abstand im JLable AWT, Swing, JavaFX & SWT 2
S JMenuBar Frame Abstand AWT, Swing, JavaFX & SWT 3
J Swing Unteren Abstand für JTable in JScrollPane festlegen AWT, Swing, JavaFX & SWT 10
P Swing JLabel Schriftzeichen Abstand Leerzeichen AWT, Swing, JavaFX & SWT 4
E LayoutManager GridBagLayout in BorderLayout - Abstand bei Resizing AWT, Swing, JavaFX & SWT 2
D JTabel: Überschrift, Abstand zwischen Tabellen, Spalten-Farbe ändern AWT, Swing, JavaFX & SWT 2
D Tabellen Header & Abstand der Zeilen AWT, Swing, JavaFX & SWT 8
M gridbaglayout - abstand bei label und field AWT, Swing, JavaFX & SWT 8
B JLabel Abstand wegkriegen AWT, Swing, JavaFX & SWT 2
0 Swing LineBorder mit Abstand? AWT, Swing, JavaFX & SWT 2
P JButton - innerer Abstand veränderbar? AWT, Swing, JavaFX & SWT 6
steff2808 JLabel mit grossem Abstand von einem cm? AWT, Swing, JavaFX & SWT 5
hdi BoxLayout mit Abstand? AWT, Swing, JavaFX & SWT 5
A JButton Abstand Text - Rand AWT, Swing, JavaFX & SWT 4
D RadioButton abstand entfernen AWT, Swing, JavaFX & SWT 2
S Abstand zwischen Labeln auf 0 setzen AWT, Swing, JavaFX & SWT 6
N Abstand des Textes vom Rahmen bei JLabel AWT, Swing, JavaFX & SWT 2
G LayoutManager und Abstand AWT, Swing, JavaFX & SWT 6
O Buttons gleich groß + gleicher Abstand AWT, Swing, JavaFX & SWT 3
I JLabel Text Abstand AWT, Swing, JavaFX & SWT 9
C Abstand von Buttons zu Jpanel AWT, Swing, JavaFX & SWT 5
DeeDee0815 Abstand ZUM BorderLayout AWT, Swing, JavaFX & SWT 13
loadbrain 3 JLabels untereinander ohne Abstand AWT, Swing, JavaFX & SWT 4
G Abstand zwischen den Buttons in einer Toolbar AWT, Swing, JavaFX & SWT 3
B Abstand zwischen einzelnen Elementen einstellen AWT, Swing, JavaFX & SWT 2
N JTable Abstand zwischen einzelnen Spalten AWT, Swing, JavaFX & SWT 6
S Applet mit AWT: Abstand zum Rand ändern AWT, Swing, JavaFX & SWT 5
G Abstand einfügen! AWT, Swing, JavaFX & SWT 5
G abstand zwischen den buttons unterschiedlich AWT, Swing, JavaFX & SWT 2
Z komponenten "einfrieren" - abstand zwischen AWT, Swing, JavaFX & SWT 10
G Ungewollter Abstand zwischen Gui -Elementen / Insets setzen AWT, Swing, JavaFX & SWT 2
G BoxLayout: Abstand zwischen vertikalen Komponenten! AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben