Swing Problem mit Gridbaglayout bzw. Größenanpassung JPanels

Hallo,
ich habe folgendes Problem.

Ich habe eine Gui mittels Borderlayout in 3 Bereiche unterteilt.

Java:
		this.setLayout(new BorderLayout());
		this.add(panelLeft, BorderLayout.WEST);
		this.add(panelMiddle, BorderLayout.CENTER);
		this.add(panelSouth, BorderLayout.SOUTH);

Das Problem ist mit dem linken Bereich.. Dieser soll einen JTree,ein JTable und ein Button beinhalten.
Ich dachte mir, dass man dies mittels dem Gridbaglayout lösen kann. Dies geht auch, jedoch ist die Darstellung nicht so, wie ich es mir wünsche.. :(

Also habe ich für den linken Panel eine neue Klasse gemacht, das für die Verwaltung des Gridbaglayouts dient.

Java:
 public class LeftPanel extends JPanel {
...
setLayout(new GridBagLayout());
		GridBagConstraints cTree = new GridBagConstraints();
		GridBagConstraints cTable = new GridBagConstraints();

		cTree.gridx = 1;
		cTree.gridy = 1;
		cTree.anchor = GridBagConstraints.FIRST_LINE_START;
		add((Baum), cTree);

		cTable.gridx = 1;
		cTable.gridy = 2;
		cTable.weightx = 1;
		add((Parameter), cTable);
}

Der JTree ist in dieser Klasse...:

Java:
public class Baum extends JPanel {
	
	public Baum(){
	// Der Wurzelknoten wird hergestellt
        TreeNode root = createTree(); 
        
        // Der Wurzelknoten wird dem neuen JTree im Konstruktor übergeben
        JTree tree = new JTree( root );
       
        // Wurzel ist unsichtbar
        tree.setRootVisible(false);

        // Scrollbalken wird erstellt und der Baum drin eingebettet
        this.add( new JScrollPane( tree )); 

        this.setMinimumSize( new Dimension (300,400) );

    }
...

Bei der Klasse für den JTable wurde ähnlich verfahren.

So sieht es momentan aus:
attachment.php


Ich würde aber gerne den kompletten linken Bereich verkleinern, auf die Größe des JTables. Wenn ich im Border Layout dies über preferredSize mache, zerstört es den Inhalt, aber nur..

Also folgende Fragen:

Wie kriege ich es hin, dass der linke Bereich des Borderlayouts der Größe des JTables angepasst wird?

Wie kriege ich es hin, dass der JTree den kompletten Inhalts des JPanels einnimmt und nicht mittig? ist.

Vielen Dank für das Beantworten meiner Fragen!!! Und vielen Dank an jeden, der sich für mein Problem Zeit nimmt!!! :)

Gruß
 

Anhänge

  • zwischenablage01oor3.jpg
    zwischenablage01oor3.jpg
    55,6 KB · Aufrufe: 63
Zuletzt bearbeitet:

Kar

Mitglied
Java:
GridBagConstraints cTree = new GridBagConstraints();
GridBagConstraints cTable = new GridBagConstraints();
 
cTree.gridx = 0;
cTree.gridy = 0;
cTree.gridwidth = 1;
cTree.gridheight = 1;
cTree.fill = GridBagConstraints.BOTH;
cTree.anchor = GridBagConstraints.FIRST_LINE_START;
add((Baum), cTree);
 
cTable.gridx = 0;
cTable.gridy = 1;
cTable.gridwidth = 1;
cTable.gridheight = 1;
cTable.fill = GridBagConstraints.BOTH;
cTable.weightx = 1;
add((Parameter), cTable);
.. bringt auch keine Veränderungen?
 
Nope, keine Veränderung..

Mit den Möglichkeiten fürs GridbagLayout habe ich mich herumgespielt, es ändert sich jedoch nicht in etwas brauchbares..

Ich denke, dass man an dieser Stelle nichts erreichen kann, sondern bei den beiden panels was bearbeiten muss...

Nur was genau, weiß ich noch nicht.. :(

Ich füge mal den Code für das untere JPanel bei..

Java:
public class ParameterTable extends JPanel{

	private static final long serialVersionUID = 1L;
	
	public ParameterTable() {
	      // Unser TableModel
	      ParameterModel parameterModel= new ParameterModel(); // befindet sich ausgelagert im Package Model
	      
	      // Das JTable initialisieren
	      JTable table = new JTable( parameterModel );
	      this.setMinimumSize( new Dimension (500,200) );
	      //Der Benutzer darf keine Spalten vertauschen
	      table.getTableHeader().setReorderingAllowed( false ); 
	      
	      //Automatische Größenanpassung deaktivieren
	      table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
	      
	      //Die beiden Spalten erhalten ihre feste Größe
	      table.getColumnModel().getColumn( 0 ).setPreferredWidth( 150 );
	      table.getColumnModel().getColumn( 1 ).setPreferredWidth( 200 );
	      
          //Scrollen ermöglichen und einbetten
	      this.add( new JScrollPane( table ) );
	   }
}
 

André Uhres

Top Contributor
Hallo DefenderDeLuXe,

meinst du so:

Java:
import java.awt.*;
import static java.awt.GridBagConstraints.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.tree.*;

public class GBLDemo extends JFrame {

    private final JPanel panelLeft, panelMiddle, panelSouth;

    public GBLDemo() {
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setSize(700, 550);
        setLocationRelativeTo(null);
        this.setLayout(new BorderLayout());
        panelLeft = new LeftPanel();
        panelMiddle = new JPanel();
        panelMiddle.setBackground(Color.lightGray);
        panelMiddle.setPreferredSize(new Dimension(300, 300));
        panelSouth = new JPanel();
        panelSouth.setBackground(Color.gray);
        panelSouth.setPreferredSize(new Dimension(300, 30));
        this.add(panelLeft, BorderLayout.WEST);
        this.add(panelMiddle, BorderLayout.CENTER);
        this.add(panelSouth, BorderLayout.SOUTH);
    }

    public static void main(final String args[]) {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                new GBLDemo().setVisible(true);
            }
        });
    }
}

class LeftPanel extends JPanel {

    public LeftPanel() {
        setLayout(new GridBagLayout());
        GridBagConstraints cTree = new GridBagConstraints();
        GridBagConstraints cTable = new GridBagConstraints();
        GridBagConstraints cButton = new GridBagConstraints();

        cTree.gridx = 1;
        cTree.gridy = 1;
        cTree.fill = BOTH;
        cTree.weighty = 1.0;
        add(new Baum(), cTree);

        cTable.gridx = 1;
        cTable.gridy = 2;
        cTable.weightx = 1.0;
        cTable.weighty = 0.5;
        add(new ParameterTable(), cTable);

        cButton.gridx = 1;
        cButton.gridy = 3;
        cButton.anchor = LINE_END;
        cButton.insets = new Insets(5, 5, 5, 5);
        add(new JButton("OK"), cButton);
    }
}

class Baum extends JPanel {

    public Baum() {
        setLayout(new BorderLayout());
        // Der Wurzelknoten wird hergestellt
        TreeNode root = createTree();
        // Der Wurzelknoten wird dem neuen JTree im Konstruktor übergeben
        JTree tree = new JTree(root);
        // Wurzel ist unsichtbar
        tree.setRootVisible(false);
        // Scrollbalken wird erstellt und der Baum drin eingebettet
        this.add(new JScrollPane(tree));
        this.setMinimumSize(new Dimension(300, 400));
        this.setPreferredSize(getMinimumSize());
    }

    private TreeNode createTree() {
        DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("node1");
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("node2");
        DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("node3");
        DefaultMutableTreeNode node4 = new DefaultMutableTreeNode("node4");
        root.add(node1);
        root.add(node2);
        root.add(node3);
        root.add(node4);
        return root;
    }
}

class ParameterTable extends JPanel {

    private static final long serialVersionUID = 1L;

    public ParameterTable() {
        setLayout(new BorderLayout());
        // Unser TableModel
        ParameterModel parameterModel = new ParameterModel();
        // Das JTable initialisieren
        JTable table = new JTable(parameterModel);
        this.setMinimumSize(new Dimension(360, 200));
        this.setPreferredSize(getMinimumSize());
        //Der Benutzer darf keine Spalten vertauschen
        table.getTableHeader().setReorderingAllowed(false);
        //Automatische Größenanpassung deaktivieren
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        //Die beiden Spalten erhalten ihre feste Größe
        table.getColumnModel().getColumn(0).setPreferredWidth(150);
        table.getColumnModel().getColumn(1).setPreferredWidth(200);
        //Scrollen ermöglichen und einbetten
        this.add(new JScrollPane(table));
    }
}

class ParameterModel extends DefaultTableModel {

    ParameterModel() {
        super(5, 2);
    }
}

?

Gruß,
André
 

Anhänge

  • gbldemo.png
    gbldemo.png
    12,2 KB · Aufrufe: 35
Zuletzt bearbeitet:
Kommentier' die setMinimumSize-Anweisung mal aus bzw. verringere den x-Wert.

Die habe ich gebraucht, damit in der Auflösung von 1024x768 die Sachen richtig angezeigt werden...

@André Uhres

Ja genau sowas habe ich gemeint!!! Vielen Dank. Ich versuche jetzt in meinem Code das anzuwenden, schreib danach die Veränderungen und Gedankengänge nieder und tu danach falls alles klappt, den Thread als erledigt markieren.. Danke. :)

edit.
Habe jetzt alles verstanden.. :)

Java:
setLayout(new BorderLayout());
hatte man gebraucht, damit der JTree bzw. das JTable nicht "lose" drin ist im JPanel, sondern seinen "festen" Platz hat

Java:
this.setPreferredSize(getMinimumSize());
hatte man gebraucht, damit die Minimum Größe auch angenommen wird.

Die zusätzlichen Sachen beim GridbagLayout hatte man zur richtigen Anordnung gebraucht, was jetzt auch wunderbar funktioniert hat.

danke nochmal :)
Als erledigt markiert.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
P AWT Problem mit Platzierung (GridBagLayout) AWT, Swing, JavaFX & SWT 2
G GridBagLayout Problem AWT, Swing, JavaFX & SWT 4
T GridBagLayout Problem AWT, Swing, JavaFX & SWT 3
B GridBagLayout Problem AWT, Swing, JavaFX & SWT 3
N GridBagLayout Problem AWT, Swing, JavaFX & SWT 6
Y LayoutManager Problem mit Gridbaglayout AWT, Swing, JavaFX & SWT 8
E Problem mit meiner GUI/GridbagLayout AWT, Swing, JavaFX & SWT 2
hdi Swing Problem mit GridBagLayout AWT, Swing, JavaFX & SWT 2
aze Problem mit GridBagLayout AWT, Swing, JavaFX & SWT 6
R LayoutManager Problem mit GridBagLayout AWT, Swing, JavaFX & SWT 3
hdi Swing Problem mit simplem GridBagLayout AWT, Swing, JavaFX & SWT 4
A Swing JPanel mit GridBagLayout Resize-problem AWT, Swing, JavaFX & SWT 1
S GridBagLayout Problem mit dem JPanel AWT, Swing, JavaFX & SWT 5
G GridBagLayout Problem AWT, Swing, JavaFX & SWT 4
S Problem beim Anpassen vom GridBagLayout AWT, Swing, JavaFX & SWT 10
N GridBaglayout Problem bei Groessenaenderung AWT, Swing, JavaFX & SWT 3
N Problem mit GridBagLayout und setPrefferedSize AWT, Swing, JavaFX & SWT 7
D GridBagLayout Problem mit JTable AWT, Swing, JavaFX & SWT 6
G JPanel Problem mit GridBagLayout AWT, Swing, JavaFX & SWT 4
N Layout-Problem (JScrollPane, GridBagLayout) AWT, Swing, JavaFX & SWT 3
L Problem mit GridBagLayout AWT, Swing, JavaFX & SWT 7
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
S Layout - Problem AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
Umb3rus JavaFX Problem mit PropertyValueFactory: can not read from unreadable property AWT, Swing, JavaFX & SWT 1
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
G Instance OF Problem AWT, Swing, JavaFX & SWT 9
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
M Problem mit dem Anzeigen von Frames im Vordergrund AWT, Swing, JavaFX & SWT 5
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
JavaTalksToMe JavaFx ExekutorService Problem AWT, Swing, JavaFX & SWT 2
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
B Problem mit JavaFX AWT, Swing, JavaFX & SWT 5
J css Problem AWT, Swing, JavaFX & SWT 5
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
A Swing Filter-Problem AWT, Swing, JavaFX & SWT 1
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
L Java FX Problem mit Ubuntu 18 und JavaFx AWT, Swing, JavaFX & SWT 27
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
T DataBinding Problem AWT, Swing, JavaFX & SWT 5
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 15
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 0
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
T Swing Problem mit Datum und FormattedTextField AWT, Swing, JavaFX & SWT 2
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
olfibits JavaFX Problem mit HTMLEditor AWT, Swing, JavaFX & SWT 0
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
N Swing Problem mit loop AWT, Swing, JavaFX & SWT 2
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
S JLabel setText() Problem AWT, Swing, JavaFX & SWT 6
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
G Swing Splitpane Problem AWT, Swing, JavaFX & SWT 1
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
N JavaFX Stranges Problem mit der Autoscroll-Eigenschaft von Textareas AWT, Swing, JavaFX & SWT 0
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
J JavaFX Intersect Problem mit Shapes AWT, Swing, JavaFX & SWT 10
R JavaFX MediaPlayer AVI-Problem AWT, Swing, JavaFX & SWT 1
M Swing Problem mit ListCellRenderer AWT, Swing, JavaFX & SWT 7
D Problem mit JTable AWT, Swing, JavaFX & SWT 1
F GUI Auflösung ändern - Koordianten und Proportions Problem AWT, Swing, JavaFX & SWT 21
J Problem mit Button darstellung AWT, Swing, JavaFX & SWT 23
M Problem mit Layoutmanagern... Hilfe wäre sehr nett. AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Problem mit Variablen AWT, Swing, JavaFX & SWT 4
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
M Swing AttributiveCellTableModel addRow() Problem AWT, Swing, JavaFX & SWT 1
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5
K CheckBox Problem AWT, Swing, JavaFX & SWT 5
Grevak DisplayMode Problem seit Windows 10 AWT, Swing, JavaFX & SWT 2
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
B Swing Problem mit Bildpfad AWT, Swing, JavaFX & SWT 4
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
V Graphics g - drawOval problem mit background AWT, Swing, JavaFX & SWT 1
C AWT Problem mit Protokol Fenster AWT, Swing, JavaFX & SWT 0
M Swing pack() Problem mit Taskleiste AWT, Swing, JavaFX & SWT 4
N Swing Choice- Problem! AWT, Swing, JavaFX & SWT 8
Q "AWT-EventQueue-0" Exception Problem AWT, Swing, JavaFX & SWT 4
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
A Problem: repaint() - Schleife AWT, Swing, JavaFX & SWT 3
J Anfänger GUI Problem bei der Ausführung eines sehr einfachen Programms AWT, Swing, JavaFX & SWT 2
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0

Ähnliche Java Themen

Neue Themen


Oben