JPanel --> ScrollPane --> Funktioniert nicht

MariusMeier

Mitglied
Hallo zusammen

Ich habe folgenden Code:
Code:
denomNomPanel = new ObservableJPanel();
		denomNomPanel.attach(new Observer() {
			public void update(Observable o, Object arg) {
				IFilter filter = null;
				if (arg instanceof IFilter) {
					filter = (IFilter) arg;
				}
				
				denomNomPanel.setLayout(null);
				
				for(int i=0;i<lblDenominator.size();i++) {
					denomNomPanel.remove((JLabel)lblDenominator.get(i));
					lblDenominator.removeElement(i);
				}
				
				int pos=10;
				for(int i=0;i<filter.getSeparateDenominator().length;i++) {
					System.out.println("Grösse SeparateDenominator: " + filter.getSeparateDenominator()[i]);
					if(filter.getSeparateDenominator()[i] != null) {
						JLabel lblDenom = new JLabel(filter.getSeparateDenominator()[i]);
						lblDenom.setBounds(pos, 10, 150, 30);
						denomNomPanel.add(lblDenom);
						pos+=150;
						lblDenominator.addElement(lblDenom);
					}
				}
				
				for(int i=0;i<lblNominator.size();i++) {
					denomNomPanel.remove((JLabel)lblNominator.get(i));
					lblNominator.removeElement(i);
				}
				
				if(filter.getOffsetK() != 0) {
					pos=150;
				}
				
				else {
					pos=10;
				}
				
				for(int i=0;i<filter.getSeparateNumerator().length;i++) {
					
					if(filter.getSeparateNumerator()[i] != null) {
						JLabel lblNom = new JLabel(filter.getSeparateNumerator()[i]);
						lblNom.setBounds(pos, 60, 150, 30);
						denomNomPanel.add(lblNom);
						pos+=150;
						lblNominator.addElement(lblNom);
					}
				}
				denomNomPanel.updateUI();
				
			}
		});
		ActiveFilter.getInstance().addObserver(denomNomPanel);
Dann have Ich das JPanel einem JScrollPane zugewiesen und zwar folgendermassen:

Code:
JScrollPane denomNomScroll = new JScrollPane(denomNomPanel);
denomNomScroll.setBounds(70, 30, 400, 100);
this.add(denomNomScroll);

Nun zum Problem: Wenn der Nenner oder der Zähler sich aus einem Grund ändert, teilt das der Observer meinem JPanel mit und erstellt dabei weitere JLabels.
Wenn ich 4 JLabels habe, mit irgendwelchen Strings gefüllt, dann sieht man auf dem Bildschrim das 4te JLabel nicht mehr.... eigentlich sollte doch die ScrollPane merken dass sie jetzt eingeblendet werden muss um zum 4ten JLabel zu scrollen.... jedoch passiert nichts.... warum denn genau

MFG Marius Meier
 
Hallo,

ich schätze jetzt einfach mal, dass du
Code:
denomNomPanel.setLayout(null)
gemacht hast.

Wenn du dann natürlich was hinzufügst, was außerhalb der Größe des Panels ist, ist das vollkommen egal. Das Panel bleibt so klein. Du musst das Panel auch vergrößern.

MFG

Sascha
 
mh oke ich schätze mal so was machen wie

Code:
denomNomPanel.setSize(pos, 100);
denomNomPanel.updateUI();
denomNomPanel.repaint();

hat aber ned funktioniert habe ich ne falsche überlegung ?

MFG Marius Meier
 
Oke habs rausgefunden. Habe folgendes gemacht:

Code:
denomNomPanel.setPreferredSize(new Dimension(pos,110));
denomNomPanel.updateUI();

Jetzt funktionierts mit den Scrollbars!

MFG Marius Meier
 
Zurück