ContentPane leeren und völlig neu bestücken?

Status
Nicht offen für weitere Antworten.

sliwalker

Top Contributor
Hi,

wäre nett wenn mir jemand folgende Frage beantworten könnte:

Nachdem ich auf einen Button geklickt habe, sollen ein paar Berechnungen durchgeführt werden und dann alle Elemente des ContentPane entfernt werden (zb. JTextBox, JComboBox) damit ich andere Dinge (zb. Label usw) einfügen kann, die dem Nutzer Informationen geben.

Ich habe probiert mit
Code:
 cp.removeAll()

alle Komponenten zu entfernen und dann die neuen zu erstellen und einzufügen. Aber es scheint nicht die richtige Methode zu sein, da außer 99% Prozessorlast nichts passiert ;) Hab auch schon überlegt, ob ich alles was ich bisher direkt auf dem ContentPane platziert habe auf einem JPanel zu plazieren und dann irgendwie nur die Panel aus zu tausschen. Ist das eher der Lösungsweg?
Kann auch sein das ich total auf dem Schlauch stehe und es schonmal gemacht habe, aber da morgen meine Prüfungen sind, habe ich alles vergessen :p

Wäre nett wenn mir jemand helfen könnte ;)
greetz
SLi
 

The_S

Top Contributor
Hast du das Panel auch wieder aktualisiert oder nur die Komponenten entfernt? Falls das zutrifft, versuchs ma anschließend mit validate()
 
R

Roar

Gast
hm dann machst du wohl irgendwas falsch ;)
sicher dass die 99% prozessorlast nicht von deiner berechnung kommen? generell geht das was du machen willst so:

Code:
Container cp = getContentPane();
cp.removeAll();
cp.add(einPanel);
cp.validate();
cp.repaint();

zeig mal n bisschen code
 

sliwalker

Top Contributor
Wow, das ging schnell :)
hier ein bisschen Code...

Der Eventhandler:

Code:
        if (ae.getActionCommand().equals(btnText[2]))
        {
             if (!  
                   (
                   (textfields[1].getText().equals("")) && 
                   (textfields[2].getText().equals("")) &&             
                   (comboboxes[1].getSelectedItem().toString().equals("")) &&
                   (comboboxes[2].getSelectedItem().toString().equals(""))
                   )
               )
             {
                 stau = new Stau();
                 stau.setMelder(textfields[0].getText());
                 stau.setVonAbfahrtID(((Abfahrt)comboboxes[1].getSelectedItem()).getI_id());
                 stau.setBisAbfahrtID(((Abfahrt)comboboxes[2].getSelectedItem()).getI_id());
                 stau.setZeit(new Date());
                 stau.setLaenge(Integer.parseInt(textfields[1].getText()));
                 stau.setGrund(textfields[2].getText());
                 
                 if (staus.addStau(stau))
                 {
                    showStaus();
                 }
                 else
                 {
                     JOptionPane.showMessageDialog(this, "nicht geklappt");
                 }
             }
        }

Methode "ShowStaus()":
Code:
    public void showStaus()
    {
        //Vector vec = staus.getStaus();
        
        this.cp.removeAll();
        /*
        JList list = new JList(vec);
        DefaultListModel dlm = new DefaultListModel();
        cp.add(new JScrollPane(list));
         */
        this.invalidate();
    }

EDIT:
So entfernt er alles, aber die JList sieht man nicht.
Code:
    public void showStaus()
    {
        Vector vec = staus.getStaus();
        
        this.cp.removeAll();
        
        JList list = new JList();
        DefaultListModel dlm = new DefaultListModel();
        cp.add(new JScrollPane(list));
         
        this.invalidate();
        this.repaint();
    }

In der Klasse Stau habe ich eine Methode"toString()". Dann sollte in der JList doch was stehen,oder?
 

sliwalker

Top Contributor
Sorry,

jetzt klappt es. Hab jetzt validate() anstatt invalidate() benutzt. Aus CPP dachte ich zu wissen, dass invalidate() automatisch validate() aufruft. Aber naja, jetzt geht es.

Lösung:
Code:
    public void showStaus()
    {
        Vector vec = staus.getStaus();
        
        this.cp.removeAll();
        
        JList list = new JList(vec);
        DefaultListModel dlm = new DefaultListModel();
        cp.add(new JScrollPane(list));
         
        this.validate();
        this.repaint();
    }

Danke für den Tipp mit validate() und repaint() ;)

greetz
SLi
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
I ContentPane lösche linien AWT, Swing, JavaFX & SWT 1
I Objekte aus contentPane löschen funktioniert nicht AWT, Swing, JavaFX & SWT 3
U Swing Panels im Contentpane durchschalten AWT, Swing, JavaFX & SWT 1
N individuell geformtes ContentPane?! AWT, Swing, JavaFX & SWT 2
P Swing mit ContentPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
jemandzehage setResizable(false) ändert Größe des Contentpane AWT, Swing, JavaFX & SWT 4
B Swing ContentPane resettet sich selbst AWT, Swing, JavaFX & SWT 2
K Swing: ContentPane von JDialog ist transparent (Fehler) AWT, Swing, JavaFX & SWT 10
thE_29 Bufferungsproblem JFrame/JPanel/ContentPane AWT, Swing, JavaFX & SWT 2
S definierte Größe von contentPane / JPanel möglich? AWT, Swing, JavaFX & SWT 4
P Breite und Höhe des contentPane abfragen AWT, Swing, JavaFX & SWT 3
O ContentPane AWT, Swing, JavaFX & SWT 4
F Wie bestimmte Obj. einer ContentPane abfragen und vergl? AWT, Swing, JavaFX & SWT 11
M Zwei Element auf ein Contentpane AWT, Swing, JavaFX & SWT 45
G jFrame & ContentPane AWT, Swing, JavaFX & SWT 4
T Text auf eine ContentPane AWT, Swing, JavaFX & SWT 4
R ContentPane bei JFrame und JDialog AWT, Swing, JavaFX & SWT 2
D JFrame Größe auf ContentPane Größe abstimmen AWT, Swing, JavaFX & SWT 2
R Buttons in ContentPane austauschen AWT, Swing, JavaFX & SWT 7
K Contentpane neu laden AWT, Swing, JavaFX & SWT 4
F ContentPane Scrollbar machen. AWT, Swing, JavaFX & SWT 3
B JavaFX TextInputDialog: Focus auf Eingabefeldinhalt setzen und nach OK Inhalt leeren AWT, Swing, JavaFX & SWT 5
R Swing JTextField getText() liefert leeren String AWT, Swing, JavaFX & SWT 6
K Viele Textfield mit Hilfe eines MousListener leeren - möglich? AWT, Swing, JavaFX & SWT 8
A Swing JTextField durch einen JButton leeren AWT, Swing, JavaFX & SWT 15
K Swing JTable Text im Hintergrund einer leeren Tabelle AWT, Swing, JavaFX & SWT 3
kniffel Ausgabe von leeren JTable Zeilen AWT, Swing, JavaFX & SWT 3
M Swing JTable cell leeren bei Eingabe AWT, Swing, JavaFX & SWT 6
G Path leeren AWT, Swing, JavaFX & SWT 2
D Erzeugen eines leeren Graphics-Objektes AWT, Swing, JavaFX & SWT 7
W Swing JPasswordField "leeren" AWT, Swing, JavaFX & SWT 3
D JList leeren AWT, Swing, JavaFX & SWT 3
N Jtextfield leeren AWT, Swing, JavaFX & SWT 9
R JTable darstellen von leeren Zellen AWT, Swing, JavaFX & SWT 12
G JFormattedTextField lässt sich nicht mehr leeren AWT, Swing, JavaFX & SWT 4
G JFrame "leeren" AWT, Swing, JavaFX & SWT 5
M Textfelder leeren AWT, Swing, JavaFX & SWT 6
D JTextArea leeren AWT, Swing, JavaFX & SWT 3
S JDialog und 'Inhalte' schliessen bzw. leeren AWT, Swing, JavaFX & SWT 9
M JTextField nach erfolgreicher Eingabe leeren? AWT, Swing, JavaFX & SWT 2
V Fehlerbehandlung bei leeren TextFields AWT, Swing, JavaFX & SWT 18
kniffel GUI-Applet JTable füllt Hintergrund völlig aus AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben