Visualizzazione dei risultati da 1 a 4 su 4

Discussione: aggiornare frame

  1. #1

    aggiornare frame

    ciao a tutti ho una classe che stampa dei dati inseriti... cè un pulsante ordina e ,quando viene premuto,l'arraylist viene riordinato quindi ho bigogno di ristampare all'inizio avevo fatto una dispose() e richiamo la classe ma, oltre ad essere brutta la riapertura della finestra, perdevo dati che mi servivano. quindi come soluzione ho inserito un jpanel e mi sono fatto la funzione aggiorna che rimuove il pannello e richiama la funzione che lo ricrea (ovviamente ho messo anche la repaint() )
    il problema è che quando si chiama la aggiorna() il frame rimane vuoto e si aggiorna solo se viene ridimensionato.

    ecco il codice:
    codice:
    public class StampaTutti implements ActionListener{
        private Lista l=null;
        private JButton visualizza[],elimina[],ordnome,orddata;
        private JFrame f;
        private JCheckBox morto,regalato;
        private JLabel n,nato;
        private boolean nomorti=false;
        private JPanel p;
    
        StampaTutti(Lista l){
            this.l=l;
            f=new JFrame();
            f.setVisible(true);
            f.setTitle("Visualizza Tutti");
            f.setSize(700, 450);
            f.setDefaultCloseOperation(1);
            Image ico=Toolkit.getDefaultToolkit().getImage("logo.gif");
            f.setIconImage(ico);
            elementi();
        }
    
        public void elementi(){
            p=new JPanel();
            f.add(p);
            p.setLayout(null);
            visualizza=new JButton[l.array.size()];
            elimina=new JButton[l.array.size()];
            int x=0;
            for(int i=0;i<l.array.size();i++){
                if(i==0){
                    x=3;//abbassa la prima righa
                }
                //gestione filtri
                if(nomorti==true){
                    if(l.array.get(i).getMorto().compareTo("")==0){
                        visual(i,x);
                    }
                }
                else{
                    visual(i,x);
                }
            }
            //GESTIONE
            JLabel filtro=new JLabel("Filtri ");
            filtro.setBounds(10, 10, 70, 15);
            p.add(filtro);
            morto=new JCheckBox();
            morto.setText("Morto");
            morto.setBounds(70, 10, 70, 15);
            morto.setSelected(nomorti);
            p.add(morto);
            morto.addActionListener(this);
            regalato=new JCheckBox();
            regalato.setText("Regalato");
            regalato.setBounds(150, 10, 70, 15);
            p.add(regalato);
            regalato.addActionListener(this);
            JLabel ordina=new JLabel("Ordina per");
            ordina.setBounds(10, 40, 70, 15);
            p.add(ordina);
            ordnome=new JButton("Nome");
            ordnome.setBounds(70, 40, 70, 15);
            p.add(ordnome);
            ordnome.addActionListener(this);
            orddata=new JButton("Età");
            orddata.setBounds(140, 40, 70, 15);
            p.add(orddata);
            orddata.addActionListener(this);
        }
    
         public void actionPerformed(ActionEvent e) {
             int x;
             for(x=0;x<l.array.size();x++){
                if(e.getSource().equals(visualizza[x])){
                    Visualizza v=new Visualizza(l,x,this);
                }
                if(e.getSource().equals(elimina[x])){
                    int sc=JOptionPane.showConfirmDialog(f,"Sicuro di cancellare questo cane? Verrà definitivamente cancellato!");
                    if(sc==JOptionPane.YES_OPTION){
                        l.elimina(l.array.get(x));
                        aggiorna();
                    }
                }
             }
             if(e.getSource().equals(ordnome)){
                 l.ordina();
                 //ridisegna
                 aggiorna();
             }
             if(e.getSource().equals(morto)){
                 if(morto.isSelected()){
                     morto.setSelected(true);
                     nomorti=true;
                 }
                 else{
                    nomorti=false;
                    morto.setSelected(false);
                 }
             }
        }
    
    
         public void aggiorna(){
             f.remove(p);
             f.repaint();
             elementi();
         }
         public void visual(int i,int x){
             String nome=l.array.get(i).getNome();
                n=new JLabel("Nome:  "+nome);
                n.setBounds(20, 20*(i+1+x), 150, 15);
                p.add(n);
                int na=l.array.get(i).getAnno();
                nato=new JLabel("Anno di nascita   "+na);
                nato.setBounds(200, 20*(i+1+x), 150, 15);
                p.add(nato);
                //visualizza
                visualizza[i]=new JButton("Visualizza");
                visualizza[i].setBounds(400, 20*(i+1+x), 100, 15);
                p.add(visualizza[i]);
                visualizza[i].addActionListener(this);
                //elimina
                elimina[i]=new JButton("Elimina");
                elimina[i].setBounds(550, 20*(i+1+x), 100, 15);
                p.add(elimina[i]);
                elimina[i].addActionListener(this);
         }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    codice:
    f.validate();
    piuttosto del repaint.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Originariamente inviato da Andrea1979
    codice:
    f.validate();
    piuttosto del repaint.
    funziona grazie mille!
    però adesso vorrei anche sapere cosa fa questa funzione :master:

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Programma con le API sempre sottomano:

    http://java.sun.com/javase/6/docs/api/

    e Container.validate()
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.