Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093

    [java] JScrollPane, scorrere verso il basso

    salve, ho questo problema, ho un componente dentro la jscrollpane e quando aggiorno questo componente le sue dimensioni cambiano e la barra si aggiorna, ma ritorna all'inizio, io voglio invece che anche se il componente si aggiorna la barra deve essere sempre verso il basso.... è una chat, sarebbe increscioso ogni volta che compare un messaggio scendere per anadare a leggerlo

    [edit] il componente era jscrollpane :adhone:

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Non so se c'è un modo perchè questo avvenga automaticamente, se puoi intervenire sul metodo che aggiunge il testo nel componente (presumo sia una JTextArea o un altro JTextComponent), puoi aggiungere alla fine di tale metodo il codice per sistemare la barra in basso. Se scroll è il JScrollPane in cui è inserito il componente di testo puoi aggiungere queste righe dopo il codice che inserisce il testo:

    JScrollBar bar = scroll.getVerticalScrollBar();
    bar.setValue(bar.getMaximum());

    in questo modo ricavi la barra di scorrimento del JScrollPane e imposti il suo valore al massimo, che corrisponde a trascinare la barra completamente verso il basso.

    Ciao.

  3. #3
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    Originariamente inviato da anx721
    Non so se c'è un modo perchè questo avvenga automaticamente, se puoi intervenire sul metodo che aggiunge il testo nel componente (presumo sia una JTextArea o un altro JTextComponent), puoi aggiungere alla fine di tale metodo il codice per sistemare la barra in basso. Se scroll è il JScrollPane in cui è inserito il componente di testo puoi aggiungere queste righe dopo il codice che inserisce il testo:

    JScrollBar bar = scroll.getVerticalScrollBar();
    bar.setValue(bar.getMaximum());

    in questo modo ricavi la barra di scorrimento del JScrollPane e imposti il suo valore al massimo, che corrisponde a trascinare la barra completamente verso il basso.

    Ciao.
    porka trota..... questa è la soluzione che avevo trovato io, era quella che mi hanno dato sul forum della sun ed è anche la tua, ma non mi funziona bene! cioè non sempre scende verso il basso... certe volte si ferma a metà strada, altre volte ritorna in cima

  4. #4
    Originariamente inviato da kuarl
    porka trota..... questa è la soluzione che avevo trovato io, era quella che mi hanno dato sul forum della sun ed è anche la tua, ma non mi funziona bene! cioè non sempre scende verso il basso... certe volte si ferma a metà strada, altre volte ritorna in cima
    TextArea ta_txt = new TextArea( "", 10, 50, TextArea.SCROLLBARS_VERTICAL_ONLY );

    :master:


    P.S. awt base
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    Originariamente inviato da andr3a
    TextArea ta_txt = new TextArea( "", 10, 50, TextArea.SCROLLBARS_VERTICAL_ONLY );
    scusa kuarl, m,'ero dimenticato che alla fine lo scroll glielo dava append, non c'e' append per SWING ???

    ta_txt.append( tuaStringa + "\n" );


    ... almeno mi sembra sia cosi' ... sempre awt pero'
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    ecco l'esempio di cui ti parlavo, il testo e' sempre in fondo ... ( anche se mi sa che non ti sto affatto aiutando... )


    codice:
    import java.awt.*;
    import java.awt.event.*;
    import java.net.*;
    import java.io.*;
    
    public class Client {
    
    	private TextArea ta_txt;
    	private TextField tf_txt;
    	private Button send_btn, quit_btn;
    	private Frame mainFrame;
    	
    	private Socket myConnection = null;
    	private BufferedReader bufferReader = null;
    	private PrintStream mySender = null;
    	private Thread t = null;
    	
    	public Client() {
    	
    		ta_txt = new TextArea("", 10, 50, TextArea.SCROLLBARS_VERTICAL_ONLY);
    		tf_txt = new TextField(50);
    		
    		send_btn = new Button("Send");
    		
    		quit_btn = new Button("Quit");
    	}
    	
    	public void launchFrame() {
    	
    		send_btn.addActionListener(new MyButtonListener());
    		quit_btn.addActionListener(new MyButtonListener());
    		tf_txt.addKeyListener(new MyKeyListener());
    		
    		mainFrame = new Frame("ChatClient V0.1");
    		mainFrame.add(ta_txt, BorderLayout.CENTER);
    		mainFrame.add(tf_txt, BorderLayout.SOUTH);
    		mainFrame.addWindowListener(new MyWindowListener());
    		
    		Panel north_pan = new Panel(new BorderLayout());
    		north_pan.add(send_btn, BorderLayout.NORTH);
    		north_pan.add(quit_btn, BorderLayout.SOUTH);
    		
    		Panel buttons_pan = new Panel(new BorderLayout());
    		buttons_pan.add(north_pan, BorderLayout.NORTH);
    		
    		mainFrame.add(buttons_pan, BorderLayout.EAST);
    		mainFrame.pack();
    		mainFrame.setVisible(true);
    
    	}
    	
    	private void write() {
    	        ta_txt.append( "[a user]  " + tf_txt.getText() + "\n" );
    		tf_txt.setText("");
    		tf_txt.requestFocus();
    	}
    
    
    	private void closeAppication() {
    		mainFrame.dispose();
    	}
    	
    	class MyButtonListener implements ActionListener {
    		public void actionPerformed(ActionEvent e) {
    			
    			if(e.getActionCommand().equals("Send")) {
    				write();
    			}
    			else if(e.getActionCommand().equals("Quit")) {
    				closeAppication();
    			}
    		}
    	}
    	
    	class MyWindowListener extends WindowAdapter {
    		
    		public void windowClosing(WindowEvent e) {
    			closeAppication();
    		}
    	}
    	
    	class MyKeyListener extends KeyAdapter {
    		
    		public void keyReleased(KeyEvent e) {
    			if(e.getKeyCode()==10) {
    				write();
    			}		
    		}
    	}
    
    	
    	public static void main(String[] args) {
    		Client testChat = new Client();
    		testChat.launchFrame();
    	}
    }
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    non uso una textArea :adhone:

    JEditorPane

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.