JScrollPane Problem

bladepit

Bekanntes Mitglied
Hallo an alle,

ich habe ein Problem mit einer ScrollPane von mir. Diese beinhaltet ein selber geschriebenes Objekt (eine Grafik) welche eine JComponent ist.

Ich habe schon alles probiert selbst aber die ScrollPane will nicht mit dem Objekt scrollen geschweige denn die Größe des Objektes annehmen sprich: Inital-Zustand ist das ich den Slider in der ScrollPane gar nicht sehe obwohl der da sein müsste. Hier mein Code:

Java:
jsp = new JScrollPane(dendro, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jsp.getViewport().add(dendro, null);

dendro ist hier mein eigenes Objekt was vom Typ JComponent ist. Was mache ich falsch?

Gruß

bladepit
 

Volvagia

Top Contributor
Dann zeig mal etwas mehr Source.
Denk daran, dass nur Scrollbar ist wenn du die Pref. Size richtig zurückgibst. Aber die vertical Bar solltest du trotzdem sehen.
 

Michael...

Top Contributor
Erstens das:
Warum addest du das selbe Objekt nochmal am Viewport? Kommentier die Zeile mal aus.
Und zweites:
Die JScrollPane verwendet die PreferredSize der Komponente im Viewport, um die Notwendigkeit und den Skrollbereich der Skrollbalken zu bestimmen.
Ich würde meinen A... darauf verwetten, dass die PreferredSize Deiner selbst geschriebenen Komponente 0x0 liefert ;-)
 

bladepit

Bekanntes Mitglied
@Michael da hast du sowas von Recht mi 0x0.....:)

Das Problem an der Stelle ist das die Komponenten nicht selber von mir geschrieben ist sondern von einem Kollegen der aber net mehr ist.

Was muss ich bei der Klasse vom Typ JComponent ändern das diese eine PreferedSize hat?

Oder kann ich den Weg anderesrum gehen indem ich die PreferedSize nach dem das Objekt erstellt ist so setze so groß wie das Panel ist welche die ScrollPane beinhaltet?
 

bladepit

Bekanntes Mitglied
Also wenn ich nun das machen (Ausgabe der Dim ist 221;180) passiert trotzdem nix:

Java:
dendro.setPreferredSize(paneldimension);
jsp = new JScrollPane(dendro, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

Wie meinst du das mit dem Label?
 

bladepit

Bekanntes Mitglied
Ok das wird nun was viel werden aber naja.

Die Klasse Dendrogram (das wichtiges denk ich):

Java:
public class Dendrogram extends MatrixRelatedComponent 

private void updateContainerSize() {
		JScrollPane container = (JScrollPane)this.getParent().getParent();
		Dimension d = new Dimension(this.getMinimumSize().width, this.getMinimumSize().height);
		if(this.getAxis() == Axis.X)
			d.height += container.getHorizontalScrollBar().getHeight() + 5 + DENDROGRAM_YOFFSET;
		else if(this.getAxis() == Axis.Y)
			d.width += container.getVerticalScrollBar().getWidth() + 5 + DENDROGRAM_XOFFSET;
		
		container.setMinimumSize(d);
		container.setPreferredSize(d);
		
		container.updateUI();
	}

Und dann noch MatrixComponent:

Java:
public abstract class MatrixRelatedComponent extends JComponent {
	
	public enum Axis { X, Y };
	
	private Axis axis;
	private Dimension tileSize;
	private boolean dataProvided;
	private int numberOfTiles;
	
	protected void setSizeParams(Dimension d) {
		this.setSize(d);
		this.setPreferredSize(d);
		this.setMinimumSize(d);
		this.setMaximumSize(new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE));
	}
 

Michael...

Top Contributor
Die Klasse
Code:
MatrixRelatedComponent
besitzt doch eine Methode
Code:
setSizeParams(Dimension d)
um die Größen zu setzen.

Was soll die Methode
Code:
updateContainerSize()
in Dendrogramm und was soll die JScrollPane darin? Das ist wohl eher K...
 

bladepit

Bekanntes Mitglied
Wie gesagt ich nutze das nur...:)

Was der sich dabei gedacht hat kann ich nur erahnen...:)

Ich versuch mal die updateContainer rauszunehmen und die größe dann zu setzen
 

bladepit

Bekanntes Mitglied
Ok nachdem ich das alles mal rausgenommen und was umstrukturiert hab passiert zwar trotzdem noch nix aber die Größe wird gesetzt. Das mache ich aktuell:

Java:
dendro.setData((BiCluster) cluster, MatrixRelatedComponent.Axis.Y, tileSize, 6,lblwidth,5);
			dendro.setMaximumSize(new Dimension(Integer.MAX_VALUE, maximumSize.height));
			System.out.println(dendro.getPreferredSize());
			jsp = new JScrollPane(dendro, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

Danach hab ich ne Dim von 190;60
 

Michael...

Top Contributor
Ich versuch mal die updateContainer rauszunehmen und die größe dann zu setzen
Da wird sich vermutlich nicht viel ändern. Nur macht es nicht wirklich Sinn, dass eine Komponente versucht die Größe der umgebenden ScrollPane zu ändern. Je nach verwendetem LayoutManager hat das ja nicht einmal Auswirkung. Nur weil ich beim Auto in der Garage die Türen bis zum Anschlag aufreiße wird die Garage ja nicht größer.

Die Komponente muss "nur" ihre Wunschgröße (PreferredSize) setzen und die JScrollPane passt darauf hin automatisch den skrollbaren Bereich an.
 

bladepit

Bekanntes Mitglied
Wie gesagt (siehe mein letzter Thread) nun wird das dendro erstellt die Daten gesetzt sowie die Size und dann wird die JComponent der ScrollPane hinzugefügt.

Das dendro hat auch ne PreferedSize jedoch passiert immer noch nix.
 

bladepit

Bekanntes Mitglied
Hier ist mal ein Bild weil ich krieg das gar net hin...

Directupload.net - Dhjfnvg5m.png

So die ScrollPane um die es geht ist links die ScrollPane. Die soll mit der rechts gekoppelt werden.
Sprich ich scroll rechts in der Heatmap dann soll links mitgescrollt werden.

Ich mache folgendes:

1. Erstelle die Grafik links
2. Erstelle die Heatmap + ScrollPane etc.
3. Erstelle die ScrollPane für die Grafik.

Wie muss ich jetzt die Size für die ScrollPane setzen? Habe schon alles ausprobiert...:-(
 

Michael...

Top Contributor
So die ScrollPane um die es geht ist links die ScrollPane.
Das wäre dann wohl Schritt 2.
Wie muss ich jetzt die Size für die ScrollPane setzen?
Die Size der ScrollPane passt doch (auf dem Bild sind beide ScrollPanes gleich hoch).
Wichtig ist die PreferredSize der Dendrogramm Komponente und die kann man ja z.B. direkt über setPreferredSize(Dimension) oder mit setSizeParams(Dimension) setzen.

Mehr kann ich bei den mir bekannten Informationen nicht dazu sagen.
 

Michael...

Top Contributor
von der Höhe scheint es doch zu passen. nur die Breite bzw der Rand hat sich verändert.Warum?
Wenn diese Knoten sowieso zu den Strings gehören, warum malst Du das Dendrogramm nicht mit den Strings direkt in die RowHeader Komponente der JScrollPane. Dann hättest Du anschließend nicht das Problem die beiden JScrollPanes zu synchronisieren.
 

bladepit

Bekanntes Mitglied
Ne leider ist es vom Kunden erwünscht den Baum auch weg zu klappen.....das passt schon so gut mit der Unterteilung und ich denke es ist ja möglich die beiden scrollpanes zu synchronisieren....

Warum sich der Rand verändert hat weiß ich noch nicht. Das Problem ist aber wie man sieht das mit den Linien zu den Strings. Wenn ich die Größe der Komponente ändere dann geht die Zuordnung die vorher gemacht wird durch jede Menge Berechnungen und Zeichnungen verloren.

Ich verstehe nicht warum das bei der Tabelle geht (schließlich ist das da ja nix anderes) und warum das bei meiner eigenen Komponente nicht geht
 

Michael...

Top Contributor
Ne leider ist es vom Kunden erwünscht den Baum auch weg zu klappen.....
Das ginge ja so auch und man hätte den "störenden" Skrollbalken nicht dazwischen.
Man kann ja auch in der RowHeader - Komponente den Baum zeichnen oder nichtzeichnen und entsprechend die Größe der Komponente anpassen - auch hier kommt es auf die PreferredSize (Breite) an ;-)
 

bladepit

Bekanntes Mitglied
Hmm was mach ich denn nun?

Voll die zwickmühle....setz ich die preferedsize hab ich die scrollpane aber den baum falsch und setz ich die nicht dann hab ich den baum richtig aber keine scrollpane...

Man ist das verflixt...dachte das ich das mal schnell löse würde...:-(
 

bERt0r

Top Contributor
Wie oft steht in deinem Code
Java:
xBeliebigerComponent.add(yBeliebigerComponent,null);
?
 

bladepit

Bekanntes Mitglied
Ich bin voll durch einander...:)

Also hier ist der Code der das Panel auf der linken Seite mit dem Baum erzeugt:

Java:
this.substdendropanel = new JPanel(new BorderLayout());
		this.substdendropane = new FoldoutPane(substdendropanel,JXCollapsiblePane.Direction.RIGHT, true, Color.white,"Substance Dendogram", false, this,true);
		this.substdendroouterpanel = new JPanel(new BorderLayout());
		this.substdendroouterpanel.add(substdendropane,BorderLayout.WEST);

Das substdendropanel beinhaltet dann später die JScrollPane.
Das substdendropane ist die FoldoutPane und das outerpanel ist das Panel welches dann zu dem Layout in der gesamten Darstellung gehört.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
A Swing JScrollPane Problem AWT, Swing, JavaFX & SWT 6
D Swing JScrollPane in JScrollPane - Problem AWT, Swing, JavaFX & SWT 3
B JScrollPane Problem AWT, Swing, JavaFX & SWT 2
M JScrollPane Problem AWT, Swing, JavaFX & SWT 6
RELAXccc Swing JTree + JScrollPane, refresh Problem AWT, Swing, JavaFX & SWT 17
A Problem mit JScrollPane in einer JScrollpane AWT, Swing, JavaFX & SWT 4
T Swing JScrollPane- und Tabelle-Header Problem AWT, Swing, JavaFX & SWT 25
G Swing JScrollPane/Layoutmanger Problem bei dynamischer Größenänderung AWT, Swing, JavaFX & SWT 7
S Swing Problem mit JCheckBox auf JPanel in JScrollPane AWT, Swing, JavaFX & SWT 8
O JDialog-JScrollPane-JTable Problem AWT, Swing, JavaFX & SWT 3
C JScrollPane - Problem AWT, Swing, JavaFX & SWT 8
T Problem mit JScrollPane AWT, Swing, JavaFX & SWT 12
S JScrollpane Problem bei ChildFrame AWT, Swing, JavaFX & SWT 2
S JScrollPane-Problem AWT, Swing, JavaFX & SWT 2
J Problem mit JTextPane & JScrollPane (horizontal) AWT, Swing, JavaFX & SWT 3
W JList JScrollPane Problem AWT, Swing, JavaFX & SWT 3
H Scroll-Problem bei JScrollPane+JTextPane AWT, Swing, JavaFX & SWT 2
E Problem mit JScrollPane und JList AWT, Swing, JavaFX & SWT 4
M JTextArea in JScrollPane, Problem mit Thread.sleep() AWT, Swing, JavaFX & SWT 5
R JScrollPane Problem AWT, Swing, JavaFX & SWT 2
G JList und JScrollPane Problem AWT, Swing, JavaFX & SWT 2
G JScrollPane problem mit aktualisierung der daten AWT, Swing, JavaFX & SWT 3
N Problem mit JScrollPane und JPane(FlowLayout) AWT, Swing, JavaFX & SWT 4
N Layout-Problem (JScrollPane, GridBagLayout) AWT, Swing, JavaFX & SWT 3
B Problem mit JScrollPane AWT, Swing, JavaFX & SWT 4
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
E JScrollPane mit JPanel verbinden AWT, Swing, JavaFX & SWT 1
B Swing JScrollPane scrollt nicht AWT, Swing, JavaFX & SWT 10
P JTextarea (in JScrollPane) zeigt nur die beiden letzten Einträge an? AWT, Swing, JavaFX & SWT 0
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
E wie in JScrollPane auf JTextArea zugreifen AWT, Swing, JavaFX & SWT 12
N Swing JScrollPane mit Tastatur bedienen? AWT, Swing, JavaFX & SWT 0
F JScrollPane anzeige AWT, Swing, JavaFX & SWT 7
K Swing JScrollPane wird nicht angezeigt wenn man Components darstellt. AWT, Swing, JavaFX & SWT 2
M Swing JPanel in JScrollPane AWT, Swing, JavaFX & SWT 3
P Swing JEditorPane in Kombination mit JScrollPane AWT, Swing, JavaFX & SWT 29
S Swing jScrollPane - pro Eintrag der Liste, die jCheckBoxes Speichern die in dem Eintrag aktiviert wurden AWT, Swing, JavaFX & SWT 2
T Swing Probleme mit repaint() bzw. JScrollPane AWT, Swing, JavaFX & SWT 7
D JScrollPane in JTabbedPane AWT, Swing, JavaFX & SWT 3
MaxG. Swing JScrollPane AWT, Swing, JavaFX & SWT 10
Soloeco Swing JScrollPane AWT, Swing, JavaFX & SWT 6
A Swing Probleme mit dem adden von JButtons zur JScrollPane AWT, Swing, JavaFX & SWT 2
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
J JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 5
B LayoutManager GridBagLayout und JScrollPane AWT, Swing, JavaFX & SWT 5
Thallius JScrollPane Scrollpos setzen nach Neuzeichnen AWT, Swing, JavaFX & SWT 3
P MalProgramm mit JScrollPane und Canvas AWT, Swing, JavaFX & SWT 2
D Swing JScrollPane Tabelle ändern (2 Tabellen) AWT, Swing, JavaFX & SWT 7
U JScrollPane -> JTabbedPane u.A. AWT, Swing, JavaFX & SWT 3
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
V JScrollPane im zur Laufzeit verändernden JFrame AWT, Swing, JavaFX & SWT 0
W Swing Größenänderung vom JPanel im JScrollPane und anschließendes positionieren AWT, Swing, JavaFX & SWT 2
X Swing JButton's zum JScrollPane hinzufügen geht nicht. Bitte um Hilfe. AWT, Swing, JavaFX & SWT 9
G JTextArea mit JScrollPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
K Swing JScrollPane - JScrollBar anzeigen, wenn Frame verkleinert wird AWT, Swing, JavaFX & SWT 3
Bluedaishi JScrollpane AWT, Swing, JavaFX & SWT 0
L JScrollPane scrollt nicht !! AWT, Swing, JavaFX & SWT 3
F JScrollPane Position setzen (x=0, y=0) AWT, Swing, JavaFX & SWT 2
R JScrollPane überdeckt JPanel? AWT, Swing, JavaFX & SWT 7
H JTree in JScrollPane passt sich nicht an Größe von JPanel an AWT, Swing, JavaFX & SWT 2
S JScrollPane und BorderLayout AWT, Swing, JavaFX & SWT 1
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
W Swing JScrollPane für mein Fenster AWT, Swing, JavaFX & SWT 4
A Swing Probleme mit JScrollPane AWT, Swing, JavaFX & SWT 6
F JTable mit JScrollPane AWT, Swing, JavaFX & SWT 4
I JPanel in JScrollPane verkleinert sich leider nicht .... AWT, Swing, JavaFX & SWT 2
G JScrollPane bricht am Ende der Anzeige nicht um AWT, Swing, JavaFX & SWT 2
J Swing JTextPane mit JScrollPane auf JPanel scrollen nicht AWT, Swing, JavaFX & SWT 6
W Sichtbarer Bereich JScrollPane vs. JList AWT, Swing, JavaFX & SWT 3
B Swing JPanel in JScrollPane einfügen AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Transparentes JScrollPane AWT, Swing, JavaFX & SWT 0
S 3D-Grafik 3d Grafik auf einem JPanel oder im JScrollPane AWT, Swing, JavaFX & SWT 1
R Ändern Default-Verhalten von JScrollpane in einer JScrollpane AWT, Swing, JavaFX & SWT 1
S JScrollPane --> Programm hängt sich beim scrollen auf AWT, Swing, JavaFX & SWT 2
A JScrollPane - ScrollBar Buttongröße verändern AWT, Swing, JavaFX & SWT 1
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
H Swing JScrollPane mit "viel Inhalt" scrollt zu langsam (inkl. See-For-Yourself.jar :D) AWT, Swing, JavaFX & SWT 2
T Swing JScrollPane in JPanel - Breite dynamisch, Höhe fix - wie? AWT, Swing, JavaFX & SWT 2
K Bug in JScrollPane? AWT, Swing, JavaFX & SWT 4
T Swing JScrollPane Farbe der Scrollbar AWT, Swing, JavaFX & SWT 3
M JScrollPane Header AWT, Swing, JavaFX & SWT 3
G JScrollPane über JScrollPane AWT, Swing, JavaFX & SWT 2
V LayoutManager JScrollPane verwirft Elementanordnung AWT, Swing, JavaFX & SWT 3
D Swing JScrollPane AWT, Swing, JavaFX & SWT 7
H cardlayout und jscrollpane AWT, Swing, JavaFX & SWT 14
F 2D-Grafik Skalieren der Scrollbars beim Zoomen einer JScrollPane AWT, Swing, JavaFX & SWT 4
B JScrollPane Horizontal klappt nicht. AWT, Swing, JavaFX & SWT 4
G JScrollPane reagiert nicht auf Änderung der JPanel-Größe AWT, Swing, JavaFX & SWT 4
C jPanel auf jScrollPane zentrieren AWT, Swing, JavaFX & SWT 3
M Swing JScrollPane (Parent JTextArea) aktualisieren + neue Zeile AWT, Swing, JavaFX & SWT 5
U Swing JPane und JScrollpane in JSplitpane-Seite: Scrollen funktioniert nicht AWT, Swing, JavaFX & SWT 3
A Swing Korrekte JTable.rowAt(point) für JTable in JScrollPane AWT, Swing, JavaFX & SWT 5
D Label über JScrollPane AWT, Swing, JavaFX & SWT 3
S JScrollPane reagiert nicht AWT, Swing, JavaFX & SWT 3
X JScrollPane zu JTable hinzufügen AWT, Swing, JavaFX & SWT 16
H JScrollPane - JEditorPane und HTML-Tabelle AWT, Swing, JavaFX & SWT 2
D LayoutManager JScrollPane mit dynamischem Inhalt AWT, Swing, JavaFX & SWT 8

Ähnliche Java Themen

Neue Themen


Oben