Frage zu Layout

Status
Nicht offen für weitere Antworten.

StFighter

Mitglied
Wie kann ich ein Layout ähnlich einem HTML-Browser entwickeln?
Ich habe folgendes:

Eine JFrame(MainWindow), darin eine JScrollPane(ScrollPane), darin ein JPanel(RenderPanel) mit Flowlayout und darin Mehrere kleine JPanels(Layer(1) - Layer(n) ) mit fixer grösse.

Das Problem ist das mein RenderPanel immer so breit sein soll wie mein MainWindow, aber die Höhe soll sich aufgrund des Flowlayouts und der darin befindlichen Layer ergeben ( also ähnlich einem Browser ).
Problem ist das ich bei RenderPanel.setPreferredSize immer auch die Höhe definieren muss -> Scrollpanel wird sinnlos.

Danke im voraus!

mfg StFighter
 

StFighter

Mitglied
@Andre:
weil die Höhe des Panels nicht geändert wird und dadurch die ScrollPane nicht mitbekommt das ihr innerer content eigentlich höher/smaller od. kleiner/breiter ist als vorher und daher die scrollbars nicht anpasst.

Ich hab das Problem heute gelöst und werde die Lösung auch später posten, aber ich hab grad keine Zeit das ganze zusammenzustellen.
[edit]meine Lösung


Die Klasse ResizingFlowLayout welche nicht nur die Komponenten anordnet, sondern auch die Grösse des Containers neu Festlegt.

Code:
package resourcetest;
import java.awt.*;


public class ResizingFlowLayout extends FlowLayout {
    
    public ResizingFlowLayout( int alignment ) {
        super( alignment );
    }
    
    public void layoutContainer( Container target ) {                
        super.layoutContainer( target );              

        int maxx, maxy;
        maxx=0;
        maxy=0;
        
        Component[] comparr = target.getComponents();
        for ( int i=0; i<comparr.length; i++) {
            Component c = comparr[i];
            
            int x = c.getLocation().x + c.getWidth();
            int y = c.getLocation().y + c.getHeight();
            
            if ( x > maxx ) maxx = x;
            if ( y > maxy ) maxy = y;            
        }
        
        Dimension size = new Dimension( maxx, maxy );
        target.setSize( size );
        target.setPreferredSize( size );        
    }               
}



Hauptfenster:
Wichtig ist dieser Eventhandler
Code:
    private void LayerParentAncestorResized(java.awt.event.HierarchyEvent evt) {                                            
        LayerParent.setSize( ScrollPanel.getSize() );
        LayerParent.validate();
    }


Code:
package resourcetest;

import java.awt.*;
import java.awt.geom.*;
import javax.swing.ScrollPaneLayout;

public class FlowDemo extends javax.swing.JFrame {
    
    /** Creates new form LayoutTest */
    public FlowDemo() {
        initComponents();
        LayerParent.setLayout(new ResizingFlowLayout(java.awt.FlowLayout.LEFT));
    }
    
    /** 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.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">                          
    private void initComponents() {
        ScrollPanel = new javax.swing.JScrollPane();
        LayerParent = new javax.swing.JPanel();
        Layer0 = new javax.swing.JPanel();
        Layer1 = new javax.swing.JPanel();
        Layer2 = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        LayerParent.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));

        LayerParent.setPreferredSize(new java.awt.Dimension(1, 1));
        LayerParent.addHierarchyBoundsListener(new java.awt.event.HierarchyBoundsListener() {
            public void ancestorMoved(java.awt.event.HierarchyEvent evt) {
            }
            public void ancestorResized(java.awt.event.HierarchyEvent evt) {
                LayerParentAncestorResized(evt);
            }
        });

        Layer0.setLayout(null);

        Layer0.setBackground(new java.awt.Color(255, 102, 0));
        Layer0.setPreferredSize(new java.awt.Dimension(50, 50));
        LayerParent.add(Layer0);

        Layer1.setLayout(null);

        Layer1.setBackground(new java.awt.Color(51, 255, 0));
        Layer1.setPreferredSize(new java.awt.Dimension(70, 70));
        LayerParent.add(Layer1);

        Layer2.setLayout(null);

        Layer2.setBackground(new java.awt.Color(0, 102, 204));
        Layer2.setPreferredSize(new java.awt.Dimension(40, 40));
        LayerParent.add(Layer2);

        ScrollPanel.setViewportView(LayerParent);

        getContentPane().add(ScrollPanel, java.awt.BorderLayout.CENTER);

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

    private void LayerParentAncestorResized(java.awt.event.HierarchyEvent evt) {                                            
        LayerParent.setSize( ScrollPanel.getSize() );
        LayerParent.validate();
    }                                           
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new FlowDemo().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JPanel Layer0;
    private javax.swing.JPanel Layer1;
    private javax.swing.JPanel Layer2;
    private javax.swing.JPanel LayerParent;
    private javax.swing.JScrollPane ScrollPanel;
    // End of variables declaration                   
    
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
L Einfache Layout Frage für Applet -> Was mache ich bloss falsch? AWT, Swing, JavaFX & SWT 2
T Blöde Layout-Frage AWT, Swing, JavaFX & SWT 7
M GUI Layout frage AWT, Swing, JavaFX & SWT 2
G Layout Frage AWT, Swing, JavaFX & SWT 13
F Frage zum Layout AWT, Swing, JavaFX & SWT 2
K Layout-Frage: 3 Feste Tabellen, 6-10dynamische AWT, Swing, JavaFX & SWT 2
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 10
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
D Frage zu ActionListenern und AvtionEvents AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
F JavaFX Frage zum Logging AWT, Swing, JavaFX & SWT 6
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
J Frage zu setuserdata AWT, Swing, JavaFX & SWT 1
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
T JavaFX Frage zum FX-Loader AWT, Swing, JavaFX & SWT 3
B drawRect Frage und Aufgabenstellung AWT, Swing, JavaFX & SWT 10
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
S Frage zu java.awt.EventQueue AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Frage zum Loggen von Fehlern AWT, Swing, JavaFX & SWT 3
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q Cursor Frage AWT, Swing, JavaFX & SWT 8
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
X Kurze Frage zu JPopup AWT, Swing, JavaFX & SWT 3
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
J Swing Frage zur Vorgehensweise (JTable?, JLabels?) AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
D MVC Frage AWT, Swing, JavaFX & SWT 6
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
M Frage zu Threads AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Frage AWT, Swing, JavaFX & SWT 5
Luk10 g.drawString funktioniert nicht + Frage zur Text-Rendering Qualität AWT, Swing, JavaFX & SWT 7
Luk10 Frage zu Farb-Komposition AWT, Swing, JavaFX & SWT 9
V SWT Import Wizard - frage zur WizardPage AWT, Swing, JavaFX & SWT 5
N Swing Frage JXMapviewer AWT, Swing, JavaFX & SWT 4
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
H Frage zu übergebenem Vector bzw. Boolean AWT, Swing, JavaFX & SWT 3
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
VfL_Freak Swing Frage zu "new JPasswordField( 10 )" AWT, Swing, JavaFX & SWT 6
H Frage zu WindowBuilder Pro AWT, Swing, JavaFX & SWT 3
C Frage/Problem mit Jpanel AWT, Swing, JavaFX & SWT 4
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
GUI-Programmer Zeichnen in Swing - Frage AWT, Swing, JavaFX & SWT 6
Luk10 Frage zu Mouseevents AWT, Swing, JavaFX & SWT 7
J Refreshing Swing Frage AWT, Swing, JavaFX & SWT 10
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
A Frage zu StringBuilder AWT, Swing, JavaFX & SWT 2
S allg. Frage zur GUI-Architektur AWT, Swing, JavaFX & SWT 5
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
H Allgemeine Frage zu Grafikfähigkeiten von Java AWT, Swing, JavaFX & SWT 24
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
Jats Frage zu JLabel & JTextField AWT, Swing, JavaFX & SWT 4
Y frage zu BufferedImage AWT, Swing, JavaFX & SWT 7
hdi Swing Frage zu invokeAndWait() Exceptions AWT, Swing, JavaFX & SWT 8
P Swing Frage zu paintComponent/getGraphics AWT, Swing, JavaFX & SWT 4
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3
S Frage zu Graphics2D AWT, Swing, JavaFX & SWT 3
T AWT Frage zu AWT AWT, Swing, JavaFX & SWT 5
B Frage zu Swing,Threads, SwingWorker und Socket Communikation AWT, Swing, JavaFX & SWT 4
F unspezifizierte Frage zu JTable/ Model AWT, Swing, JavaFX & SWT 6
B SWT Frage zu MVC und Data-Binding AWT, Swing, JavaFX & SWT 8
T LookAndFeel Look and Feel Frage AWT, Swing, JavaFX & SWT 2
J Java2D Kreis/Kurven Frage AWT, Swing, JavaFX & SWT 2
P Kurze Frage zur Gestaltung eines vertikalen Menüs AWT, Swing, JavaFX & SWT 2
Dit_ Frage zum Thema SwingUtilities.invokeLater AWT, Swing, JavaFX & SWT 5
Eldorado Frage zur Anwendung des MVC-Konzept AWT, Swing, JavaFX & SWT 33
G Frage zu processMouseEvent AWT, Swing, JavaFX & SWT 6
M Zoomen in ein JPanel... und eine andere kleine Frage AWT, Swing, JavaFX & SWT 3
D Swing implementierungs-technische Frage zu JList/AbstractListModel AWT, Swing, JavaFX & SWT 7
C Event Frage AWT, Swing, JavaFX & SWT 7
A Frage zu GridLayout AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben