Swing Seltsames Verhalten GridBagLayout

HarleyDavidson

Bekanntes Mitglied
Hallo zusammen,

ich kämpfe gerade mit einer GUI und dem GridBadLayout, dass nicht so will wie ich es will.
Um folgende GUI geht es:

Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.WindowEvent;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeSelectionModel;

/**
 *
 * @author Dominik Sust
 * @creation 01.10.2014 11:50:50
 */
public class Form_Auswahl_New extends JFrame
{

    //Schriftarten
    private final java.awt.Font font_projektListe = new java.awt.Font( "Tahoma", Font.BOLD, 13 );
    private final java.awt.Font font_LabelUeberschrift = new java.awt.Font( "Tahoma", Font.BOLD, 14 );
    private final java.awt.Font font_buttons_gross = new java.awt.Font( "Tahoma", Font.BOLD, 18 );

    //Komponenten
    private javax.swing.JPanel conentPane;
    private javax.swing.JButton jButton_Nacharbeit_Korrektur;
    private javax.swing.JButton jButton_Nacharbeit_Nacharbeit;
    private javax.swing.JLabel jLabel_Schritt1;
    private javax.swing.JLabel jLabel_Schritt2;
    private javax.swing.JPanel jPanel_Nacharbeit;
    private javax.swing.JPanel jPanel_Sonstiges;
    private javax.swing.JScrollPane jScrollPane_Projektliste;
    private javax.swing.JTree jTree_Projekte;

    public Form_Auswahl_New()
    {
        initComponents();
        this.setVisible( true );
    }

    public static void main( String[] args ) throws Exception
    {
        // Look and Feel setzen
        UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );
        new Form_Auswahl_New();
    }

    private void initComponents()
    {
        //Frame allgemein
        this.setSize( 650, 736 );
        this.setLocationRelativeTo( null );
        this.setDefaultCloseOperation( javax.swing.WindowConstants.EXIT_ON_CLOSE );
        this.setFocusCycleRoot( false );
        this.setResizable( false );
        conentPane = new javax.swing.JPanel();
        conentPane.setBorder( new EmptyBorder( 5, 5, 5, 5 ) );
        this.setContentPane( conentPane );

        //Komponenten initialisieren
        jPanel_Nacharbeit = new javax.swing.JPanel();
        jTree_Projekte = new javax.swing.JTree();
        jScrollPane_Projektliste = new javax.swing.JScrollPane( jTree_Projekte );
        jButton_Nacharbeit_Nacharbeit = new javax.swing.JButton();
        jButton_Nacharbeit_Korrektur = new javax.swing.JButton();
        jLabel_Schritt2 = new javax.swing.JLabel();
        jLabel_Schritt1 = new javax.swing.JLabel();
        jPanel_Sonstiges = new javax.swing.JPanel();

        //Panel Projekt auswählen initialisieren
        jPanel_Nacharbeit.setBorder( javax.swing.BorderFactory.createTitledBorder( "Projekt auswählen" ) );
        jPanel_Nacharbeit.setLayout( new GridBagLayout() );
        GridBagConstraints c = new GridBagConstraints();
        jPanel_Nacharbeit.setPreferredSize( new Dimension( 370, 660 ) );
        this.add( jPanel_Nacharbeit, BorderLayout.WEST );

        //Überschrift
        c.gridx = 1;
        c.gridy = 1;
        c.gridwidth = 2;
        jLabel_Schritt1.setFont( font_LabelUeberschrift );
        jLabel_Schritt1.setText( "1. Schritt: Belegart wählen" );
        jPanel_Nacharbeit.add( jLabel_Schritt1, c );

        //ProjektListe
        jTree_Projekte.setFont( font_projektListe );
        jTree_Projekte.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION );
        c.gridx = 1;
        c.gridy = 2;
        c.gridwidth = 2;
        jPanel_Nacharbeit.add( jScrollPane_Projektliste, c );

        //jTree_Projekte.setModel( projektBaumErstellen() );
        //Baum öffnen
        for ( int i = 0; i < jTree_Projekte.getRowCount(); i++ )
        {
            jTree_Projekte.expandRow( i );
        }

        //Nacharbeit / Korrektur wählen
        jLabel_Schritt2.setFont( font_LabelUeberschrift );
        jLabel_Schritt2.setText( "2. Schritt: Nacharbeit / Korrektur wählen" );
        c.gridx = 1;
        c.gridy = 3;
        c.gridwidth = 2;
        jPanel_Nacharbeit.add( jLabel_Schritt2 );

        jButton_Nacharbeit_Nacharbeit.setText( "Nacharbeit..." );
        jButton_Nacharbeit_Nacharbeit.setFont( font_buttons_gross );
        jButton_Nacharbeit_Nacharbeit.setSize( 170, 31 );
        c.gridx = 1;
        c.gridy = 4;
        c.gridwidth = 1;
        jPanel_Nacharbeit.add( jButton_Nacharbeit_Nacharbeit, c );

        jButton_Nacharbeit_Korrektur.setText( "Korrektur..." );
        jButton_Nacharbeit_Korrektur.setFont( font_buttons_gross );
        jButton_Nacharbeit_Korrektur.setSize( 170, 31 );
        c.gridx = 2;
        c.gridy = 4;
        c.gridwidth = 1;
        jPanel_Nacharbeit.add( jButton_Nacharbeit_Korrektur, c );

        //Panel Sonstiges initialisieren
        jPanel_Sonstiges.setBorder( javax.swing.BorderFactory.createTitledBorder( "Sonstiges" ) );
        jPanel_Nacharbeit.setLayout( new BoxLayout( jPanel_Nacharbeit, BoxLayout.Y_AXIS ) );
        jPanel_Sonstiges.setPreferredSize( new Dimension( 250, 660 ) );
        this.add( jPanel_Sonstiges, BorderLayout.EAST );

    }
}

Die zwei Buttons unten sollen in eine Reihe, das gebe ich ja auch per GridBagConstraints so an.
Aber trotzdem sind die immer untereinander. Warum? Was mache ich falsch?

Über schnelle Hilfe würde ich mich freuen!

Vielen Dank für eure Hilfe!
 

Flown

Administrator
Mitarbeiter
Kein seltsames Verhalten, du hast einfach einen Fehler drinnen.

In Zeile 77 setzt du ein GridBagLayout deinem Panel und in Zeile 131 ein BoxLayout mit y Ausrichtung.

Lösung wäre ein normales BoxLayout wie in Zeile 131 zu verwenden und die Buttons in ein eigenes Panel zu stecken, das wiederum ein FlowLayout besitzt.
 

HarleyDavidson

Bekanntes Mitglied
Vielen Dank! Die Buttons sind nun schön nebeneinander.

Nächstes Problem: Das wrapper-Panel ist viel zu hoch und die Labels sind nun nicht mehr linksbündig...

Java:
        JPanel wrapper = new JPanel( new FlowLayout(FlowLayout.LEFT));

        jButton_Nacharbeit_Nacharbeit.setText( "Nacharbeit..." );
        jButton_Nacharbeit_Nacharbeit.setFont( font_buttons_gross );
        //jButton_Nacharbeit_Nacharbeit.setSize( new Dimension( 170, 31 ) );
        wrapper.add( jButton_Nacharbeit_Nacharbeit );

        jButton_Nacharbeit_Korrektur.setText( "Korrektur..." );
        jButton_Nacharbeit_Korrektur.setFont( font_buttons_gross );
        //jButton_Nacharbeit_Korrektur.setSize( new Dimension( 170, 31 ) );
        wrapper.add( jButton_Nacharbeit_Korrektur );

        jPanel_Nacharbeit.add( wrapper );
 

HarleyDavidson

Bekanntes Mitglied
Von Hand ausprogrammiert.

Update: Das mit der Höhe des Panels hab ich nun hinbekommen:

Java:
wrapper.setMaximumSize( new Dimension(600, 10));

Nun sind aber die Labels verschoben! Die sollten linksbündig sein, so wie sie auch waren bevor ich das wrapper-Panel implementiert habe... ;( Damn!

Siehe Bild. Woran liegt das schon wieder?
 

Anhänge

  • 2014-10-02 15_59_17-.jpg
    2014-10-02 15_59_17-.jpg
    24,6 KB · Aufrufe: 24
Zuletzt bearbeitet:

kaoZ

Top Contributor
du meinst das Label
Code:
2. Schritt : Korrektur/Nacharbeit..
?

poste doch mal das snippet in welchem du die das label addest
 
Zuletzt bearbeitet:

HarleyDavidson

Bekanntes Mitglied
Wieder bin ich etwas weiter!
Auf der Seite How to Use BoxLayout (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)

steht folgendes:

In general, all the components controlled by a top-to-bottom BoxLayout object should have the same X alignment. Similarly, all the components controlled by a left-to-right Boxlayout should generally have the same Y alignment. You can set a JComponent's X alignment by invoking its setAlignmentX method. An alternative available to all components is to override the getAlignmentX method in a custom subclass of the component class. Similarly, you set the Y alignment of a component by invoking the setAlignmentY method or by overriding getAlignmentY.

Ein JPanel hat standardmäßig eine zentrale Ausrichtung. Ich habe die nun auf links umgestellt und alles sieht super aus! :)

Warum das wrapper-Panel allerdings so hoch wird wenn ich "setMaximumSize" nicht setze bleibt mir ein Rätsel.

Java:
        JPanel wrapper = new JPanel( new FlowLayout(FlowLayout.LEFT));
        wrapper.setAlignmentX( Component.LEFT_ALIGNMENT);
        wrapper.setMaximumSize( new Dimension(660, 10));

        jButton_Nacharbeit_Nacharbeit.setText( "Nacharbeit..." );
        jButton_Nacharbeit_Nacharbeit.setFont( font_buttons_gross );
        //jButton_Nacharbeit_Nacharbeit.setSize( new Dimension( 170, 31 ) );
        wrapper.add( jButton_Nacharbeit_Nacharbeit );

        jButton_Nacharbeit_Korrektur.setText( "Korrektur..." );
        jButton_Nacharbeit_Korrektur.setFont( font_buttons_gross );
        //jButton_Nacharbeit_Korrektur.setSize( new Dimension( 170, 31 ) );
        wrapper.add( jButton_Nacharbeit_Korrektur );

        jPanel_Nacharbeit.add( wrapper );

Das Bild im Anhang zeigt die GUI, wenn ich setMaximumSize auskommentiere...
 

Anhänge

  • 2014-10-02 16_18_07-JavaNacharbeit - NetBeans IDE 8.0.1.jpg
    2014-10-02 16_18_07-JavaNacharbeit - NetBeans IDE 8.0.1.jpg
    34,2 KB · Aufrufe: 26

HarleyDavidson

Bekanntes Mitglied
Nein, ein BoxLayout.

Java:
        jPanel_Nacharbeit.setLayout( new BoxLayout( jPanel_Nacharbeit, BoxLayout.Y_AXIS ) );
        jPanel_Nacharbeit.setPreferredSize( new Dimension( 370, 660 ) );
 

kaoZ

Top Contributor
also wird dein wrapper auf die maximale göße des ihn umgebenen Containers gestretcht ...
jPanel_Nacharbeit.setPreferredSize( new Dimension( 370, 660

um das eben schnell nachzuvollziehen
Code:
Container (BoxLayout) 370, 660
  |
    Wrapper(Flowlayout) nimmt den maximal verfügbaren platz ein

ausser wenn du eine Maximal größe setzt.

ich schau mal eben fix moment , das problem hatte ich glaube ich auch schonmal
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Java:
public class Foo extends JPanel{

	
	public Foo(){
		setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));
		setPreferredSize(new Dimension(370,660));
		add(Box.createVerticalGlue());
		add(createWrapper());
	}
	
	public JPanel createWrapper(){
		JPanel panel = new JPanel();
		panel.setMaximumSize(new Dimension(370,100));
		panel.setBorder(BorderFactory.createLineBorder(Color.BLUE));
		panel.add(new JButton("balbla"));
		panel.add(new JButton("sdfsdf"));
		return panel;
	}
	
	
	public static void main(String[] args){
		JFrame f = new JFrame();
		f.setDefaultCloseOperation(2);
		f.setContentPane(new Foo());
		f.pack();
		f.setLocationRelativeTo(null);
		f.setVisible(true);
	}
}

Du scheinst hier wohl tatsächlich mit panel.setMaximumSize(new Dimension(370,100));
arbeiten zu müssen wenn die darüberliegenden Komponenten nicht den restlichen verfügbaren platz einnehmen sollten .
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Hatsi09 JavaFx Mediaplayer seltsames Verhalten AWT, Swing, JavaFX & SWT 0
P JFrame langsam / seltsames Verhalten AWT, Swing, JavaFX & SWT 6
P Swing Seltsames ActionListener-Verhalten AWT, Swing, JavaFX & SWT 7
D Seltsames Verhalten meiner CheckBoxen AWT, Swing, JavaFX & SWT 7
dzim [SWT] Seltsames verhalten bei TableViewer mit TextCellEditor AWT, Swing, JavaFX & SWT 5
G Seltsames Verhalten JButton AWT, Swing, JavaFX & SWT 6
M Seltsames Verhalten Tooltip und JDialog AWT, Swing, JavaFX & SWT 8
S Seltsames verhalten des Befehles getContentPane().add(.) AWT, Swing, JavaFX & SWT 7
M Seltsames Problem mit Resize eines Fensters und seiner Komponenten AWT, Swing, JavaFX & SWT 2
O Seltsames Scroll-Problem AWT, Swing, JavaFX & SWT 7
S Seltsames Problem - manchmal enthaelt die ActionMap eine JTextArea keine Actions. AWT, Swing, JavaFX & SWT 4
K seltsames problem AWT, Swing, JavaFX & SWT 2
I Seltsames Problem mit JLabel AWT, Swing, JavaFX & SWT 4
G Seltsames Phänomen beim starten meiner Applikation AWT, Swing, JavaFX & SWT 8
R JDialog hat seltsames Design AWT, Swing, JavaFX & SWT 6
Juelin Komisches Verhalten des JavaFXprogrammes AWT, Swing, JavaFX & SWT 4
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
pkm kryptisches Verhalten bei GridLayout AWT, Swing, JavaFX & SWT 4
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
D Merkwürdiges Verhalten vom JMenu AWT, Swing, JavaFX & SWT 4
T JavaFX Verhalten ImageView bei grossen BIlddateien AWT, Swing, JavaFX & SWT 0
R Ändern Default-Verhalten von JScrollpane in einer JScrollpane AWT, Swing, JavaFX & SWT 1
S JTabbedProblem - "komisches" Verhalten AWT, Swing, JavaFX & SWT 2
T Wie ist das "Lookup-Verhalten" von JList, JCombobox änderbar? AWT, Swing, JavaFX & SWT 4
N Swing Dynamisches Verhalten bei Änderung Fenstergröße AWT, Swing, JavaFX & SWT 6
E Swing Fehlerhaftes Verhalten bei gleichzeitigen Verwendnen von PopUpMenu und JDialog?! AWT, Swing, JavaFX & SWT 5
Ollek JTextField Verhalten mit LayoutManager AWT, Swing, JavaFX & SWT 8
E Swing Maskformatter Verhalten?! AWT, Swing, JavaFX & SWT 5
A JTreeTable - unerklärliches Verhalten von getValueAt AWT, Swing, JavaFX & SWT 2
F Merkwürdiges Verhalten zeichnen sperater Thread AWT, Swing, JavaFX & SWT 13
M Komisches Verhalten: JCombobox mit KeyListener AWT, Swing, JavaFX & SWT 13
hdi SWT Shell: Auslagerung von Code verändert Verhalten AWT, Swing, JavaFX & SWT 6
U Verhalten des CheckBoxCellEditors AWT, Swing, JavaFX & SWT 3
H2SO3- AWT seltsammes verhalten eines Panels AWT, Swing, JavaFX & SWT 9
pinerski Swing JList merkwürdiges Verhalten beim sortieren AWT, Swing, JavaFX & SWT 3
I Hyper-Link ähnliches Verhalten AWT, Swing, JavaFX & SWT 5
L JFrame-Verhalten bei Klick auf Schließen-Kreuz ändern AWT, Swing, JavaFX & SWT 3
R JProgressBar-Verhalten AWT, Swing, JavaFX & SWT 5
J JScrollBar scroll-Verhalten auf 2 JButtons umleiten? AWT, Swing, JavaFX & SWT 2
ARadauer bestimmtes verhalten für jtable AWT, Swing, JavaFX & SWT 6
M Merkwürdiges Verhalten von ListCellRender AWT, Swing, JavaFX & SWT 2
S Wie verhalten sich transparente Grafiken? AWT, Swing, JavaFX & SWT 5
sparrow Tasten mit Umlauten im KeyListener verhalten sich seltsam AWT, Swing, JavaFX & SWT 4
K JList - merkwürdiges Verhalten bei Leertaste (unter Focus) AWT, Swing, JavaFX & SWT 7
M drawImage mit seltsamen verhalten AWT, Swing, JavaFX & SWT 2
S GridBagLayout Felder formatieren AWT, Swing, JavaFX & SWT 1
S GridBagLayout - Probleme mit Bilderanzeige AWT, Swing, JavaFX & SWT 3
C GridbagLayout verstehen lernen AWT, Swing, JavaFX & SWT 1
H GridBagLayout macht mich wahnsinnig :-( AWT, Swing, JavaFX & SWT 5
BabySuna darstellungsprobleme mit JTabbedPane und GridBagLayout AWT, Swing, JavaFX & SWT 8
CptK Positionieren von Elementen in GridBagLayout AWT, Swing, JavaFX & SWT 4
A Probleme mit gridheight (GridBagLayout) AWT, Swing, JavaFX & SWT 6
Mario1409 AWT GridBagLayout AWT, Swing, JavaFX & SWT 5
J LayoutManager GridBagLayout, probleme mit Anordnung von Objekten AWT, Swing, JavaFX & SWT 6
DaCrazyJavaExpert Swing Komponenten in GridBagLayout werden Falsch angeordnet AWT, Swing, JavaFX & SWT 1
T LayoutManager Anordnen der Elemente im GridBagLayout AWT, Swing, JavaFX & SWT 11
K GridBagLayout mit reponsive Design AWT, Swing, JavaFX & SWT 2
K GridBagLayout verändert die größe? AWT, Swing, JavaFX & SWT 1
D Swing Größe einer JComboBox im GridBagLayout aufgrund der maximalen Länge der enthaltenen Daten AWT, Swing, JavaFX & SWT 7
B LayoutManager GridBagLayout und JScrollPane AWT, Swing, JavaFX & SWT 5
T GridBagLayout Anfängerprobleme AWT, Swing, JavaFX & SWT 3
Sin137 LayoutManager GridBagLayout Probleme AWT, Swing, JavaFX & SWT 6
L GridBagLayout Anordnung AWT, Swing, JavaFX & SWT 3
M Gridbaglayout Spaltenbreite AWT, Swing, JavaFX & SWT 3
M LayoutManager GridBagLayout passt seine größe nicht an AWT, Swing, JavaFX & SWT 3
V GridBagLayout AWT, Swing, JavaFX & SWT 4
N LayoutManager GridBagLayout - Grundlagen AWT, Swing, JavaFX & SWT 6
Neumi5694 Swing Gridbaglayout - automatische Anpassung verhindern AWT, Swing, JavaFX & SWT 1
P AWT Problem mit Platzierung (GridBagLayout) AWT, Swing, JavaFX & SWT 2
F Breite beim GridBagLayout festlegen AWT, Swing, JavaFX & SWT 2
M Swing GridBagLayout Komponentengröße festsetzen AWT, Swing, JavaFX & SWT 1
J GridBagLayout mit Hilfe einer For-Schleife befüllen AWT, Swing, JavaFX & SWT 1
W GridBagLayout Größe geben AWT, Swing, JavaFX & SWT 1
W GridBagLayout mit fester Zellgrösse AWT, Swing, JavaFX & SWT 2
N Swing GridBagLayout: Ein Pixel Versatz AWT, Swing, JavaFX & SWT 2
B Swing Gridbaglayout unterschiedliche Zeilenhöhe AWT, Swing, JavaFX & SWT 6
H LayoutManager GridBagLayout AWT, Swing, JavaFX & SWT 1
N GridBagLayout - was fehlt? AWT, Swing, JavaFX & SWT 8
S Swing rowHeight und rowWeight im GridBagLayout AWT, Swing, JavaFX & SWT 1
N Swing GUI mit GridBagLayout AWT, Swing, JavaFX & SWT 4
A jpanel mit gridbaglayout auf hintergrundbild AWT, Swing, JavaFX & SWT 7
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
G GridBagLayout AWT, Swing, JavaFX & SWT 6
S GridBagLayout "links-rechts-layouten" AWT, Swing, JavaFX & SWT 7
T LayoutManager GridBagLayout / erwartetes Raster fehlt AWT, Swing, JavaFX & SWT 3
X Gridbaglayout gridx + gridy auslesen? AWT, Swing, JavaFX & SWT 7
H GridBagLayout macht Probleme... AWT, Swing, JavaFX & SWT 4
N GridBagLayout - Zeitplan AWT, Swing, JavaFX & SWT 13
N Swing GridbagLayout AWT, Swing, JavaFX & SWT 4
S Swing gridbaglayout AWT, Swing, JavaFX & SWT 8
G GridBagLayout Problem AWT, Swing, JavaFX & SWT 4
Java-Insel LayoutManager Ein GridBagLayout-Objekt für mehrere Panels? AWT, Swing, JavaFX & SWT 2
X LayoutManager gridBagLayout wird nicht richtig Dargestellt AWT, Swing, JavaFX & SWT 5
das-mo Probleme mit GridBagLayout AWT, Swing, JavaFX & SWT 6
T LayoutManager GridBagLayout - zwei jTable mit unterschiedlicher Höhe AWT, Swing, JavaFX & SWT 2
N LayoutManager GridBagLayout schummeln erlaubt ? AWT, Swing, JavaFX & SWT 2
D GridBagLayout AWT, Swing, JavaFX & SWT 9
A Swing GridBagLayout - constraints.anchor scheint nicht korrekt zu funktionieren? AWT, Swing, JavaFX & SWT 7
J Swing Terminkalender Wochenansicht mit Gridbaglayout oder JTable AWT, Swing, JavaFX & SWT 16

Ähnliche Java Themen

Neue Themen


Oben