AIUTO!!! JFrame e JPanel e RIDIMENSIONAMENTO FINESTRA

di il
1 risposte

AIUTO!!! JFrame e JPanel e RIDIMENSIONAMENTO FINESTRA

Ciao a tutti, sono nuovo e avrei bisogno di un aiutino, penso proprio che sia una cavolata, ma non ne vengo fuori, spero che qualcuno possa darmi una mano.

in poche parole:

ho un JFrame, un JPanel e 2 oggetti che estendono JPanel quindi è come se avessi 3 JPanel e 2 bottoni. uso un layout GridBagLayout.

aggiungo al frame i bottoni in basso e sopra metto i 3 JPanel sovrapposti.

a seconda del bottone che premo visualizzo il secondo JPanel o il terzo, il primo lo visualizzo solo prima di premere alcun bottone.



diciamo che il programma funziona perfettamente, ho solo il seguente problema:

quando ridimensiono la finestra con il mouse, cioè proprio la tiro come qualsiasi finestra di windows per capirci, il JPanel interno non si espande con la finestra. bensì si sputtana perdendo tutte le caratteristiche che gli avevo impostato tramite il layout manager.

immagino ci sia un qualche metodo che viene chiamato quando allargo la finestra e questo metodo mi sputtani qualcosa.
spero mi possiate aiutare.

mi affido a voi e grazie in anticipo.

1 Risposte

  • Re: AIUTO!!! JFrame e JPanel e RIDIMENSIONAMENTO FINESTRA

    Dimenticavo il codice:
    /*
     * Copyright (C) 2008  Cortiana Federico
     * 
     *    This program is free software: you can redistribute it and/or modify
     *     it under the terms of the GNU General Public License as published by
     *     the Free Software Foundation, either version 3 of the License, or
     *     (at your option) any later version.
     * 
     *     This program is distributed in the hope that it will be useful,
     *     but WITHOUT ANY WARRANTY; without even the implied warranty of
     *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     *     GNU General Public License for more details.
     * 
     *     You should have received a copy of the GNU General Public License
     *     along with this program.  If not, see <http://www.gnu.org/licenses/>
     */
    
    package esercizio2_3;
    import java.awt.event.MouseListener;
    import java.awt.event.MouseEvent;
    import java.awt.GridBagLayout;
    import java.awt.GridBagConstraints;
    import javax.swing.JFrame;
    import javax.swing.JButton;
    import javax.swing.JPanel;
    import java.awt.Color;
    import javax.swing.JOptionPane;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    
    /**
     *
     * @author Federico
     */
    public class ComponentViewer{
    //creo il JFrame che farà da contenitore.
        static JFrame frame = new JFrame();
    
    //creo il JPanel vuoto.
        static JPanel pannello = new JPanel();
    //creo il nuovo JPanel con il rettangolo.
        static RectangleComponent componentRec = new RectangleComponent();
    //creo il nuovo JPanel con il cerchio.
        static CircleComponent componentCirc = new CircleComponent();
            
    
        
        public static void main(String[] args){
            
    //creo il bottone rettangolo.
            JButton buttRect = new JButton("rettangolo");
    //creo il bottone cerchio.
            JButton buttCerc = new JButton("cerchio");
         
            
    // Aggiunta del ricevente della pressione di tasti del mouse sul pannello.        
            class MousePressListener implements MouseListener{
                public void mousePressed(MouseEvent event){  
                   JOptionPane.showMessageDialog(null, "Clicka un bottone sottostante!!!");
                }
    
                // Metodi che non fanno nulla.
                public void mouseReleased(MouseEvent event) {}
                public void mouseClicked(MouseEvent event) {}
                public void mouseEntered(MouseEvent event) {}
                public void mouseExited(MouseEvent event) {}
            }
             
            MouseListener listener = new MousePressListener();
            pannello.addMouseListener(listener);
            
    // Aggiunta del ricevente della pressione di tasti del mouse sul pannello.        
            class MousePressListenerRec implements MouseListener{
                public void mousePressed(MouseEvent event){  
                    int x = event.getX();
                    int y = event.getY();
                    componentRec.moveTo(x, y);
                }
    
                // Metodi che non fanno nulla.
                public void mouseReleased(MouseEvent event) {}
                public void mouseClicked(MouseEvent event) {}
                public void mouseEntered(MouseEvent event) {}
                public void mouseExited(MouseEvent event) {}
            }
    
            MouseListener listenerRec = new MousePressListenerRec();
            componentRec.addMouseListener(listenerRec);        
    
    // Aggiunta del ricevente della pressione di tasti del mouse sul pannello.        
            class MousePressListenerCirc implements MouseListener{
                public void mousePressed(MouseEvent event){  
                    int x = event.getX();
                    int y = event.getY();
                    componentCirc.moveTo(x, y);
                }
    
                // Metodi che non fanno nulla.
                public void mouseReleased(MouseEvent event) {}
                public void mouseClicked(MouseEvent event) {}
                public void mouseEntered(MouseEvent event) {}
                public void mouseExited(MouseEvent event) {}
            }
    
            MouseListener listenerCirc = new MousePressListenerCirc();
            componentCirc.addMouseListener(listenerCirc);
    
    //imposto il colore di sfondo dei 3 JPanel.
            pannello.setBackground(Color.YELLOW);
            componentRec.setBackground(Color.BLUE);
            componentCirc.setBackground(Color.RED);
            
    //creo GridBag.
            GridBagLayout layout = new GridBagLayout();
            GridBagConstraints lim1 = new GridBagConstraints();
            GridBagConstraints lim2 = new GridBagConstraints();
            GridBagConstraints lim3 = new GridBagConstraints();
    
    //imposto "layout" come layout manager di contenitore.
            frame.setLayout(layout);
            
    //imposto i GridBagConstraints.
        //1-LIMPANNELLO
            //imposto la posizione in cui dovrà trovarsi.
            lim1.gridx = 0;
            lim1.gridy = 0;
            
            //imposto il peso di sfruttamento dello spazio in eccesso.
            lim1.weightx = 0;
            lim1.weighty = 1;
                    
            //imposto che il componente deve estendersi fino ai margini.
            lim1.fill = GridBagConstraints.BOTH;
            
            //imposto il posizionamento del componente all'interno della sua cella.
            lim1.anchor = GridBagConstraints.NORTH;
            
            //imposto i margini
            lim1.insets.top = 10;
            lim1.insets.bottom = 10;
            lim1.insets.left = 10;
            lim1.insets.right = 10;
            
            //imposto il numero di colonne e righe che dovrà occupare.
            lim1.gridwidth = 2;
            lim1.gridheight = 1;
            
    //creo nel GridBagLayout layout un'associazione tra un GridBagConstraints e un Component
    //e aggiungo il componente al contenitore.
            layout.setConstraints(pannello, lim1);
            frame.getContentPane().add(pannello); 
            frame.repaint();
                   
            layout.setConstraints(componentRec, lim1);
            frame.getContentPane().add(componentRec); 
            frame.repaint();
            
            layout.setConstraints(componentCirc, lim1);
            frame.getContentPane().add(componentCirc);
            frame.repaint();
            
        //2-LIMBUTTRECTANGLE
            //imposto la posizione in cui dovrà trovarsi il bottone.
            lim2.gridx = 0;
            lim2.gridy = 1;
            
            //imposto il peso di sfruttamento dello spazio in eccesso.
            lim2.weightx = 1;
            lim2.weighty = 1;
            
            //imposto che il componente deve estendersi orizzontalmente fino ai margini.
            lim2.fill = GridBagConstraints.HORIZONTAL;
            
            //imposto il posizionamento del componente all'interno della sua cella.
            lim2.anchor = GridBagConstraints.SOUTH;
            
            //imposto i margini
            lim2.insets.top = 10;
            lim2.insets.bottom = 10;
            lim2.insets.left = 10;
            lim2.insets.right = 10;
            
            //imposto il numero di colonne e righe che dovrà occupare.
            lim2.gridwidth = 1;
            lim2.gridheight = 1;
            
    //creo nel GridBagLayout layout un'associazione tra un GridBagConstraints e un Component.
            layout.setConstraints(buttRect, lim2);
            
    //aggiungo il componente al contenitore.
            frame.getContentPane().add(buttRect);
            
        //3-LIMBUTTCIRCLE
            //imposto la posizione in cui dovrà trovarsi il bottone.
            lim3.gridx = 1;
            lim3.gridy = 1;
            
            //imposto il peso di sfruttamento dello spazio in eccesso.
            lim3.weightx = 1;
            lim3.weighty = 1;
            
            //imposto che il componente deve estendersi orizzontalmente fino ai margini.
            lim3.fill = GridBagConstraints.HORIZONTAL;
            
            //imposto il posizionamento del componente all'interno della sua cella.
            lim3.anchor = GridBagConstraints.SOUTH;
            
            //imposto i margini
            lim3.insets.top = 10;
            lim3.insets.bottom = 10;
            lim3.insets.left = 10;
            lim3.insets.right = 10;
            
            //imposto il numero di colonne e righe che dovrà occupare.
            lim3.gridwidth = 1;
            lim3.gridheight = 1;
            
    //creo nel GridBagLayout layout un'associazione tra un GridBagConstraints e un Component.
            layout.setConstraints(buttCerc, lim3);
            
    //aggiungo il componente al contenitore.
            frame.getContentPane().add(buttCerc);
            
    
            buttRect.addActionListener(new ActionListener(){ 
                public void actionPerformed(ActionEvent event) {     
                    frame.remove(pannello);
                    frame.remove(componentCirc);
                    
                    frame.getContentPane().add(componentRec); 
                    frame.repaint(); 
                    
                } 
            });
            
            
            buttCerc.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent event) { 
                    frame.remove(pannello);
                    frame.remove(componentRec);
                    
                    frame.getContentPane().add(componentCirc); 
                    frame.repaint(); 
                    
                }
            });
            
            //impostazioni del frame.
            frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
            
            
            
        }
        
        private static final int FRAME_WIDTH = 400;
        private static final int FRAME_HEIGHT = 600;
    }
       
        
Devi accedere o registrarti per scrivere nel forum
1 risposte