Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [principiante] JFrame

    Salve ho creato una classe Finestra che voreri utilizzare per creare finestre ed inserirci dentro i vari campi,
    ho creato + costruttori in modo che la finestra possa essere creata con + opzioni.
    Fino alla creazione da costruttore la finestra viene creata , se voglio invece inserire le varie parti(bottoni aree testo eccc.) non funziona .Vorrei che mi aiutaste a capire il funzionamento e i miei errori:

    Finestra:

    codice:
    import java.awt.*;
    import javax.swing.*;
    
    public class Finestra {
        
       private String titolo;
       private int altezza,larghezza;
       private boolean centra;
       private JPanel c;  //creo pannello per aggiungere le parti nei metodi
       private JFrame f;  //creo frame per utilizzarlo in centra allarga ecc
       
       
        public Finestra(String titolo, int altezza, int larghezza, boolean centra) {
            this.titolo = titolo;
            this.altezza = altezza;
            this.larghezza = larghezza;
            this.centra = centra;
            
            f=new JFrame(titolo); //
            f.setSize(larghezza,altezza);
            if(centra){
                centrafinestra(f);
            }
            else{
                f.setLocation(100,100);
            }
            
    		JPanel c = new JPanel();
    		f.setContentPane(c);
    		f.setVisible(true);
    
    		f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		
    
        }
    
        public Finestra(String titolo, int altezza, int larghezza) {
            this.titolo = titolo;
            this.altezza = altezza;
            this.larghezza = larghezza;
            
            f=new JFrame(titolo);
            f.setSize(larghezza,altezza);
            f.setLocation(100, 100);        
    		JPanel c = new JPanel();
    		f.setContentPane(c);
    		f.setVisible(true);
    
    		
    		f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        }
    
        public Finestra(String titolo) {
            this.titolo = titolo;
            JFrame f=new JFrame(titolo);
            f.setSize(400,400);
            f.setLocation(100, 100);
    		JPanel c = new JPanel();
    		f.setContentPane(c);
    		f.setVisible(true);
    
    		
    		f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    
        }
    
        public Finestra() {
            JFrame f=new JFrame();
            f.setSize(400,400);
            f.setLocation(100, 100);
    		JPanel c = new JPanel();
    		f.setContentPane(c);
    		f.setVisible(true);
    
    		f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);        
    
        }        
    
        
        
       
       public void centrafinestra(JFrame w){
    		Dimension schermo = Toolkit.getDefaultToolkit().getScreenSize();
    		Dimension finestra =w.getSize() ;
    		
    		f.setLocation((schermo.width-finestra.width)/2,(schermo.height-finestra.height)/2);
    
           
       }
       
       public void inserisciEtichetta(String nomeetichetta){
    		JLabel etichetta = new JLabel(nomeetichetta);
    		c.add(etichetta);
    	   
       }
    
       public void inserisciBottone(String nomebottone){
    	   JButton bottone= new JButton(nomebottone);
    	   c.add(bottone);
    
           
       }
        
       public void InserisciAreatesto(String nomeopzionale,int larghezzaArea){
    		JTextField areatesto = new JTextField(nomeopzionale,larghezzaArea) ;
    		c.add(areatesto);
    
       } 
       
       public void inserisciTitoloFinestra(String Titolo){
               f=new JFrame(titolo);
    
    
           
       }
       public void set_grandezzaFinestra(int newLarghezza , int newAltezza){
    	   f.setSize(newLarghezza, newAltezza);
           
       }
       
       
       
    }
    CreaFinestra

    codice:
    public class CreaFinestra {
    
    
        public static void main(String[] args) {
            Finestra w = new Finestra("Finestrona",800,800,false);
            w.inserisciBottone("bottone");
           
        }
    }
    Credo anche di aver capito perchè , perchè una volta costruita una finestra non posso aggiungere le varie "parti" , ma ne devo creare una nuova .
    Domando facendo delle variazioni al codice è possibile fare quello che ho detto(esempio che i metodi chiudano la finestra costruita e ne creino una nuova aggiungendo le "parti" del metodo)?

  2. #2
    Non serve ricreare ogni volta la finestra per aggiungere dei componenti.
    Ti basta rivalidare il panello e/o il frame :
    codice:
    public void inserisciBottone(String nomebottone){
    	   JButton bottone= new JButton(nomebottone);
    	   c.add(bottone);
    
               c.revalidate();
       }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.