Scrollbar werkt niet als scherm kleiner wordt dan grid

Status
Niet open voor verdere reacties.

Vinvar

Nieuwe gebruiker
Lid geworden
21 jul 2008
Berichten
4
Ik heb de volgende code
Code:
import java.awt.*;
import javax.swing.*;

/**@name DApplet version 0.9 
 * @made by Vinvar la Lece
 */
public class TestForum extends JFrame {
	TestForum() {
		this.setSize(1024, 768);
		this.setTitle("DApplet");
		this.setBackground(Color.LIGHT_GRAY);
		this.getContentPane().add(new DApplet(true), BorderLayout.CENTER);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}

	public static void main(String[] args) { 
		new DKApplic().setVisible(true);
	}

	private static final long serialVersionUID = 1;
	
	/*
	 * Private class called in TestForum()
	 */
	private class DApplet extends JApplet {
		boolean isDeelVanApplicatie;
		
		JScrollPane mainScrollFrame;

		public DApplet() {
			this(false);
		}

		DApplet(boolean app) {
			this.isDeelVanApplicatie = app;
			if (app) {
				this.init();
			}
		}
		
		public void init() {
			this.setLayout(new BorderLayout());
			
			// Creating and adding playfield
			DPlayfield playfield = new DPlayfield();
			// The playfield can be larger then the screen.
			// Therefore, we need to add a  scrollable layer beneath the playfield on which we add the playfield
			mainScrollFrame = new JScrollPane(playfield);
			// Make sure that you can scroll within the playfield
			playfield.setViewport(mainScrollFrame.getViewport());
			// Add the scrollpane
			this.add(mainScrollFrame, BorderLayout.CENTER);

			
			// Extra's to be deleted when it works
			mainScrollFrame.setHorizontalScrollBarPolicy(mainScrollFrame.HORIZONTAL_SCROLLBAR_ALWAYS);
		}


		private static final long serialVersionUID = 1L;
	}
	
	/*
	 * Private class called in DApplet() -> init()
	 */	
	private class DPlayfield extends JComponent {
		JViewport viewport;
		
		int boxSize = 50, numberOfRows = 20, numberOfColumns = 10;
		int width = numberOfRows * boxSize - boxSize;
		int height = numberOfColumns * boxSize - boxSize;
		
		public DPlayfield() {
			JLabel label = new JLabel();
			label.setText("Welkom. Nog meer tekst om alles op te vullen en scrollpane te testen. Is dit genoeg?");
		
			this.add(label);
		}
		
		public void setViewport(JViewport vp) {
			this.viewport = vp;		
		}
		
		@Override
		public void paintComponent(Graphics g) {
			super.paintComponent(g);
			update(g);
		}
		
		public void update(Graphics g) {
			drawGrid(g);
		}

		private void drawGrid(Graphics g) {
			g.setColor(Color.BLACK);
			for (int i = 0; i < numberOfRows; i++) {
				g.drawLine(i * boxSize, 0, i * boxSize, height);
			}
			for (int i = 0; i < numberOfColumns; i++) {
				g.drawLine(0, i * boxSize, width, i * boxSize);
			}
		}
		
		private static final long serialVersionUID = 1L;
	}
}

De bedoeling is dat er scrollbars werken als het scherm kleiner wordt dan het grid. Helaas krijg ik dit niet werkend (en ben er al heel weekend mee bezig). Het is vast iets simpels dat ik vergeet, maar kan iemand me alsjeblieft even helpen?
 
Ziet er rommelig uit je moet eens kijken naar paint repaint ectra let op je moet die ook naar boven doorgeven (Jframe)je kan de grote ook berekenen maar dat zal je wel weten

Let op JFrame is niet om op een webpagina te tonen deze mag enkel japplet extenden en dan ga je best zonder package werken indien het simpel zal bijven indien het groter word zal je met een package werken maar dan wordt het iets moelijker om iets draaiende te krijgen indien je kennis basis zou zijn
 
Dank, ik zal het netter op gaan schrijven en size al aan JFrame meegeven.

Ik wil het zowel als applet als stand-alone kunnen draaien. Daarom dat ik alles in class DApplet laat gebeuren en in DApplic de applet aanroep. D.m.v de boolean 'isDeelVanApplicatie' weet systeem of het een Applet of stand-alone is (als ik het goed geprogrammeerd heb ;p).
 
Tja indien je het op twee plaatsen wil gebruiken zal het in een apparte file moeten zitten applet en de
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan