Scrollbar

  • Themenstarter Themenstarter Desperados
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
D

Desperados

Gast
Hallo Forum.

Folgende Frage:

Wie kann ich meine Scrollbars mit meinen Fenster verknüpfen? Kann sie zwar anzeigen lassen, aber kann nicht scrollen.
Kenn mich nicht so gut aus, muss dsa aber für meine Hausarbeit machen.

Hoffentlich könnt ihr mir helfen!

Ciao
 
Habe den AdjustmentListener noch nie benutzt, kannte ihn nicht. Aber wie funktioniert das genau mit der JScrollPane??
 
Du musst dein Label, Textfeld, area was auch immer ins ScrollPane packen und das dann raufhauen (anstatt deiner andere JComponent) und nur wenn es auch scrollbar sein muss, kommen die scrollbars (entweder horizontal oder vertikal)

Geht sich alles aus, kommen sie defaultmäßig nicht, kann man aber einstellen!
 
Irgendwie klappt das nicht...

So sieht mein Code aus:

Meine Zeichenfläche ist Gebaeude geb. Das übergebe ich der JScrollPane.
Aber sie erscheint nicht, auch wenn ich ein Objekt habe, das nicht ganz sichtbar ist....

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GUI implements ActionListener
{

	private Gebaeude geb;	
	private CWand cw;
	private CDelete cd;
	private CMove cm;
	private CCopy cc;
	private CStuetze cs;
	private CDecke cde;	


	
	.....


	
	private JLabel label1;
	
	JScrollPane scrollpane;
	
	public GUI()
	{
		JFrame frame = new JFrame("CAD-System");
		frame.setSize(700,400);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		geb = new Gebaeude();
						
		Container standardContainer = frame.getContentPane();



		....
		


		JPanel panelRechts = new JPanel();
		JPanel panelLinks  = new JPanel();
		JPanel panelButtons = new JPanel();
		JPanel panel2 = new JPanel();
		JPanel panel3 = new JPanel();
		
		
		
		//scrollpane.setViewportView(geb);		
		//standardContainer.add(scrollpane, BorderLayout.CENTER);		
		//scrollpane.add(panelLinks);
		
		standardContainer.add(panelLinks, BorderLayout.CENTER);
		standardContainer.add(panelRechts, BorderLayout.EAST);
		
		BorderLayout border=new BorderLayout();
		BorderLayout border2=new BorderLayout();
		BorderLayout border3=new BorderLayout();
		
		scrollpane=new JScrollPane(geb);
		
		panelLinks.setLayout(border);
		//panelLinks.add(geb, BorderLayout.CENTER);
		panelLinks.add(scrollpane, BorderLayout.CENTER);		
		

		GridLayout grid1 = new GridLayout (3,2);
		GridLayout grid2 = new GridLayout (1,1);
		
		panelRechts.setLayout(border2);		
		panelRechts.add(panelButtons, BorderLayout.NORTH);
		panelRechts.add(panel3, BorderLayout.CENTER);		
		
		panelButtons.setLayout(grid1);			
		panel3.setLayout(border3);		
		
		
		label1=new JLabel();
		panel3.add(label1, BorderLayout.NORTH);
		
		panelButtons.add(button1);
		panelButtons.add(button4);
		panelButtons.add(button2);
		panelButtons.add(button5);
		panelButtons.add(button3);
		panelButtons.add(button6);

		frame.setVisible(true);
	}


	
	....
				


	}
	
	
	public static void main(String [] args)
	{
		GUI g=new GUI();
	}
	
	
}
 
Und wie soll ich das testen mit den ....???


Ist es so schwer den ganzen Code zu posten oder glaubt ihr alle der wird euch gestohlen??
 
Wenn ich den ganzen Text posten wollte, dann hättest du ziemlich viel zu suchen. Ich mach den ganzen Ordner mal als Anhang.

Das "GUI" ist zum ausgeben und "Gebaeude" ist meine Zeichenfläche...

Jetzt musst du mir nur noch sagen, wie ich das hier uploade...

Werde rotzdem mal die ganze GUI und die "Gebaeude" posten.

GUI:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GUI implements ActionListener
{

	private Gebaeude geb;	
	private CWand cw;
	private CDelete cd;
	private CMove cm;
	private CCopy cc;
	private CStuetze cs;
	private CDecke cde;	
	
	private JToggleButton button1;	
	private JToggleButton button2;
	private JToggleButton button3;
	private JToggleButton button4;	
	private JToggleButton button5;
	private JToggleButton button6;
	
	private JLabel label1;
	
	JScrollPane scrollpane;
	
	public GUI()
	{
		JFrame frame = new JFrame("CAD-System");
		frame.setSize(700,400);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		geb = new Gebaeude();
						
		Container standardContainer = frame.getContentPane();
				
		button1 = new JToggleButton("Wand");
		button2 = new JToggleButton("Stütze");	
		button3 = new JToggleButton("Decke");
		button4 = new JToggleButton("Bewegen");
		button5 = new JToggleButton("Löschen");
		button6 = new JToggleButton("Kopieren");
				
		button1.setPreferredSize(new Dimension(150,50));
		button2.setPreferredSize(new Dimension(150,50));
		button3.setPreferredSize(new Dimension(150,50));
		button4.setPreferredSize(new Dimension(150,50));
		button5.setPreferredSize(new Dimension(150,50));
		button6.setPreferredSize(new Dimension(150,50));
				
		button1.addActionListener(this);
		button2.addActionListener(this);
		button3.addActionListener(this);
		button4.addActionListener(this);
		button5.addActionListener(this);
		button6.addActionListener(this);
		
		ButtonGroup bg1 = new ButtonGroup();
		bg1.add(button1);
		bg1.add(button2);
		bg1.add(button3);
		bg1.add(button4);
		bg1.add(button5);
		bg1.add(button6);
		
		JPanel panelRechts = new JPanel();
		JPanel panelLinks  = new JPanel();
		JPanel panelButtons = new JPanel();
		JPanel panel2 = new JPanel();
		JPanel panel3 = new JPanel();
		
		
		
		//scrollpane.setViewportView(geb);		
		//standardContainer.add(scrollpane, BorderLayout.CENTER);		
		//scrollpane.add(panelLinks);
		
		standardContainer.add(panelLinks, BorderLayout.CENTER);
		standardContainer.add(panelRechts, BorderLayout.EAST);
		
		BorderLayout border=new BorderLayout();
		BorderLayout border2=new BorderLayout();
		BorderLayout border3=new BorderLayout();
		
		scrollpane=new JScrollPane(geb);
		
		panelLinks.setLayout(border);
		//panelLinks.add(geb, BorderLayout.CENTER);
		panelLinks.add(scrollpane, BorderLayout.CENTER);		
		

		GridLayout grid1 = new GridLayout (3,2);
		GridLayout grid2 = new GridLayout (1,1);
		
		panelRechts.setLayout(border2);		
		panelRechts.add(panelButtons, BorderLayout.NORTH);
		panelRechts.add(panel3, BorderLayout.CENTER);		
		
		panelButtons.setLayout(grid1);			
		panel3.setLayout(border3);		
		
		
		label1=new JLabel();
		panel3.add(label1, BorderLayout.NORTH);
		
		panelButtons.add(button1);
		panelButtons.add(button4);
		panelButtons.add(button2);
		panelButtons.add(button5);
		panelButtons.add(button3);
		panelButtons.add(button6);

		frame.setVisible(true);
	}
	
	public void actionPerformed(ActionEvent e) 
	{	
		if (cw != null)
			cw.removeController();
			
		if (cm != null)
			cm.removeController();			
			
		if (cd != null)
			cd.removeController();		
			
		if (cc != null)
			cc.removeController();	
			
		if (cs != null)
			cs.removeController();
		if (cde != null)
			cde.removeController();		
		
		// Buttons einstellen
		
		if (e.getSource().equals(button1)) 
		{
			cw = new CWand(geb);
			label1.setText( "<html>Anweisungen: 

Zum Zeichnen der Wand:
 Einmal klicken für Startpunkt,
erneut klicken für Endpunkt.   </html>" );			
		}
		
		if (e.getSource().equals(button2)) 
		{
			cs = new CStuetze(geb);	
			label1.setText( "<html>Anweisungen: 

Zum Zeichnen der Stütze:
 Zur Festlegung des Mittelpunkts einmal klicken.
Erneut klicken für Endpunkt.   </html>" );						
		}
		
		if (e.getSource().equals(button3)) 
		{
			cde = new CDecke(geb);
			label1.setText( "<html>Anweisungen: 

Zum Zeichnen der Decke:
 Beim ersten Klick wird der Startpunkt der ersten 
 Polylinie gespeichert. Beim erneuten Klicken wird
die erste Polylinie gezeichnet und gleichzeitig der 
Startpunkt der zweiten Polylinie gespeichert.
Eine Decke muss mindestens aus drei Linien
 bestehen. 
 Zum Schließen des Polygons rechte Maustaste 
  betätigen. </html>" );										
		}
		
		if (e.getSource().equals(button4)) 
		{
			cm = new CMove(geb);
			label1.setText( "<html>Anweisungen: 

Zum Bewegen des Objekts:
 Gewünschtes Objekt anklicken und Taste gedrückt  
halten. Objekt zum gewünchten Ort ziehen und 
dort Taste loslassen.
 Bei sich überlappenden Objekten wird stets das 
oberste Objekt ausgewählt und bewegt.
 </html>" );										
		}
		
		if (e.getSource().equals(button5)) 
		{
			cd = new CDelete(geb);	
			label1.setText( "<html>Anweisungen: 

Zum Löschen des Objekts:
 Gewünschtes Objekt anklicken und es wird 
gelöscht. Bei sich überlappenden Objekten wird  
stets das oberste Objekt ausgewählt und gelöscht.
 </html>" );													
		}
		
		if (e.getSource().equals(button6)) 
		{
			cc = new CCopy(geb);
			label1.setText( "<html>Anweisungen: 

Zum Kopieren des Objekts:
 Wird ein Bauteil in gleicher Form mehrfach benötigt,
 so kann es kopiert werden. 
Zum Kopieren das gewünschte Bauteil einmal 
oder wenn gewünscht merhmals anklicken.
Das kopierte Bauteil / die kopierten Bauteile
erscheinen Links Oben im Koordinatenursprung.
Bei sich überlappenden Objekten wird stets das 
oberste Objekt ausgewählt und kopiert.
  </html>" );														
		}			
				
	}
	
	
	public static void main(String [] args)
	{
		GUI g=new GUI();
	}
	
	
}






Gebaeude:  


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

//Das ist meine zeichenfläche


public class Gebaeude extends JComponent implements MouseMotionListener
{
	public Vector wand;
	public Vector stuetze;
	public Decke decke;
	
	public boolean [][] feld;
	
	public Gebaeude()
	{
		super();
		
		feld=new boolean[100][100];
		
		this.addMouseMotionListener(this);
		
		wand = new Vector ();
		stuetze = new Vector ();
	}
	
	public void setDecke(Decke d)
	{
		decke=d;
	}
	
	public void paintComponent(Graphics g)
	{
		g.setColor(Color.WHITE);
		g.fillRect(0, 0, getWidth(), getHeight());
		
		double x=8;		
		double y=8;		
		g.setColor(Color.BLUE);
		
		for(int i=0;i<getWidth()/x;i++)
		{
			for(int j=0;j<getHeight()/y;j++)
			{					
				g.fillRect((int)(i*x), (int)(j*y), 1, 1);			
			}			
		}
			
		for (int i=0;i<wand.size();i++)
		{		
			Wand wd = (Wand) wand.get(i);
			VWand vw = new VWand(wd);
			vw.view(g);
		}	
		
		for (int i = 0; i < stuetze.size(); i++) 
		{			
			Stuetze s = (Stuetze) stuetze.get(i);
			VStuetze vs = new VStuetze(s);
			vs.view(g);					
		}
		
		if (decke != null)
		{
			VDecke vd = new VDecke(decke);
			vd.view(g);		
		}
		
		/*
		if (decke.getX() >= stuetze.getX() && decke.getY() >= stuetze.getY())
		{
			VDecke vd = new VDecke(decke);
			g.setColor(Color.RED);
			vd.view(g);		
		}
		*/
		
		for(int i=1;i<getWidth()/x;i++)
		{
						
				g.setColor(Color.BLACK);
				
				g.drawLine(3,3,getWidth()-3,3);                          //oben
				g.drawLine(3,getHeight()-3,3,3);                         //links
				g.drawLine(getWidth()-3,3,getWidth()-3,getHeight()-3);   //rechts
				g.drawLine(3,getHeight()-3,getWidth()-3,getHeight()-3);  //unten
				
				g.drawLine(80*i,3,80*i,16); 							//oben
				g.drawLine(3,80*i,16,80*i);								//links
				g.drawLine(80*i,getHeight()-3,80*i,getHeight()-16);		//unten
				g.drawLine(getWidth()-3,80*i,getWidth()-16,80*i);		//rechts
				
				/*
				g.drawLine(96,10,96,21);
				g.drawLine(10,96,22,96);
				
				for (j=1,j<getWidth()/;j++)
				{
				
					g.drawLine(80*i,10,80*i,21);
					g.drawLine(10,80*i,22,80*i);
				}
				*/
			g.drawString("[ m ]",7,18);
			
			//String a;
			//a.toString(i);
			
			g.drawString(""+i,80*i,25);	//oben
			g.drawString(""+i,8,80*i);   //links
			g.drawString(""+i,80*i,getHeight()-15); //unten	
			g.drawString(""+i,getWidth()-13,80*i); //rechts
			
			
		}
	}	
	
	
	public void mouseDragged(MouseEvent e) 
	{	
		
	}
	
	public void mouseMoved(MouseEvent e) 
	{
		for (int i = 0; i < wand.size(); i++) 
		{
			Wand wd = (Wand) wand.get(i);
			if (wd.istPunktAufWand(e.getPoint())) 
			{
				this.setCursor(new Cursor(Cursor.HAND_CURSOR));
				
				return;
			} 
			else 
			{
				this.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
			}
		}
		
		for (int i = 0; i < stuetze.size(); i++) 
		{
			Stuetze s= (Stuetze) stuetze.get(i);
			if (s.istPunktAufStuetze(e.getPoint())) 
			{
				this.setCursor(new Cursor(Cursor.HAND_CURSOR));
				return;
			} 
			else 
			{
				this.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
			}
		}
		
		/*    // klappt noch nicht
		for (int i = 0; i < decke.size(); i++) 
		{
			Decke d= (Decke) decke.get(i);
			if (s.istPunktAufDecke(e.getPoint())) 
			{
				this.setCursor(new Cursor(Cursor.HAND_CURSOR));
				return;
			} 
			else 
			{
				this.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
			}
		}
		
		*/			
	}
}

Edit Illuvatar: Codetags repariert.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben