In ein JScrollPane zeichnen und Scrollbalken anpassen

Status
Nicht offen für weitere Antworten.

Phil84

Mitglied
Hallo alle zusammen.
Ich möchte in ein JScrollPane zeichnen, wobei die Scrollbalken aktiv werden sollen, wenn die Zeichnung nicht mehr in das ScrollPane passt.
Das Zeichnen funktioniert, aber wenn ich außerhalb der sichtbaren Fläche zeichne, werden die Scrollbalken nicht sichtbar. Außerdem habe ich Probleme beim ändern der Hintergrundfarbe des ScrollPanes. Aber das ist im Moment weniger relevant.
Das habe ich bisher:

Code:
...
JScrollPane scrp = new JScrollPane()		{
			public void paintComponent(Graphics g)
			{
				super.paintComponent(g);
				
				g.drawLine(10, 10, 900, 50);

			}
		};
		
		scrp.setSize(200, 200);
//		scrp.setBackground(Color.ORANGE);
		this.getContentPane().add(scrp);
...

Vielen Dank im Vorraus. Gruß, Philipp
 

Wildcard

Top Contributor
So kann das auch nicht funktionieren, denn woher sollte die ScrollPane auch wissen wie groß das ist was du zeichnest?
Ganz davon abgesehen ist eine JScrollPane nicht dazu da sich SELBST zu scrollen :D .
Zeichne in eine JComponent und pack diese in die JScrollPane.
Das ist glaube ich eher was du suchst...
 

Phil84

Mitglied
Danke für deine Antwort. Werde es später gleich mal testen. Erstatte dir dann Bericht.
Gruß, Philipp
 

Phil84

Mitglied
Hmm, ich kriege das nicht hin.
Ich hatte versucht in ein JPanel zu zeichnen und das einzufügen. Als ich das gemacht hatte, sah es so aus als wenn das ScrollPane das JPanel überlagern würde. Außerdem waren immernoch keine ScrollBalken zu sehen.
Wenn ich ein JComponent stat eines JPanels nehme, sehe ich auch keine Zeichnung aber die Buttons werden sichtbar, wenn ich mit der Maus auf sie zeige.
Das ist alles sehr komisch :shock:

Hier ist mein Quellcode, vielleicht weißt du ja, was ich falls mache:

Code:
		JComponent pan = new JComponent() {
			public void paintComponent(Graphics g) {
				super.paintComponent(g);
				g.drawLine(10, 10, 350, 20);
			}
		};
		pan.setBounds(0, 30, 600, 570);
		pan.setVisible(true);
		pan.setLayout(null);

		for (int i = 0; i < 5; i++) {			//Buttons und Label werden hinzugefügt

			b[i] = new JButton("Button " + i);
			b[i].setBounds(100 * i, 20, 80, 20);
			pan.add(b[i]);
			b[i].addActionListener(this);

			l[i] = new JLabel("Label " + i);
			l[i].setBounds(100 * i, 50, 80, 20);
			l[i].setVisible(true);
			pan.add(l[i]);

			bool[i] = false;
		}
		
		JScrollPane scroll = new JScrollPane();
		scroll.setBounds(40,40,300,300);
		scroll.setVisible(true);
		
		scroll.add(pan);
		getContentPane().add(scroll);

Vielen Dank. Gruß, Philipp
 

Wildcard

Top Contributor
Du verwendest die JScrollPane falsch. Zitat aus der API:
Applications should not add children directly to the scrollpane.
Entweder du übergibst die zu scrollende Komponente direkt im Konstruktor:
Code:
new JScrollPane(panel);
oder zum nachträglichen setzen:
Code:
scrollPane.setViewportView(panel);
 
G

Guest

Gast
Super. Funktioniert.
Habe jetzt

Code:
JScrollPane scroll = new JScrollPane(pan);

verwendet.
Ich sehe jetzt alles, aber scrollen kann ich immer noch nicht
 

Wildcard

Top Contributor
Du kannst nur dann scrollen wenn die Komponente die in der ScrollPane liegt größer ist als die ScollPane selbst
 
G

Guest

Gast
Habe herausgefunden, dass es am

Code:
pan.setLayout(null)

liegt. Wenn ich einen Layoutmanager im Panel verwende, funktionieren die Balken, aber ich will die Buttons von Hand platzieren.
 

Wildcard

Top Contributor
Das funktioniert auch ohne Layout Manager.
Versuch mal ein panel.setSize() bzw. panel.setPreferedSize() nachdem du die Komponente der ScrollPane hinzugefügt hast.
 
G

Guest

Gast
Nein, leider nicht. Hatte ich schon versucht. Habe das Panel größer gemacht, als das ScrollPane. Trotzdem keine Scrollbalken. Er schneidet den Rest einfach ab
 

Phil84

Mitglied
Code:
		JPanel pan = new JPanel() {
			public void paintComponent(Graphics g) {
				super.paintComponent(g);
				//g.drawLine(10, 10, 350, 20);
			}
		};
		pan.setVisible(true);
		pan.setLayout(null);
		pan.setSize(800,600);

		for (int i = 0; i < 5; i++) {			//Buttons und Label werden hinzugefügt

			b[i] = new JButton("Button " + i);
			b[i].setBounds(100 * i, 20, 80, 20);
			pan.add(b[i]);
			b[i].addActionListener(this);

			l[i] = new JLabel("Label " + i);
			l[i].setBounds(100 * i, 50, 80, 20);
			l[i].setVisible(true);
			pan.add(l[i]);

			bool[i] = false;
		}
		
		JScrollPane scroll = new JScrollPane(pan);
		scroll.setBounds(0,30,300,570);
		scroll.setVisible(true);
		pan.setBackground(Color.yellow);
		
		//scroll.add(pan);
		getContentPane().add(scroll);

Ich setze die Größe des Panels hier schon auf 800 * 600 bevor ich es zum ScrollPane hinzufüge. Habe es auch schon nach dem Hinzufügen versucht, das machte auch keinen Unterschied.
 

Wildcard

Top Contributor
Das:
Code:
pan.setSize(800,600);
durch
Code:
pan.setPreferredSize(new Dimension(800,600));
ersetzen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Auf ein JScrollPane zeichnen. AWT, Swing, JavaFX & SWT 11
J Swing JScrollPane nimmt das JPanel zum Zeichnen nicht an AWT, Swing, JavaFX & SWT 5
R JPanel in JScrollPane - zeichnen der Mausposition AWT, Swing, JavaFX & SWT 3
R JPanel in JScrollPane neu zeichnen AWT, Swing, JavaFX & SWT 7
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
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
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
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
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
A Swing JScrollPane Problem AWT, Swing, JavaFX & SWT 6
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
D Swing JScrollPane in JScrollPane - Problem AWT, Swing, JavaFX & SWT 3
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
B JScrollPane Problem AWT, Swing, JavaFX & SWT 2
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
P Swing JScrollpane AWT, Swing, JavaFX & SWT 2
B JScrollPane scrollt nicht immer automatisch AWT, Swing, JavaFX & SWT 2
V Swing JScrollPane Viewport verschieben AWT, Swing, JavaFX & SWT 2
J JScrollPane Probleme AWT, Swing, JavaFX & SWT 3
S Swing JScrollPane verliert Scrollbars AWT, Swing, JavaFX & SWT 5
D Swing JTable in JScrollpane beliebig verbreitern AWT, Swing, JavaFX & SWT 5
A Swing Anzeige Text in JScrollpane AWT, Swing, JavaFX & SWT 8
J Swing Unteren Abstand für JTable in JScrollPane festlegen AWT, Swing, JavaFX & SWT 10
xehpuk Swing Line-wrapping von JTextPane (in JScrollPane) AWT, Swing, JavaFX & SWT 3
M JScrollPane Problem AWT, Swing, JavaFX & SWT 6
S Swing JScrollpane und ViewPort AWT, Swing, JavaFX & SWT 4
D JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 12
X JScrollPane funzt net... AWT, Swing, JavaFX & SWT 5
H jscrollpane AWT, Swing, JavaFX & SWT 12
RELAXccc Swing JTree + JScrollPane, refresh Problem AWT, Swing, JavaFX & SWT 17
A Problem mit JScrollPane in einer JScrollpane AWT, Swing, JavaFX & SWT 4
B JScrollPane Problem AWT, Swing, JavaFX & SWT 25
T Swing JScrollPane- und Tabelle-Header Problem AWT, Swing, JavaFX & SWT 25

Ähnliche Java Themen

Neue Themen


Oben