Layoutmanager

Reggie

Aktives Mitglied
Tach Zusammen,

Ich habe momentan eine Anwendung in der ich meiner Meinung nach unnötig kompliziert den View aktualisiere und die Grösse der Panels bestimme.

Momentan mache ich das so, ich ermittle die Menge der einzufügenden Panels und mache die Panels dann dem entsprechen 1/3, 1/2 oder 1/1 so gross wie das Parent Panel. Ziel des Ganzen ist das alle eingefügten Panels sichtbar sind und kein Scrollen erforderlich ist. Auch müssen die Panels jeweils eine Mindestbreite haben damit der Inhalt gut sichtbar ist.

Ich hoffe das ist verständlich.

Die Frage ist nun, kann man sowas auch mit einem Layoutmanager realisieren oder muss ich das wirklich von Hand rechnen und einfügen?
 

KrokoDiehl

Top Contributor
Tach Zusammen,
Die Frage ist nun, kann man sowas auch mit einem Layoutmanager realisieren oder muss ich das wirklich von Hand rechnen und einfügen?

Ich bin mir sicher, dass es geht. Die meisten LayoutManager verwenden die PreferredSize der Komponenten für das Layouting. Entsprechend groß wird auch die PreferredSize ihres Containers, aber damit kann man ja arbeiten.

Für mehr Hilfe sind deine Ausführungen zu theoretisch. Hast du schonmal LayoutManager ausprobiert und mit Minimum-, Preferred- und MaximumSize "herumgespielt"? Gibt es konkrete LayoutManager die dir vorschweben? Spontan würde mir das GridLayout einfallen, wo jede Zelle gleichgroß ist, oder ein BoxLayout ... ach, wahrscheinlich geht fast jeder LayoutManager :)
 

Reggie

Aktives Mitglied
Hallo Krokodiehl,

Erstmal Danke für die Antwort :)

Ja rumgespielt habe ich mir den Sizes schonmal auch verschiedene Layouts ausprobiert momentan läuft das ganze mit FlowLayout aber leider wird der containing Panel scrollable sobald der Size zu gross ist. Um das abzufangen habe ich die Grösse des Containing Panel genommen und je nachdem halbiert oder gedrittelt um alle Panels darin anzuzeigen.

Ich weiss nicht genau wie ich dem Layout sagen soll das es,

wenn der Minimumsize aller Panel addiert mehr als die Grösse des Mutterpanel ausmacht, dass er dann einen Umbruch macht und dementsprechend natürlich die Höhe der vorhergehenden und der neuen Panels auch anpasst, weil er jetzt natürlich nicht mehr die volle Höhe zu Verfügung hat.

Dazu kommt noch das all das natürlich noch in einem resizeable Window gemacht wird.

Ich hab aber gerade selber noch eine Idee und probier das grad mal aus.
 

KrokoDiehl

Top Contributor
Hm. FlowLayout macht doch einen Umbruch der Komponenten, wenn sie insgesamt zu breit werden?! Aber du sprichst von Scrollbalken, d.h. du hast irgendwo ein ScrollPane gesetzt. Probier doch auch mal das zu entfernen / nicht zu setzen, oder sein
Code:
SCROLLBAR_POLICY
zu ändern, z.B. auf
Code:
NEVER
(die Java-Bezeichnungen heißen so ähnliche).
 

Reggie

Aktives Mitglied
Stimmt habs raus wie es am besten geht. Oder zumindest einfacher als wie ich es bisher gemacht habe. Habe das wohl einfach lange nicht mehr angeschaut.

Trotzdem vielen Dank für die Denkanstösse.

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * blubb.java
 *
 * Created on 08.09.2011, 11:26:47
 */
package testthread;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.border.LineBorder;
import org.jdesktop.swingx.JXPanel;
import org.jdesktop.swingx.painter.GlossPainter;

/**
 *
 * @author mp
 */
public class blubb extends javax.swing.JFrame {

    /** Creates new form blubb */
    public blubb() {
        initComponents();
        int to = 56;
         GridLayout gl = (GridLayout) jXPanel2.getLayout();
        if (to > 21) {
           gl.setRows(4);
        } else if (to > 14) {
            gl.setRows(3);
        } else if (to > 7 ) {
            gl.setRows(2);
        } else {
            gl.setRows(1);
        }
        for (int i = 0; i < to; i++) {
            JXPanel tmp = new JXPanel();
            tmp.setBackground(Color.ORANGE);
            tmp.setBackgroundPainter(new GlossPainter());
            tmp.setBorder(new LineBorder(Color.BLACK, 2, true));
            tmp.setMinimumSize(new Dimension(100, 100));
            
            jXPanel2.add(tmp);
        }

    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        jXGradientChooser1 = new org.jdesktop.swingx.JXGradientChooser();
        jXPanel1 = new org.jdesktop.swingx.JXPanel();
        jXPanel2 = new org.jdesktop.swingx.JXPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setMinimumSize(new java.awt.Dimension(800, 600));
        getContentPane().setLayout(new java.awt.GridBagLayout());

        jXPanel1.setBackground(new java.awt.Color(102, 255, 102));
        jXPanel1.setMaximumSize(new java.awt.Dimension(175, 32755));
        jXPanel1.setMinimumSize(new java.awt.Dimension(175, 100));
        jXPanel1.setPreferredSize(new java.awt.Dimension(175, 600));

        javax.swing.GroupLayout jXPanel1Layout = new javax.swing.GroupLayout(jXPanel1);
        jXPanel1.setLayout(jXPanel1Layout);
        jXPanel1Layout.setHorizontalGroup(
            jXPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 175, Short.MAX_VALUE)
        );
        jXPanel1Layout.setVerticalGroup(
            jXPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 600, Short.MAX_VALUE)
        );

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        getContentPane().add(jXPanel1, gridBagConstraints);

        jXPanel2.setBackground(new java.awt.Color(153, 0, 153));
        jXPanel2.setPreferredSize(new java.awt.Dimension(640, 560));
        jXPanel2.setScrollableTracksViewportHeight(false);
        jXPanel2.setScrollableTracksViewportWidth(false);
        jXPanel2.setLayout(new java.awt.GridLayout());
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        gridBagConstraints.weightx = 0.7;
        gridBagConstraints.weighty = 0.7;
        getContentPane().add(jXPanel2, gridBagConstraints);

        pack();
    }// </editor-fold>                        

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see [url=http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html]How to Set the Look and Feel (The Java™ Tutorials > Creating a GUI With JFC/Swing > Modifying the Look and Feel)[/url] 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(blubb.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(blubb.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(blubb.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(blubb.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new blubb().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private org.jdesktop.swingx.JXGradientChooser jXGradientChooser1;
    private org.jdesktop.swingx.JXPanel jXPanel1;
    private org.jdesktop.swingx.JXPanel jXPanel2;
    // End of variables declaration                   
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G LayoutManager Beliebige Anzahl von Panels für LayoutManager AWT, Swing, JavaFX & SWT 3
R Swing Welche LayoutManager sind die richtigen für mich? AWT, Swing, JavaFX & SWT 11
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Z Swing Welcher Layoutmanager bei ScrollPane? AWT, Swing, JavaFX & SWT 4
F Welchen Layoutmanager verwenden? AWT, Swing, JavaFX & SWT 2
G Komponenten vergrößern sich nicht trotz Layoutmanager AWT, Swing, JavaFX & SWT 24
N Welcher LayoutManager AWT, Swing, JavaFX & SWT 16
Birke Swing Neue Swing LayoutManager: TOnion Projekt AWT, Swing, JavaFX & SWT 10
B Swing JLabel und LayoutManager AWT, Swing, JavaFX & SWT 20
F Swing Layoutmanager für Mittplatzierung ? AWT, Swing, JavaFX & SWT 6
B SWT Dynamische GUI (Layoutmanager?) AWT, Swing, JavaFX & SWT 2
J Welche(n) LayoutManager für große Gui? AWT, Swing, JavaFX & SWT 6
D Layoutmanager in Java Swing vs. Java AWT AWT, Swing, JavaFX & SWT 3
P Layoutmanager-Richtlinie ? AWT, Swing, JavaFX & SWT 8
J 2 Bereiche im Frame komplett nutzen - Welchen Layoutmanager? AWT, Swing, JavaFX & SWT 3
TheWhiteShadow Swing suche passenden LayoutManager AWT, Swing, JavaFX & SWT 8
SexyPenny90 Welcher LayoutManager erfüllt meine Bedingung AWT, Swing, JavaFX & SWT 7
C SWT LayoutManager AWT, Swing, JavaFX & SWT 2
L LayoutManager macht nichts AWT, Swing, JavaFX & SWT 19
S LayoutManager Welcher LayoutManager für dieses zweispaltige Layout? AWT, Swing, JavaFX & SWT 13
M Fenster aufteilen, aber mit welchem LayoutManager? AWT, Swing, JavaFX & SWT 10
G LayoutManager LayoutManager gesucht AWT, Swing, JavaFX & SWT 2
R Swing Variable Panelbreite ohne Layoutmanager AWT, Swing, JavaFX & SWT 6
R LayoutManager Problem mit setLayout(LayoutManager) AWT, Swing, JavaFX & SWT 9
F Anfängerfrage: Swing und LayoutManager AWT, Swing, JavaFX & SWT 4
V LayoutManager Eigener LayoutManager funktioniert nicht. AWT, Swing, JavaFX & SWT 5
N LayoutManager suche LayoutManager für Tabellenstruktur AWT, Swing, JavaFX & SWT 2
D LayoutManager JPanels ohne LayoutManager platzieren AWT, Swing, JavaFX & SWT 6
Ollek JTextField Verhalten mit LayoutManager AWT, Swing, JavaFX & SWT 8
B LayoutManager mischen keine gute Idee? AWT, Swing, JavaFX & SWT 9
hdi SWT Suche passenden LayoutManager AWT, Swing, JavaFX & SWT 5
C passender layoutmanager gesucht AWT, Swing, JavaFX & SWT 2
I Swing Positionieren von Panels mit layoutManager AWT, Swing, JavaFX & SWT 6
E Swing Suche LayoutManager AWT, Swing, JavaFX & SWT 5
E Layoutmanager mit fester Breite gesucht AWT, Swing, JavaFX & SWT 9
R Layoutmanager AWT, Swing, JavaFX & SWT 13
K Swing JInternalFrame und LayoutManager AWT, Swing, JavaFX & SWT 6
W LayoutManager Hell AWT, Swing, JavaFX & SWT 2
P JPanel: LayoutManager und trotzdem absolut positionieren? AWT, Swing, JavaFX & SWT 3
J eigener Layoutmanager? AWT, Swing, JavaFX & SWT 6
M JLabel mit Layoutmanager AWT, Swing, JavaFX & SWT 2
G Layoutmanager mit festem Gitter AWT, Swing, JavaFX & SWT 6
R getInsets ohne Layoutmanager AWT, Swing, JavaFX & SWT 7
R LayoutManager ähnlich BorderLayout, mit einer Ausnahme AWT, Swing, JavaFX & SWT 2
T Layoutmanager der vorhanden Platz beruecksichtigt? AWT, Swing, JavaFX & SWT 5
J LayoutManager der Elemente untereinander anordnet. AWT, Swing, JavaFX & SWT 11
F Der richtige Layoutmanager AWT, Swing, JavaFX & SWT 6
G LayoutManager und Abstand AWT, Swing, JavaFX & SWT 6
A LayoutManager-Wünsche AWT, Swing, JavaFX & SWT 16
T % von Komponenten unter Layoutmanager AWT, Swing, JavaFX & SWT 2
M Layoutmanager und Komponente AWT, Swing, JavaFX & SWT 2
F LayoutManager und Component.setVisible(boolean) AWT, Swing, JavaFX & SWT 2
G Fenster mit LayoutManager AWT, Swing, JavaFX & SWT 3
C Verschachtelung von JPanels mit verschiedenen LayoutManager AWT, Swing, JavaFX & SWT 4
T JInternalFrame Konflikt mit LayoutManager AWT, Swing, JavaFX & SWT 5
S JTextField ohne LayoutManager positionieren AWT, Swing, JavaFX & SWT 3
F PanelBounds an TextPaneBounds anpassen LayoutManager: Null AWT, Swing, JavaFX & SWT 2
B Welchen LayoutManager? AWT, Swing, JavaFX & SWT 17
S Wie funktioniert der LayoutManager? AWT, Swing, JavaFX & SWT 9
P Zeichnen + LayoutManager AWT, Swing, JavaFX & SWT 7
B Layoutmanager Tutorial AWT, Swing, JavaFX & SWT 15
M LayoutManager Informationen AWT, Swing, JavaFX & SWT 4
L LayoutManager ähnlich wie FlowLayout AWT, Swing, JavaFX & SWT 5
S Welchen Layoutmanager? AWT, Swing, JavaFX & SWT 6
D LayoutManager und JPanel AWT, Swing, JavaFX & SWT 9
J Welcher Layoutmanager? AWT, Swing, JavaFX & SWT 20
L Probleme mit Scrollbar und LayoutManager AWT, Swing, JavaFX & SWT 3
G Neuer LayoutManager AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben