removeAll() und neues Hinzufügen

Status
Nicht offen für weitere Antworten.

ManuP

Mitglied
Hi!

Bestimmt habe ich einen ganz banalen Fehler gemacht - aber ich finde ihnen nicht.
Vielleicht kann mir ja jemand helfen?! ???:L

Folgendes Programm verdeutlicht mein Problem:
Code:
/*
 * Created on 15.07.2006
 */
package gui;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListModel;

public class Fehler extends JFrame
  {
    private JPanel panel;
    private JScrollPane jScrollPane;
    private JButton neuBtn;
    private JList jlist;
    private String[] werte;

    public static void main(String[] args)
      {
        Fehler f = new Fehler();
        f.init();
        f.setVisible(true);
      }

    private void init()
      {
        this.setSize(200, 200);
        //erzeuge irgendwelche werte
        erzeugWerte();
        
        panel = new JPanel();
        BorderLayout panelL = new BorderLayout();
        panel.setLayout(panelL);

        jScrollPane = new JScrollPane();
        machListe();
        
        neuBtn = new JButton("Neue Zahlen");
        panel.add(neuBtn, BorderLayout.SOUTH);
        neuBtn.addActionListener(new ActionListener()
          {
            public void actionPerformed(ActionEvent e)
              {
                //Irgendeine Methode erzeugt neue Werte, die dann in der JList
                // angezeit werden sollen
                erzeugWerte();
                //Diese müssen dann natürlich auch sichtbar werden...
                //lösche den Inhalt des ScrollPane
                jScrollPane.removeAll();
                //und setze eine neue liste drauf!
                machListe();
                validate();
              }
          });

        this.getContentPane().add(panel, BorderLayout.CENTER);
        panel.add(neuBtn, BorderLayout.SOUTH);
        panel.add(jScrollPane, BorderLayout.CENTER);

      }

    private void erzeugWerte()
      {
        werte = new String[(int)(Math.random() * 20)];
        for (int i = 0; i < werte.length; i++)
          {
            werte[i] = "" + (Math.random() * 33);
          }
      }

    private void machListe()
      {
        jlist = new JList();
        ListModel listModel = new DefaultComboBoxModel(werte);
        jlist.setModel(listModel);
        jScrollPane.add(jlist);
        jScrollPane.setViewportView(jlist);
      }
  }

Es werden auf knopfdruck neue Daten erzeugt, die dann in einer JList (aktualisiert natürlich) dargestellt werden sollen!

Danke,
Manu
 
B

Beni

Gast
Ein "removeAll" auf eine JScrollPane hat Nebenwirkungen, denn zwischen der ScrollPane und der JList wird noch eine weitere Component eingebauen (die nicht entfernt werden sollte).

Egal; du hast sowieso einen komischen Ansatz gewählt. Dein Programm sollte die *Daten*, nicht die graphische Oberfläche verändern. Lass die JList wo sie ist, und setz ihr einfach ein neues Model:

Code:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Beispiel extends JFrame
  {
    private JPanel panel;
    private JScrollPane jScrollPane;
    private JButton neuBtn;
    private JList jlist;
    private String[] werte;

    public static void main(String[] args)
      {
        Beispiel f = new Beispiel();
        f.init();
        f.setVisible(true);
      }

    private void init()
      {
        this.setSize(200, 200);
        //erzeuge irgendwelche werte
        erzeugWerte();
       
        panel = new JPanel();
        BorderLayout panelL = new BorderLayout();
        panel.setLayout(panelL);

        jScrollPane = new JScrollPane();
        machListe();
       
        neuBtn = new JButton("Neue Zahlen");
        panel.add(neuBtn, BorderLayout.SOUTH);
        neuBtn.addActionListener(new ActionListener()
          {
            public void actionPerformed(ActionEvent e)
              {
                //Irgendeine Methode erzeugt neue Werte, die dann in der JList
                // angezeit werden sollen
                erzeugWerte();
                //Diese müssen dann natürlich auch sichtbar werden...
                //lösche den Inhalt des ScrollPane
                //jScrollPane.removeAll();   // <<<<<<<<<<<<<<<<
                //und setze eine neue liste drauf!
                machListe();
                //validate();
              }
          });

        this.getContentPane().add(panel, BorderLayout.CENTER);
        panel.add(neuBtn, BorderLayout.SOUTH);
        panel.add(jScrollPane, BorderLayout.CENTER);

      }

    private void erzeugWerte()
      {
        werte = new String[(int)(Math.random() * 20)];
        for (int i = 0; i < werte.length; i++)
          {
            werte[i] = "" + (Math.random() * 33);
          }
      }

    private void machListe(){
        if( jlist == null ){
            jlist = new JList(); // beim ersten Aufruf gibts die Liste noch nicht
            jScrollPane.setViewportView( jlist );
        }
        
        DefaultListModel model = new DefaultListModel();
        for( int i = 0; i < werte.length; i++ )
            model.addElement( werte[i] );
        
        jlist.setModel( model );
      }
  }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Probleme mit removeAll() Java Basics - Anfänger-Themen 3
I Problem mit jPanel.removeAll() Java Basics - Anfänger-Themen 43
M Problem mit removeAll() im JApplet Java Basics - Anfänger-Themen 13
N removeAll und ConcurrentModificationException Java Basics - Anfänger-Themen 2
C removeAll() - TextField Java Basics - Anfänger-Themen 3
J neues Object (JLabel) vorab zum Layout hinzufügen , Location setzen, etc? Java Basics - Anfänger-Themen 2
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
J Array vertauschen ohne ein neues anzulegen?! Java Basics - Anfänger-Themen 10
W Neues Lern-Projekt gesucht Java Basics - Anfänger-Themen 8
B Erste Schritte nio oder io für neues Projekt Java Basics - Anfänger-Themen 1
AnnaBauer21 org.w3c.dom.Element - Neues Element hinzufügen Java Basics - Anfänger-Themen 4
C Neues Objekt mit Beziehung zu bereits bestehendem Objekt Java Basics - Anfänger-Themen 4
T Erste Schritte Totaler Noob in Java will was neues lernen Java Basics - Anfänger-Themen 22
E Knopfdruck neues Fenster öffnen Java Basics - Anfänger-Themen 5
F Verweis oder neues Objekt? Java Basics - Anfänger-Themen 8
J Variablen Strings mit Zeilenumbrüchen in neues Array Element Java Basics - Anfänger-Themen 1
F Neues Objekt oder nur ein Verweis? Java Basics - Anfänger-Themen 5
K Erste Schritte Neues Fenster mit Textinhalt öffnen Java Basics - Anfänger-Themen 6
M Code um per jButton ein neues Fenster zu öffnen Java Basics - Anfänger-Themen 3
L OOP Neues Objekt bei jeder Eingabe erstellen (Objekte speichern?) Java Basics - Anfänger-Themen 10
I Innerhalb einer Methode suchen und hinzufügen. Neues Objekt in Suche dann? Java Basics - Anfänger-Themen 8
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
J char-Array rückwärts ausgeben und in neues Char-Array speichern Java Basics - Anfänger-Themen 3
P Array reversed in ein neues Array Java Basics - Anfänger-Themen 5
P Vererbung Neues Objekt aus Vorlage erzeugen Java Basics - Anfänger-Themen 1
F Neues Panel und Button unsichtbar Java Basics - Anfänger-Themen 10
M Beim Klicken auf X neues Fenster Java Basics - Anfänger-Themen 4
S Neues Fenster auf Knopfdruck Java Basics - Anfänger-Themen 12
J Button drücken neues Fenster?! Java Basics - Anfänger-Themen 5
M Neues Objekt erzeugen mit Klassennamen oder ohne Java Basics - Anfänger-Themen 5
I Neues Klassenobjekt nicht "ansprechbar" Java Basics - Anfänger-Themen 5
C Button - neues Fenster - Bestellung anzeigen Java Basics - Anfänger-Themen 10
M Neues Objekt? Java Basics - Anfänger-Themen 6
K Neues Bild bei eingabe bestätigung erscheinen Java Basics - Anfänger-Themen 21
M Timer-Thread in Swing öffnet jedes Mal ein neues Fenster Java Basics - Anfänger-Themen 6
D Design-Tipps für neues Programm (Excel-Charts-...) Java Basics - Anfänger-Themen 3
M Neues Fenster Java Basics - Anfänger-Themen 2
S Innerhalb eines Fensters ein neues erschaffen Java Basics - Anfänger-Themen 7
D aus einem einzeiligen String ein neues Objekt erstellen Java Basics - Anfänger-Themen 5
K neues Fenster mit Button öffnen Java Basics - Anfänger-Themen 17
D Neues Frame öffnen Java Basics - Anfänger-Themen 7
M Neues Objekt erstellen Java Basics - Anfänger-Themen 3
P neues Objekt Java Basics - Anfänger-Themen 4
J Neues Forum Thema erstellen mit java(httpclient) Java Basics - Anfänger-Themen 11
D Neues Objekt in Methode erstellen möglich? Java Basics - Anfänger-Themen 5
M Neues Fenster öffnen altes schützen Java Basics - Anfänger-Themen 10
S mit clickevent neues formular öffnen Java Basics - Anfänger-Themen 2
K Neues Fenster Öffnen? Java Basics - Anfänger-Themen 18
F jTable - neues Element vorher auf existenz Prüfen Java Basics - Anfänger-Themen 7
B neues Objekt erzeugen Java Basics - Anfänger-Themen 7
E Neues Java Fenster öffnen Java Basics - Anfänger-Themen 4
D Neues ContentPane öffnen Java Basics - Anfänger-Themen 3
B neues Problem! Java Basics - Anfänger-Themen 14
G JSP ohne neues Fenster aufrufen. Java Basics - Anfänger-Themen 8
S neues Objekt benennen Java Basics - Anfänger-Themen 3
I Probleme bei "Neues Spiel" Java Basics - Anfänger-Themen 3
P Neues Fenster ueber Hauptfenster Java Basics - Anfänger-Themen 4
T Möchte ein neues Objekt erzeugen mit Wert von anderem Objekt Java Basics - Anfänger-Themen 9
L Wie kann ich auch in einem ActionListener ein neues java Pro Java Basics - Anfänger-Themen 8
gurgi mit button neues Frame öffnen Java Basics - Anfänger-Themen 7
G Neues File mit vorgegebenen Einstellungen erstellen? Java Basics - Anfänger-Themen 7
G neues Objekt der Klasse eines anderen Objekts Java Basics - Anfänger-Themen 3
T Panel entfernen, neues hinzufügen Java Basics - Anfänger-Themen 2
D neues Fenster in GUI Java Basics - Anfänger-Themen 2
S Methode soll ein neues Objekt vom Typ Class XYZ Java Basics - Anfänger-Themen 7
G neues String Array in super() übergeben Java Basics - Anfänger-Themen 3
S vom button ein neues fenster öffnen Java Basics - Anfänger-Themen 1
L neues Fenster und Hauptfenster sperren Java Basics - Anfänger-Themen 11
N Open Source für Anfänger, neues Projekt-> Interesse? Java Basics - Anfänger-Themen 36
I Neues Spiel starten Java Basics - Anfänger-Themen 9
K Neues Fenster per Buttonklick, Texteingabe speichern Java Basics - Anfänger-Themen 9
S Problem neues Objekt erzeugen Java Basics - Anfänger-Themen 4
A neues Objekt in main methode erstellen Java Basics - Anfänger-Themen 2
N Wie öffne ich ein neues Applet? Java Basics - Anfänger-Themen 4
G neues Paket importieren Java Basics - Anfänger-Themen 2
M [SOLVED]private Daten head - neues objekt? Java Basics - Anfänger-Themen 12
R Spieleprogrammierung Menüeintrag "Neues Spiel" Java Basics - Anfänger-Themen 2
G Neues Bild bei MouseOver Java Basics - Anfänger-Themen 2
X GUI: neues Panel in einer Applikation anzeigen lassen Java Basics - Anfänger-Themen 2
R Gui + neues Fenster Java Basics - Anfänger-Themen 8
bernd Neues JFrame erzeugen? Java Basics - Anfänger-Themen 8
S Neues Fenster/Panel nach Knopfdruck Java Basics - Anfänger-Themen 2
M Kann neues Servlet nicht hinzufügen Java Basics - Anfänger-Themen 5
S in einem PopUp ein neues Popup erzeugen? Java Basics - Anfänger-Themen 5
J neues gui hinzugefügt .... jetzt gehts nicht mehr Java Basics - Anfänger-Themen 10
F Warum muss ich ein SSL cert immer manuell hinzufügen? Java Basics - Anfänger-Themen 46
E Elemente aus Liste entfernen und hinzufügen Java Basics - Anfänger-Themen 3
F Einem GIT repository ein Projekt hinzufügen Java Basics - Anfänger-Themen 1
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
F SSL zu keystore hinzufügen Java Basics - Anfänger-Themen 1
mervanpolat Methoden Warum müssen wir "int ans = -1;" hinzufügen? Java Basics - Anfänger-Themen 2
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
I JPA CriteriaBuilder -> Custom SQL hinzufügen Java Basics - Anfänger-Themen 5
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
M Log4J (v2) nachträglich in allen Klassen hinzufügen Java Basics - Anfänger-Themen 9
B Zu Property Feld weitere Informationen hinzufügen? Java Basics - Anfänger-Themen 4
Soloeco JList/DefaultListModel: Wie kann ich ein Panel hinzufügen? Java Basics - Anfänger-Themen 1
G Druckerauftrag hinzufügen Java Basics - Anfänger-Themen 7
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
C Nachträglich neue grafische Objekte hinzufügen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben