Java Textarea ScrollPane - PullRequest
       20

Java Textarea ScrollPane

0 голосов
/ 08 марта 2012

Я создал текстовую область, и мне нужна полоса прокрутки, применяемая к текстовой области при необходимости (когда текст становится слишком длинным и его больше нельзя читать).

это код, который я написал, но по какой-то причине полоса прокрутки действительно не появляется?

    final JTextArea textArea = new JTextArea();
    textArea.setEditable(false);
    textArea.setBounds(10, 152, 456, 255);
    textArea.setBorder(border);
    textArea.setLineWrap(true);
    sbrText = new JScrollPane(textArea);
    sbrText.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    panel_1.add(textArea);

Ответы [ 4 ]

1 голос
/ 09 марта 2012

см.

 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;
    }
}

из http://forum.html.it/forum/showthread/t-1035892.html

1 голос
/ 09 марта 2012
  • Вы должны удалить строку кода, из-за которой JTextArea имеет абсолютный размер на экране из-за использования setBounds().Это делает его неизменяемым , а JScrollPane работает, только если его содержание изменяемого размера .

    // wrong
    textArea.setBounds(10, 152, 456, 255);
    
  • Пожалуйста, прочитайте JTextArea и JScrollPane учебник;пожалуйста, запустите примеры из обоих руководств.

0 голосов
/ 15 ноября 2016

Убедитесь, что preferredSize и viewportSize совпадают. Размер полосы прокрутки сам по себе будет соответствовать предпочтительному размеру textArea, и это может привести к исчезновению полос прокрутки, если предпочтительный размер текстовой области достаточно велик для отображения самого себя.

Опять же, прочитайте учебники JTextArea и JScrollPane .

textArea.setPreferredSize(new Dimension(456, 255));
textArea.setPreferedScrollableViewportSize(new Dimension(456, 255));
0 голосов
/ 09 марта 2012

Вы дважды добавили TextArea к родителю (scrollPane и панель). Измените свою последнюю строку на

panel_1.add(sbrText);
...