Reputation: 325
I'm having trouble getting a JTextArea to scroll. I'm not sure how you can mess up a JScrollPane but I seem to have and I just can't see it. It's all part of a larger project but the code below is how I'm creating a JTextArea and adding it to a JScrollPane. When you type beyond the edge of the text area the scrollbar doesn't appear. Setting the vertical scrollbar to always on gives a scrollbar that doesn't do anything.
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);
}
}
I've tried setting the text area text, or rows and columns, in the constructor, neither of which worked. It's doing my head in. Any ideas?
Upvotes: 11
Views: 15347
Reputation: 1252
Use this 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();
}
}
Upvotes: -1
Reputation: 205785
The others are right about the size. As an aside, consider starting on the Event Dispatch Thread (EDT):
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new TextAreaTest().setVisible(true);
}
});
}
Upvotes: 1
Reputation: 110046
Set the preferred size of the scroll pane rather than the text area.
Upvotes: 27