2010-04-21 7 views
11

Ich habe Probleme, einen JTextArea zum Scrollen zu bekommen. Ich bin mir nicht sicher, wie du eine JScrollPane durcheinander bringen kannst, aber ich habe es anscheinend und ich kann es einfach nicht sehen. Es ist alles Teil eines größeren Projekts, aber der folgende Code ist, wie ich einen JTextArea erstelle und ihn zu einem JScrollPane hinzufüge. Wenn Sie über den Rand des Textbereichs hinaus eingeben, wird die Bildlaufleiste nicht angezeigt. Wenn Sie die vertikale Bildlaufleiste auf "Immer" einstellen, wird eine Bildlaufleiste angezeigt, die nichts bewirkt.Bildlaufleisten auf JTextArea in einem JScrollPane funktionieren nicht

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

public class TextAreaTest extends JFrame{ 

    public TextAreaTest() { 
    super("Text Area Scroller"); 

    Container c = getContentPane(); 

    JTextArea textarea = new JTextArea(); 
    textarea.setPreferredSize(new Dimension(300, 50)); 
    textarea.setLineWrap(true); 
    textarea.setText("xx\nxx\nxx\nxx\nxx\nxx\nxx\nxx\nxx\nxx\nxx\nxx\nxx\nxx\n"); 

    JScrollPane scroller = new JScrollPane(textarea); 

    c.add(scroller, BorderLayout.CENTER); 
    pack(); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

    public static void main(String args[]){ 
    TextAreaTest instance = new TextAreaTest(); 
    instance.setVisible(true); 
    } 
} 

Ich habe versucht, den Textbereich Text oder Zeilen und Spalten im Konstruktor, von denen keiner funktionierte. Es macht meinen Kopf. Irgendwelche Ideen?

Antwort

26

Legen Sie die bevorzugte Größe des Bildlaufbereichs und nicht den Textbereich fest.

+0

Thank you! Aus irgendeinem Grund dachte ich, ich hätte es bereits versucht und es versäumt, aber es hat Spaß gemacht. Prost. – Robert

+0

+1 - Entweder 'setPreferredSize' zum gesamten Textbereich entfernen oder wenn Sie die Größe auf diese Weise festlegen möchten, setzen Sie es auf den' scrollPane' –

+2

Ich benutze den Swing Layout Editor in NetBeans 7.3. Damit dies funktioniert, musste ich die PreferredSize-Eigenschaft für JTextArea auf null setzen. Als ich das tat, erschien die vertikale Bildlaufleiste auf magische Weise. –

1

Die anderen haben recht über die Größe. Als Nebenwirkung betrachten auf dem Event Dispatch Thread starten (EDT):

public static void main(String args[]) { 
    EventQueue.invokeLater(new Runnable() { 

     @Override 
     public void run() { 
      new TextAreaTest().setVisible(true); 
     } 
    }); 
} 
-1

Verwenden Sie diesen Code

import javax.swing.*; 
public class ScrollingTextArea 
{ 
JFrame f; 
JTextArea ta; 
JScrollPane scrolltxt; 

public ScrollingTextArea() 
{ 
    // TODO Auto-generated constructor stub 

    f=new JFrame(); 
    f.setLayout(null); 
    f.setVisible(true); 
    f.setSize(500,500); 
    ta=new JTextArea(); 
    ta.setBounds(5,5,100,200); 

    scrolltxt=new JScrollPane(ta); 
    scrolltxt.setBounds(3,3,400,400); 

    f.add(scrolltxt); 

} 

public static void main(String[] args) 
{ 
    new ScrollingTextArea(); 
} 

}

Verwandte Themen