Salve,
vorrei sapere come si può far scendere automaticamente lo scroll nel momento in cui il testo immesso in un JPanel, superando le sue dimensioni, attiva appunto il JScrollPane che lo controlla!
Sfogliando le API di java ho letto qualcosa riguardo il JViewport e il ChangeListener ma non ci ho capito molto!
Di seguito posto un esempio che ho scritto e vorrei poter implementare qualcosa per poter avere l'effetto citato sopra!
codice:import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.text.*; public class GestioneScroll extends JFrame{ class Azione extends AbstractAction { public void actionPerformed(ActionEvent e) { JLabel l = new JLabel(text.getText()); inserisci(l); } } Container frame; JPanel livel0, messaggi; JScrollPane scroll, scTx; JTextArea text; //costruttore public GestioneScroll() { frame = getContentPane(); livel0 = new JPanel(); livel0.setLayout(new BoxLayout(livel0, BoxLayout.Y_AXIS)); livel0.setPreferredSize(new Dimension(500, 500)); messaggi = new JPanel(); messaggi.setLayout(new BoxLayout(messaggi, BoxLayout.Y_AXIS)); scroll = new JScrollPane(messaggi); scroll.setPreferredSize(new Dimension(450, 300)); livel0.add(scroll); text = new JTextArea(4, 15); text.setLineWrap(true); Keymap map = text.getKeymap(); map.addActionForKeyStroke(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), new Azione()); scTx = new JScrollPane(text); scTx.setPreferredSize(new Dimension(450, 100)); livel0.add(scTx); frame.add(livel0); setSize(500, 500); setTitle("Gestione Sroll"); setResizable(false); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } private void inserisci(JLabel ob) { messaggi.add(ob); text.setText(""); setContentPane(livel0); text.requestFocusInWindow(); } public static void main(String[] args) { GestioneScroll s = new GestioneScroll(); } }

Rispondi quotando

