I have created a textarea, and i need a scrollbar applied to the textarea when necessary (when the text gets too long down and it cant be read anymore).
this is the code
Make sure that the preferredSize
and the viewportSize
are the same. The scrollpane will size itself with the preferred size of the textArea
, and this can cause the scrollbars to disappear if the preferred size of the text area is large enough to display itself.
Again, please read the JTextArea and JScrollPane tutorials.
textArea.setPreferredSize(new Dimension(456, 255));
textArea.setPreferedScrollableViewportSize(new Dimension(456, 255));
You added the TextArea to a parent twice (scrollPane and panel). Change your last line to
panel_1.add(sbrText);
see this
import javax.swing.*;
public class TestFrame extends JFrame
{
JTextAreaWithScroll textArea;
public TestFrame ()
{
super ("Test Frame");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (300, 300);
textArea = new JTextAreaWithScroll (JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
add (textArea.getScrollPane ());
}
public static void main (String[] args)
{
SwingUtilities.invokeLater (new Runnable()
{
public void run ()
{
TestFrame f = new TestFrame ();
f.setVisible (true);
}
});
}
}
class JTextAreaWithScroll extends JTextArea
{
private JScrollPane scrollPane;
public JTextAreaWithScroll (int vsbPolicy, int hsbPolicy)
{
scrollPane = new JScrollPane (this, vsbPolicy, hsbPolicy);
}
public JScrollPane getScrollPane ()
{
return scrollPane;
}
}
from http://forum.html.it/forum/showthread/t-1035892.html
You have to remove the code line that makes the JTextArea
have absolute size on the screen due to using setBounds()
. This makes it non-resizable, and JScrollPane
works only if its content is resizable.
// wrong
textArea.setBounds(10, 152, 456, 255);
Please read JTextArea and JScrollPane tutorial; please run examples from both tutorials.