Partage
  • Partager sur Facebook
  • Partager sur Twitter

JPanel Delete Row

Erreur Suppression de ligne sur un JPanel

    19 janvier 2018 à 17:23:21

    Bonjour, je cherche à supprimer toutes les lignes d'un JPanel. Pour ca je supprime l'objet de mon ArrayList mais l'élément reste affiché. Je dois avoir oublier quelque chose. Merci d'avance pour toute aide. 

    Voici ma classe Modele

    public class ModeleDynamiqueObjet extends AbstractTableModel {
        private ArrayList<Meteo> meteos ;
        private String[] entetes = {"Date", "Temps", "Temperature", "Vent", "Humidité", "Nuage"};
    
    
        public ModeleDynamiqueObjet() {
            super();
            meteos = new ArrayList<Meteo>();
        }
    
        @Override
        public int getRowCount() {
            return meteos.size();
        }
    
        @Override
        public int getColumnCount() {
            return entetes.length;
        }
    
        public String getColumnName(int columnIndex) {
            return entetes[columnIndex];
        }
    
    
        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
            switch (columnIndex) {
                case 0:
                    return  meteos.get(rowIndex).getDateDebut();
                case 1:
                    return meteos.get(rowIndex).getSymbol();
                case 2:
                    return meteos.get(rowIndex).getTemperature();
                case 3:
                    return meteos.get(rowIndex).getWindText();
                case 4:
                    return meteos.get(rowIndex).getHumidty();
                case 5:
                    return meteos.get(rowIndex).getClouds();
    
                default:
                    return null; //Ne devrait jamais arriver
            }
        }
    
        public void addMeteo(Meteo meteo) {
            meteos.add(meteo);
            fireTableRowsInserted(meteos.size() -1, meteos.size() -1);
        }
    
        public void removeMeteo(int index){
            meteos.remove(index);
            fireTableRowsDeleted(index,index);
    
        }
    
    
    }

    Et voici le code de ma Jframe

    public class Fenetre extends JFrame implements Observer, ActionListener {
        private JTextField adresseField;
        private ModeleDynamiqueObjet model;
        private JTable tableau;
        private static Logger logger = Logger.getLogger("Fentre");
    
    
        private Controller controller = null;
    
        public Fenetre(Controller controller) {
            super("Ma météo");
            this.controller = controller;
    
            GraphicsEnvironment.getLocalGraphicsEnvironment();
            this.setSize(800,800);
            this.setLocationRelativeTo(null);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setLayout(new BorderLayout());
            Container contentPane = this.getContentPane();
            
            model = new ModeleDynamiqueObjet();
            tableau = new JTable(model);
            getContentPane().add(new JScrollPane(tableau), BorderLayout.CENTER);
    
            this.setVisible(true);
        }
    
    
        @Override
        public void actionPerformed(ActionEvent e) {
            if(!adresseField.getText().equals("")) {
                this.controller.notifyAdresseUpdated(adresseField.getText());
            }
    
        }
     
    
        @Override
        public void update(Observable o, Object arg) {
    
            if(o instanceof MeteoAPI ){
                MeteoAPI meteoAPI = (MeteoAPI) o;
                ArrayList<Meteo> meteos = new ArrayList<Meteo>(meteoAPI.getMeteos());
    
                logger.info("ROW ="+model.getRowCount());
    
                for(int i =0 ; i < model.getRowCount(); i++){
                    model.removeMeteo(i);
                    tableau.remove(i);
                }
    
                for (Meteo meteo : meteos) {
                    model.addMeteo(meteo);
                }
    
    
               // this.setVisible(true);
            }
    
           }




    • Partager sur Facebook
    • Partager sur Twitter

    JPanel Delete Row

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown