[Java] JScrollPane anpassen bei Texteingabe.

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von JudasIscariot, 16. Februar 2011 .

  1. 16. Februar 2011
    JScrollPane anpassen bei Texteingabe.

    Hi @ all,

    Also um gleich zur Sache zu kommen.
    Ich hab nen Programm geschrieben auf dem ich in eine JTextArea einen Text eingebe, dann auf einen Button mit einem ActionListener drücke und er übersetzt mir das in Brain .
    Die JTextArea hat auch ein JScrollPane.

    Nun das Problem:
    Wenn ich einen längeren Text eingebe und auf Translate drücke, dann passt sich der ScrollBalken nicht an und ich kann nicht nach unten scrollen um den Text zu sehen.
    Frage ist wie kann ich die ScrollBar in meinem ActionListener so refreshen / anpassen, dass sie sich dynamisch mit eingegebenem Text anpasst.

    Thx 4 help.
    BW is ehrensache.

    MfG
    JudasIscariot
     
  2. 18. Februar 2011
    AW: JScrollPane anpassen bei Texteingabe.

    *push*
    Und hier nochmal der Code:

    Code:
    import javax.swing.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.*;
    
    public class brainsaver 
    {
    
     public static void main( String[] args )
     {
     
     final JFrame f = new JFrame( "Brainsaver" );
     JButton exit = new JButton( "Close" );
     
     final JTextArea ti = new JTextArea();
     final JTextArea to = new JTextArea();
     
     exit.setPreferredSize( new Dimension( 100, 25 ) );
     
     exit.addActionListener( new ActionListener()
     {
     public void actionPerformed( ActionEvent e )
     {
     System.exit( 0 );
     }
    
     });
     
     JButton translate = new JButton( "Translate" );
     translate.setPreferredSize( new Dimension( 100, 25 ));
     translate.addActionListener( new ActionListener()
     {
     public void actionPerformed( ActionEvent e )
     {
     String eingabe = ti.getText();
     brain text = new brain( eingabe );
     to.setText( text.translate() );
     f.repaint();
     }
     });
     
     ti.setLineWrap( true );
     to.setLineWrap( true );
     
     ti.setPreferredSize( new Dimension( 400, 250 ));
     to.setPreferredSize( new Dimension( 400, 250 ));
     
     JScrollPane pi = new JScrollPane();
     JScrollPane po = new JScrollPane();
     
     to.setEditable( false );
     ti.setEditable( true );
     
     po.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED );
     pi.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED );
     
     if ( to.getHeight() < 300 )
     {
     pi.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
     }
     
     pi.setViewportView( ti );
     po.setViewportView( to );
     
     pi.setPreferredSize( new Dimension( 400, 250));
     po.setPreferredSize( new Dimension( 400, 250));
     
     f.add( exit, BorderLayout.SOUTH );
     f.add( pi, BorderLayout.WEST );
     f.add( po, BorderLayout.EAST );
     f.add( translate , BorderLayout.NORTH );
     f.pack();
     f.setVisible( true );
     }
     
    }
    
    
     
  3. 18. Februar 2011
    AW: JScrollPane anpassen bei Texteingabe.

    Moin,

    es liegt an den Zeilen

    Code:
    ti.setPreferredSize( new Dimension( 400, 250 ));
    to.setPreferredSize( new Dimension( 400, 250 ));
    Wenn du diese entfernst, dann geht's.
    Du hast die Größe der TextAreas festgesetzt. Sie haben sich also nicht an die Menge des Textes angepasst.

    Hier nochmal was zu ScrollPanes
    http://download.oracle.com/javase/tutorial/uiswing/components/scrollpane.html
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.