removeAll() entfernt meine JScrollPane nicht :-(

philbo

Mitglied
Hallo,
ich habe das Problem, dass ich eine JScrollPane habe, die eine JTable beinhaltet. Diese wird durch add(myScrollPane) in der einen Methode hinzugefügt.
In einer anderen Methode mache ich gleich am Anfang removeAll(), um alle Objekte zu entfernen. Alle verschwindet auch, bis auf die JScrollPane.

Hat jemand eine Idee, warum das so sein könnte Mit myScrollPane.setVisible(false) könnte ich sie zwar unsichtbar machen, aber das führt natürlich zu ner Exception, wenn sie noch gar nicht geadded wurde.

Gruß
Philipp
 
Original geschrieben von philbo
Hallo,
ich habe das Problem, dass ich eine JScrollPane habe, die eine JTable beinhaltet. Diese wird durch add(myScrollPane) in der einen Methode hinzugefügt.

Ähem.... üblicherweise sieht das so aus:
myScrollPane.getViewPort().add(myTable);

In einer anderen Methode mache ich gleich am Anfang removeAll(), um alle Objekte zu entfernen. Alle verschwindet auch, bis auf die JScrollPane.

Hat jemand eine Idee, warum das so sein könnte Mit myScrollPane.setVisible(false) könnte ich sie zwar unsichtbar machen, aber das führt natürlich zu ner Exception, wenn sie noch gar nicht geadded wurde.

Gruß
Philipp

Evtl. musst Du erst noch die Komponenten der ScrollPane und/oder des Viewports der ScrollPane vorher entsorgen.
 
Ähem.... üblicherweise sieht das so aus:
myScrollPane.getViewPort().add(myTable);

Wie gesagt, das hinzufügen hatte auch so schon geklappt. Habs jetzt mal so umgeändert, das Entfernen klappt aber dennoch nicht.
Ehrlich gesagt hab ich aber vom Viewport noch nie was gehört (*schäm*).


Evtl. musst Du erst noch die Komponenten der ScrollPane und/oder des Viewports der ScrollPane vorher entsorgen

Also die ScollPane hat nur mytable als einzige Komponente...auch wenn ich die entferne, bzw auch wenn ich myScrollPane.getViewPort().remove(mytable) mache, bleibt die Scrollpane trotzdem da, und ist mit den Buttons und Textfelder, die dann erstellt werden zu sehen.
 
Poste mal den relevanten Code, wie und wo die Komponenten hinzugefügt und entfernt werden.
 
Okay...
Code:
void datensatz_suchen(){
mytable = new JTable();
String[] Tabellenkopf = {"Nr","Typ", "Kurzbezeichnung", "Beschreibung", "Raum", "Standort", "Ausleiher", "Leihdatum"};
tablemodel = new MyModel();
tablemodel.setColumnIdentifiers(Tabellenkopf);
mytable.setModel(tablemodel);
mytable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
mytable.setAutoscrolls(true);
objekte_erzeugen();
removeAll();
scr = new JScrollPane();
scr.setBounds(10,80,780,180);
scr.getViewport().add(mytable);
b_aendern.setBounds(110,270,170,25);
b_loeschen.setBounds(310,270,150,25);
b_zurueck.setBounds(550,270,150,25);
add(scr);
add(b_eingeben); add(b_suchaendern);
add(b_ende);add(b_aendern);
add(b_loeschen);add(b_zurueck);
fenster(800,300);
}
Bei objekte_erzeugen werden nur die ganzen Buttons usw. erzeugt

und dann die andere Methode:
Code:
void datensatz_anlegen(){
	try {
	removeAll();
	} 
	catch (Exception e) {
	System.out.println("Error: " + e.toString()
				+ e.getMessage());
	}
[.....]
}
Die zweite habe ich gekürzt, der Fehler scheint ja schon irgendwo vorher zu sein...
Gruß
Philipp

P.S.: Ich weiss, dass mein Stil nicht der wahre ist, aber ich bin ja auch beim "lernen" :)
 
Hallo!

Versuchs mal damit:

Code:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;

/**
 * @author      Darimont<br>
 */

public class ScrollTest extends JFrame {

	private JScrollPane scrollPane;

	public ScrollTest() {
		super("ScrollPaneTest");
		
		final Dimension d = new Dimension(50,100);
		final JFrame _this = this;
		
		setSize(d);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setResizable(false);
		
		final JButton btnTest = new JButton("Test");
		btnTest.addMouseListener(new MouseAdapter() {
			public void mousePressed(MouseEvent evt) {
				System.out.println("TEST");
			}
		});

		final JButton btnRemove = new JButton("Remove");
		btnRemove.addMouseListener(new MouseAdapter() {
			public void mousePressed(MouseEvent evt) {
				System.out.println("Remove");
				removeAll();
				_this.pack();
				setSize(d);
			}
		});

		scrollPane = new JScrollPane();
		scrollPane.setSize(320, 240);
		scrollPane.getViewport().add(btnTest);

		//getContentPane().setLayout(new BorderLayout());
		getContentPane().add(scrollPane, BorderLayout.CENTER);
		getContentPane().add(btnRemove,BorderLayout.SOUTH);
		setVisible(true);
	}

	public static void main(String[] args) {
		new ScrollTest();
	}
}

Gruß Tom
 
Da wird ja eigentlich auch nur removeAll() benutzt, und es geht.
Bei mir ist ja zudem noch das seltsame, dass wenn ich einen anderen Button benutze, die JScrollpane verschwindet, obwohl dort am Anfang auch nur removeAll() aufgerufen wird.

Ich weiß echt nicht, woran das liegen könnte.
 
Ich hab das gerade nochmal beobachtet...irgendwie scheint die JScrollPane nur in meinem Fenster irgendwie "festzuhängen". Wenn ich nämlich das Fenster der Applikation einmal in den Hintergrund mache und dann wieder in den vordergrund (z.B. zwischen IE und meiner Applikation hin u. herschalte), ist die Scrollpane verschwunden.

repaint(); Hat das Problem gelöst.

Danke für eure Hilfe!

Gruß
Philipp
 
Zurück