JScrollBar

S

Sebastian G

Hallo,

ich habe folgendes Problem:

zwei JPanel sollen in ein JFrame gepackt werden. Beide JPanels sollen ueber EINEN JScrollBar horizontal GLEICHZEITIG verschiebbar sein; allerdings soll nur ein JPanel vertikal ueber einen JScrollBar verschiebbar sein.


Bisher habe ich nur die JScrollPane benutzt. Diese hilft mir hier allerdings nicht.

Konret ist meine Frage (auf den unten stehenden Code bezogen):

Wie registriere ich die beide JScrollBar(scrollerHorizontal, scrollerVertical) an den JPanels (panelOne, panelTwo)?

Vielen Dank fuer Eure Hilfe im Voraus.

Code:
import info.clearthought.layout.TableLayout;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollBar;


public class Scroller {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		//Panel 1
		double[][] sizeOne = {{1200, 400},{50}};
		
		JPanel panelOne = new JPanel();
		panelOne.setLayout(new TableLayout(sizeOne));
		panelOne.add(new JLabel("TESTOne"), "1,0");
		
		//Panel 2
		double[][] sizeTwo = {{1200, 400},{500,500}};
		
		JPanel panelTwo = new JPanel();
		panelTwo.setLayout(new TableLayout(sizeTwo));
		panelTwo.add(new JLabel("TestTwo"), "1,1");
		
		//Scrollbars
		JScrollBar horizontalScroller = new JScrollBar();
		horizontalScroller.setOrientation(JScrollBar.HORIZONTAL);
		JScrollBar verticalScroller = new JScrollBar();
		verticalScroller.setOrientation(JScrollBar.VERTICAL);
		
		
		//TopPanel
		JPanel topPanel = new JPanel();
		topPanel.setLayout(new BorderLayout());
		
		topPanel.add(panelOne, BorderLayout.NORTH);
		topPanel.add(panelTwo, BorderLayout.CENTER);
		topPanel.add(horizontalScroller, BorderLayout.SOUTH);
		topPanel.add(verticalScroller, BorderLayout.WEST);
		
		//Frame
		JFrame frame = new JFrame();
		frame.add(topPanel);
		frame.setSize(500, 500);
		frame.show();
	}

}

PS: Ich bin auch fuer andere Vorschlaege offen das Problem anzugehen.
 
Entweder du benutzt die Methode setViewportView() der ScrollPane-Objekte oder du übergibst die Panels gleich an den Konstruktor.

Und in dein topPanel fügst du dann nur die ScrollPanes ein. Die zwei Panel sind ja bereits in den ScrollPanes drin, macht also kein Sinn die doppelt einzufügen.
 
Danke fuer die schnelle Antwort, aber ich glaube du hast mich falsch verstanden.

Ich moechte, dass der horizontale JScrollBar auf panelOne UND auf panelTwo wirkt. Aber der vertikale JScrollBar soll NUR auf panelTwo wirken. Ich weiss nicht wie das mit dem JScrollPane gehen kann / soll.


Hintergrund:

In panelOne liegt eine Art Zeitleiste. In panelTwo werden Informationen angezeigt. Aus beiden zusammen kann der User ersehen wann welche Information auftrat. Wenn nun aber panelTwo so gross wird, dass es nicht mehr auf den Bildschirm passt, braucht man JScrollBars. Es waere aber bloed, wenn panelOne und panelTwo beide in ein JScrollPane gepackt wuerden, denn dann wuerde man die Zeitleiste (aka panelOne) nicht mehr sehen wenn man nach unten gescrollt hat. Daher mein Problem (siehe oben)
 
Zurück