Java Textarea ScrollPane

后端 未结 4 1828
旧巷少年郎
旧巷少年郎 2021-01-28 23:24

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

相关标签:
4条回答
  • 2021-01-28 23:37

    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));
    
    0 讨论(0)
  • 2021-01-28 23:44

    You added the TextArea to a parent twice (scrollPane and panel). Change your last line to

    panel_1.add(sbrText);
    
    0 讨论(0)
  • 2021-01-28 23:52

    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

    0 讨论(0)
  • 2021-01-28 23:53
    • 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.

    0 讨论(0)
提交回复
热议问题