JScrollPane

Status
Nicht offen für weitere Antworten.
M

msald

Gast
hi all

Folgende Frage

Habe ein Gui.. starte ein Thread der mir die ganze zeit ein Text einliest.

Ich habe eine Klasse, die von JScrollPane erbt und ComponentListener implementiert..

Ich will wenn die darunterliegende Komponente die Grösse ändert,
scroll der Vertikale Scrollbalken bis ans Maximum.

wenn ich ComponentListener implementiere muss ich ja so tolle methoden auch implementieren

Java:
Code:
public void componentResized(ComponentEvent e) 
{ 
}


ich denke das ich in dieser irgenwas machen muss.
bräuchte mal nen ansatz, bzw. wie ich vorgehen müsste.

danke
 

outbreaker

Bekanntes Mitglied
Was für einen Ansatz brauchst du? ???:L

Diese Methode wird aufgerufen wenn du die Größe der Componente änderst!
Wenn du nichts machen willst wenn das passiert dann lässt du die Methode leer

ComponentListener
 
M

mu2

Gast
yo, nur das funktioniert ned.

wenn ich da z.b. nen system.out.println("TEST"); mache gibts das ned mal aus wenn ich es verändere
 

outbreaker

Bekanntes Mitglied
vielleicht solltest du den ComponentListener nicht an die JScrollPane hängen sondern an die Innen liegende Komponente
 

André Uhres

Top Contributor
Code:
jScrollPane1 = new JScrollPane();
jTextArea1 = new JTextArea();
jScrollPane1.setViewportView(jTextArea1);
...
                bar = jScrollPane1.getVerticalScrollBar();
                for (...) {
                    jTextArea1.append(...);//"append" gehört zu den wenigen Swingmethoden, die "thread safe" sind
                    scrollToBottom();
                }
                //der nachfolgende "sleep" soll den Überholeffekt ausgleichen, 
                //damit die JScrollBar zum Schluss auch immer ganz unten ankommt:
                try {Thread.sleep(50);} catch (InterruptedException ex) {}
                scrollToBottom();
   ...
            private void scrollToBottom() {
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        bar.setValue(Integer.MAX_VALUE);
                    }
                });
            }
 
M

mu2

Gast
ich Zeige euch lieber mal schnell meine 3 klassen.

Code:
public class IntelligentScrollPaneMu extends JScrollPane implements ComponentListener 
{
	
	public IntelligentScrollPaneMu(JComponent component) 
	{
		super(component);
	}

	public void componentHidden(ComponentEvent arg0) 
	{	
	}

	public void componentMoved(ComponentEvent arg0) 
	{
	}

	public void componentResized(ComponentEvent event) 
	{
	}

	public void componentShown(ComponentEvent arg0) 
	{
	}

	public int getCurrentPage() 
	{
		return 0;
	}

	public int countPages() 
	{
		return 0;
	}
}

Main Methode
Code:
public class ScrollbarApplication 
{
	private static Document textModel;

	public static void main(String[] args) 
	{
		initModel();
		
		SwingUtilities.invokeLater(new Runnable()
		{
			public void run() 
			{
				createAndShowGUI();
			}
		});
	}

	/**
	 * Erstellt die wichtigen Modelklassen
	 *
	 */
	private static void initModel() 
	{
		textModel    = new DefaultStyledDocument();
	}

	/**
	 * Erstellt die UI Elemente
	 *
	 */
	private static void createAndShowGUI() 
	{
		// Hauptfenster
		JFrame frame = new JFrame("ScrollbarApp");
		
		// Textfeld - Model
		JTextArea textField = new JTextArea(textModel);
		textField.setEditable(false);
		final IntelligentScrollPaneMu iScroll = new IntelligentScrollPaneMu(textField);
		
		// Container für Buttons.
		JToolBar tBar = new JToolBar();
		tBar.add(new AbstractAction("Start")
		{
			Timer   timer;
			
			public void actionPerformed(ActionEvent arg0) 
			{
				if(timer == null)
				{
					TimerTask fillTask = new FillTask(textModel);
					timer = new Timer();
					
					timer.schedule(fillTask, 0, 100);

					return;
				}
				
				timer.cancel();
				timer.purge();
				
				timer = null;
			}
		}
		);
		tBar.add(new AbstractAction("aktuelle Seite")
		{
			public void actionPerformed(ActionEvent arg0) 
			{
				System.out.println("Aktuelle Seite: "+iScroll.getCurrentPage());
			}
		});
		tBar.add(new AbstractAction("Seiten Zählen")
		{
			public void actionPerformed(ActionEvent arg0) 
			{
				System.out.println("Seiten:         "+iScroll.countPages());
			}
		});
		
		// Elemente dem Container hinzufügen
		Container c = frame.getContentPane();
		c.setLayout(new BorderLayout());
		c.add(tBar, BorderLayout.NORTH);
		c.add(iScroll, BorderLayout.CENTER);
		
		// Festlegen was mit der Applikation passiert, wenn Fenster geschlossen wird.
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
        // Fenster anzeigen
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
	}
}

FillTask
Code:
public class FillTask extends TimerTask
{
	private Document target;

	public FillTask(Document target) 
	{
		this.target = target;
	}
	
	@Override
	public void run() 
	{
		
		try {
			target.insertString(target.getLength(), "+H00000#t023014#R2F7FFF#Y208044#G100000#A2FFFBB#b000000#B000000#W00#s0000#M0000#T013#P01\r\n", null);
			
		} catch (BadLocationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Bei einem MouseListener geht das viel einfacher.. da kann ich mit sysouts herumspielen.. doch hier geht sowas nicht.

mein problem konnte ich noch nicht lösen
 

mu

Aktives Mitglied
MainMethode

Code:
public class ScrollbarApplication 
{
	private static Document textModel;

	public static void main(String[] args) 
	{
		initModel();
		
		SwingUtilities.invokeLater(new Runnable()
		{
			public void run() 
			{
				createAndShowGUI();
			}
		});
	}

	/**
	 * Erstellt die wichtigen Modelklassen
	 *
	 */
	private static void initModel() 
	{
		textModel    = new DefaultStyledDocument();
	}

	/**
	 * Erstellt die UI Elemente
	 *
	 */
	private static void createAndShowGUI() 
	{
		// Hauptfenster
		JFrame frame = new JFrame("ScrollbarApp");
		
		// Textfeld - Model
		JTextArea textField = new JTextArea(textModel);
		textField.setEditable(false);
		final IntelligentScrollPaneMu iScroll = new IntelligentScrollPaneMu(textField);
		
		// Container für Buttons.
		JToolBar tBar = new JToolBar();
		tBar.add(new AbstractAction("Start")
		{
			Timer   timer;
			
			public void actionPerformed(ActionEvent arg0) 
			{
				if(timer == null)
				{
					TimerTask fillTask = new FillTask(textModel);
					timer = new Timer();
					
					timer.schedule(fillTask, 0, 100);

					return;
				}
				
				timer.cancel();
				timer.purge();
				
				timer = null;
			}
		}
		);
		tBar.add(new AbstractAction("aktuelle Seite")
		{
			public void actionPerformed(ActionEvent arg0) 
			{
				System.out.println("Aktuelle Seite: "+iScroll.getCurrentPage());
			}
		});
		tBar.add(new AbstractAction("Seiten Zählen")
		{
			public void actionPerformed(ActionEvent arg0) 
			{
				System.out.println("Seiten:         "+iScroll.countPages());
			}
		});
		
		// Elemente dem Container hinzufügen
		Container c = frame.getContentPane();
		c.setLayout(new BorderLayout());
		c.add(tBar, BorderLayout.NORTH);
		c.add(iScroll, BorderLayout.CENTER);
		
		// Festlegen was mit der Applikation passiert, wenn Fenster geschlossen wird.
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
        // Fenster anzeigen
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
	}
}

und der FillTask
public class FillTask extends TimerTask
{
	private Document target;

	public FillTask(Document target) 
	{
		this.target = target;
	}
	
	@Override
	public void run() 
	{
		
		try {
			target.insertString(target.getLength(), "+H00000#t023014#R2F7FFF#Y208044#G100000#A2FFFBB#b000000#B000000#W00#s0000#M0000#T013#P01\r\n", null);
			
		} catch (BadLocationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Mein problem konnte ich noch nicht lösen
 

André Uhres

Top Contributor
mu hat gesagt.:
Mein problem konnte ich noch nicht lösen
Es wurde aber oben schon im Prinzip gelöst:
Code:
public class ScrollbarApplication {
...
            public void actionPerformed(ActionEvent arg0) {
                if (timer == null) {
                    TimerTask fillTask = new FillTask(textModel, iScroll);//<---------------
...
}

class FillTask extends TimerTask {

    private Document target;
    private JScrollBar bar;

    public FillTask(Document target, JScrollPane jScrollPane1) {
        this.target = target;
        bar = jScrollPane1.getVerticalScrollBar();
    }

    @Override
    public void run() {

        try {
            target.insertString(target.getLength(), "+H00000#t023014#R2F7FFF#Y208044#G100000#A2FFFBB#b000000#B000000#W00#s0000#M0000#T013#P01\r\n", null);
            scrollToBottom();
        } catch (BadLocationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private void scrollToBottom() {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                bar.setValue(Integer.MAX_VALUE);
            }
        });
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen GlassPane über JScrollPane legen Java Basics - Anfänger-Themen 6
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
L JScrollPane wird nicht angezeigt Java Basics - Anfänger-Themen 10
G Frage zu JScrollPane Java Basics - Anfänger-Themen 12
M JScrollPane scrollt nicht Java Basics - Anfänger-Themen 2
D JScrollPane mit TextArea Java Basics - Anfänger-Themen 5
N JList + DefaultListModel + JScrollPane --> ensureIndexIsVisible funktioniert nicht immer Java Basics - Anfänger-Themen 1
T JScrollPane in den Code einbauen Java Basics - Anfänger-Themen 5
O JScrollPane zu gross für JTable Java Basics - Anfänger-Themen 2
A JScrollPane nicht sichtbar Java Basics - Anfänger-Themen 5
S JScrollPane wird nicht angezeigt Java Basics - Anfänger-Themen 6
N jScrollPane wird nicht angezeigt Java Basics - Anfänger-Themen 13
L Jscrollpane nach zoomen anpassen Java Basics - Anfänger-Themen 20
C JScrollPane + JTextArea scrollt nicht Java Basics - Anfänger-Themen 2
T JScrollPane nicht scrollbar (mit KSKB!) Java Basics - Anfänger-Themen 4
T JScrollPane: Slider programmgesteuert verschieben? Java Basics - Anfänger-Themen 4
Kenan89 JScrollPane, aber kein Scrollbalken Java Basics - Anfänger-Themen 4
T JScrollPane funktioniert nicht Java Basics - Anfänger-Themen 7
D jScrollPane Problem Java Basics - Anfänger-Themen 16
JStickman JTree, JScrollPane, Liste mit graphischer Suchleiste - Dateimanager Java Basics - Anfänger-Themen 10
A Button das JScrollPane aktualisiert Java Basics - Anfänger-Themen 11
S JScrollPane verhält sich nicht so wie gedacht Java Basics - Anfänger-Themen 2
T JScrollPane ganz runter Scrollen Java Basics - Anfänger-Themen 4
T JScrollPane resized nicht richtig... Java Basics - Anfänger-Themen 4
Z Label verschwindet in JScrollPane Java Basics - Anfänger-Themen 7
N JScrollPane repaint(); geht nicht Java Basics - Anfänger-Themen 4
R JScrollPane in JTextArea benutzen Java Basics - Anfänger-Themen 10
L JPanel vergrößern bis JScrollPane nicht mehr zu sehen Java Basics - Anfänger-Themen 7
O JScrollPane , JScrollBar Java Basics - Anfänger-Themen 3
Z JScrollPane zeigt Zeit als Datum Java Basics - Anfänger-Themen 5
E Breite des Schiebers in JscrollPane verändern Java Basics - Anfänger-Themen 2
T JScrollPane soll rechts gescrollt gezeichnet werden Java Basics - Anfänger-Themen 5
P JScrollPane Java Basics - Anfänger-Themen 18
J JScrollPane, Regler-Problem Java Basics - Anfänger-Themen 3
J JScrollPane swing Java Basics - Anfänger-Themen 8
H JTable in JScrollPane: Scrollbar wird nicht angezeigt. Java Basics - Anfänger-Themen 2
H2SO3- JScrollPane will nicht scrollen Java Basics - Anfänger-Themen 3
_deleted Mehrere Panels untereinander im JScrollPane Java Basics - Anfänger-Themen 4
J JScrollPane wird nicht angezeigt Java Basics - Anfänger-Themen 4
A JScrollPane aktualisiert nicht Java Basics - Anfänger-Themen 2
7 Java Swing: Wie JScrollPane zur JList hinzufügen? Java Basics - Anfänger-Themen 12
C jTabbedPane JScrollPane und jPanel Java Basics - Anfänger-Themen 3
S JScrollPane und JPanel Java Basics - Anfänger-Themen 2
J JScrollBar JScrollPane Java Basics - Anfänger-Themen 9
Q Anwendung eines JScrollPane Java Basics - Anfänger-Themen 2
M Probleme mit JScrollPane Java Basics - Anfänger-Themen 5
G JScrollPane Java Basics - Anfänger-Themen 5
S JScrollPane: Scrollbalken werden nicht angezeigt Java Basics - Anfänger-Themen 4
P Brauche Hilfe für JPanel im JScrollPane und Abstände Java Basics - Anfänger-Themen 2
M VisualEditor, Jlist und JScrollPane Java Basics - Anfänger-Themen 9
M JScrollPane soll inhalt zentrieren Java Basics - Anfänger-Themen 3
C Automatischer Umbruch bei JScrollPane? Java Basics - Anfänger-Themen 5
G JScrollPane + JTable + Autoscroll uvm. Java Basics - Anfänger-Themen 5
N JScrollPane mit JTextArea Java Basics - Anfänger-Themen 4
I Autoscrolling im JScrollPane Java Basics - Anfänger-Themen 3
H JScrollPane -> Problem bei ScrollBar Java Basics - Anfänger-Themen 3
lin JScrollPane & OutOfMemoryError Java Basics - Anfänger-Themen 6
G JScrollPane in der Größe bestimmen Java Basics - Anfänger-Themen 11
R JScrollpane problem Java Basics - Anfänger-Themen 21
P JScrollPane an JTextArea anhängen Java Basics - Anfänger-Themen 3
C JScrollPane ohne Rahmen? Java Basics - Anfänger-Themen 2
M JScrollPane Java Basics - Anfänger-Themen 4
G Probleme mit JScrollPane Java Basics - Anfänger-Themen 3
M JScrollPane: Autoscroll Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben