ScrollPane scrollt nich

timestamp

Mitglied Käsekuchen
Hallo Forum,

meine ScrollPane erzeugt zwar eine horizontale Leiste, allerdings ohne Balken. Wenn ich auf Pfeile klicke passiert auch nichts.
Ich sehe nur den ersten Teil vom Graphen, kann aber leider nicht wie gewünscht scrollen:

Java:
public class GraphGui {
	JFrame window;
	JPanel graphDrawer;
	JScrollPane wrapper;
	ArrayList<Point> list;
	public GraphGui(){
		window = new JFrame("GraphenGUI");
		window.setBounds(50, 50, 700, 500);		
		window.setLayout(null);
		
		
		graphDrawer = new JPanel(){
			public void paintComponent(Graphics g){
				g.drawLine(0, 0, 1000, 500);
				
			}
		};							
		graphDrawer.setSize(200, 2000);
		graphDrawer.setLayout(null);
		
		wrapper = new JScrollPane(graphDrawer);		
		wrapper.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		wrapper.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
		wrapper.setBounds(50, 50, 200, 200);
		window.add(wrapper);
		window.setVisible(true);
		window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public static void main(String[] args){
		new GraphGui();
	}
}
 

RavenOnJ

Mitglied
du musst noch
Java:
 graphDrawer.setPreferredSize(...)
setzen. der Code ist (etwas verändert) dann so:
Java:
public class GraphGUI {

	JFrame window;
	JPanel graphDrawer;
	JScrollPane wrapper;
	ArrayList<Point> list;

	public GraphGUI() {
		window = new JFrame("GraphenGUI");
		window.setBounds(50, 50, 700, 500);
		window.setLayout(null);


		graphDrawer = new JPanel() {
			@Override
			public void paintComponent(Graphics g) {
				// sonst tauchen Artefakte beim Verschieben auf
				g.clearRect(0, 0, 1500, 2000); 
				g.drawLine(0, 0, 1000, 500);

			}
		};
		
		// ohne das geht es nicht
		graphDrawer.setPreferredSize(new Dimension(1500, 2000));
		graphDrawer.setSize(1500, 2000);
		graphDrawer.setLayout(null);

		wrapper = new JScrollPane(graphDrawer);
		wrapper.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		wrapper.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		wrapper.setBounds(50, 50, 200, 200);

		window.add(wrapper);

		window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		window.setVisible(true);
	}

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