Aggiornate Jlist dove averlo modificato

di il
4 risposte

Aggiornate Jlist dove averlo modificato

In questa Jlist ogni volta che aggiungo o tolgo qualcosa vorrei che si aggiornasse la grafica. Ho provato a fare JList1.updateUI non va.

4 Risposte

  • Re: Aggiornate Jlist dove averlo modificato

    p0ll0_ ha scritto:


    In questa Jlist ogni volta che aggiungo o tolgo qualcosa vorrei che si aggiornasse la grafica. Ho provato a fare JList1.updateUI non va.
    Allora: updateUI() non ti serve (e non fa quello che penseresti dal nome!).

    Comunque JList si aggiorna visivamente già da solo quando il suo model viene modificato. Il punto è che dovresti chiarire meglio il contesto, spiegare COME hai creato il JList e COME stai cercando di aggiornarlo.
  • Re: Aggiornate Jlist dove averlo modificato

            jList1.removeAll();
            /**/ String[] strings = new String[files.length];
            for (int i = 0; i < files.length; i++) {
                strings[i] = files[i].getName();
            }
            jList1.setModel(new javax.swing.AbstractListModel<String>() {
    
                public int getSize() {
                    return strings.length;
                }
    
                public String getElementAt(int i) {
                    return strings[i];
                }
            });

    Poi avrei un'altra domanda. Ho un JSpinner e una volta che premo il tasto invia, vorrei che JSpinner segni di nuovo 1, ma se faccio jspin.setValue("1"); non funziona...
  • Re: Aggiornate Jlist dove averlo modificato

    1) jList1.removeAll() è un erroraccio in questo contesto. Il removeAll(), di java.awt.Container, serve quando un "contenitore" (es. JPanel) contiene altri componenti e si vuole rimuoverli tutti. Ma non c'entra nulla con gli elementi visualizzati in JList! (nota: JList non si usa come contenitore, sebbene tecnicamente lo sia, derivando da Container).

    2) Hai creato un nuovo list model custom. Tecnicamente mi pare corretto ma ... innanzitutto non è ridimensionabile e poi non è (facilmente) aggiornabile.
    Se anche vai ad aggiornare successivamente "di nascosto" quell'array strings, modifichi sì l'array ma JList NON si aggiorna né automaticamente né immediatamente, perché non è così che funzionano/devono funzionare le cose.
    Morale: usa un DefaultListModel, creane solo uno (passalo anche alla creazione del JList), tienitelo anche referenziato e modificalo ogni volta come serve e ... JList si aggiornerà da solo automaticamente perché è agganciato a quel model.

    3) Se il JSpinner è stato creato con un SpinnerNumberModel di interi .... allora semmai setValue(1) ... non setValue("1") stringa!
  • Re: Aggiornate Jlist dove averlo modificato

    Grazie mille, adesso funziona. Tu te ne intendi anche di mysql? Almeno un pochino?
Devi accedere o registrarti per scrivere nel forum
4 risposte