BorderLayout.TOP resizen



  • Hallo nochmal.
    Ich hab ein JFrame mit einen Borderlayout. Im Zentrum wird ein JPanel mit objekten dargestellt. im North bereich stelle ich ein JPanel im Flowlayout dar welches die JMenuBars anzeigt dar. Nun passiert es aber wenn das hauptfenster zu klein ist das FlowLayout Panel umbricht. Aber das Borderlayout ändert keine größe so das eines der Toolbars so nach unten rutscht das es vom Center bereich des Borderlayouts überdeckt wird und für mich nicht mehr verfügbar ist. Wie kann ich das Hauptfenster dazu zwingen also den North bereich wieder der richtigen größe an zu passen?



  • Hi.

    Bei dem BorderLayout ist es so, dass der Center-Bereich nur den Platz zu geteilt bekommt, den kein anderer Bereich zu benötigt. Deiner Beschreibung nach, verstehe ich, dass es so eben nicht ist.

    Vielleicht kannst du einfach mal die dazugehörigen Zeilen Code posten.



  • Moadeh schrieb:

    Hi.

    Bei dem BorderLayout ist es so, dass der Center-Bereich nur den Platz zu geteilt bekommt, den kein anderer Bereich zu benötigt. Deiner Beschreibung nach, verstehe ich, dass es so eben nicht ist.

    Vielleicht kannst du einfach mal die dazugehörigen Zeilen Code posten.

    Das dachte ich eben auch
    hier der Code für das Hauptfenster

    GPNObjectPanel objpan=null;
        EditModesToolBar editmodes=null;
        ProcedureToolBar procedures = null;
        MainMenu menu = null;
        AutomaticFireToolBar autofire = null;
        JPanel menuBars;
        public MainForm()
        {
            super("Petri Netz Designer");
            //Transitionsmanager die referenz zum hauptfenster geben
            TransitionFireManager.get().setMainForm(this);
            //Scrollpane für den Center bereich anlegen
            JScrollPane sc = new JScrollPane();
            //Panel zum zeichnen der Objekte anlegen
            objpan = new GPNObjectPanel(sc.getViewport(), this);
            //Viewport des Scrollpanels zuweisen
            sc.getViewport().setView(objpan);
            //Keylistener für das Panel anlegen und zuweisen
            PanelKeyListener test = new PanelKeyListener(objpan, this);
            objpan.addKeyListener(test);
            //Toolbars anlegen
            autofire = new AutomaticFireToolBar();
            autofire.setEnabled(false);
            editmodes = new EditModesToolBar(objpan);
            procedures = new ProcedureToolBar();
            //Zeichenpanel für den FireManager anmelden (um repaint aufzurufen)
            TransitionFireManager.get().setObjectPanel(objpan);
            //Hauptmenü setzen
            menu = new MainMenu(this, objpan);
            menu.setVisible(true);
            this.setJMenuBar(menu);
             //ProcedureManager Referenz zur Toolbar geben um diese zu aktualisieren
            ProcedureManager.get().setProcedureToolBar(procedures);
            //Flowlayout für menüs erzeugen
            FlowLayout fl = new FlowLayout(FlowLayout.LEFT);
            //Panel für Menüs erzeugen
            menuBars = new JPanel(fl);
            //Menüs zu den Panel hinzu fügen
            menuBars.add(editmodes);
            menuBars.add(procedures);
            menuBars.add(autofire);
            //MenüPanel im Top bereich hinzu fügen
            this.add(menuBars, BorderLayout.PAGE_START);
            //Scrollpane im Zentrum platzieren
            this.add(sc, BorderLayout.CENTER);
            //größe setzen
            this.setSize(new Dimension(950,800));
            //Standard Close Operation setzen
            this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            //Zentrieren
            this.setLocationRelativeTo(null);
            //Window Listener beim schließen den Timer ggf stoppen
            this.addWindowListener(new WindowAdapter() 
            {
                @Override
                public void windowClosing(WindowEvent evt) 
                {
                    TransitionFireManager.get().stopTimer();
                }
            });
    
        }
    

Anmelden zum Antworten