我给jframe加了个jscrollpane,我的想法是每次启动程序时都能显示水平和垂直的scrollbar,但初始时scrollbar是灰色(用setenable实现)的且没有滚动条,当输入的内容超过原始的jtextarea的范围时就显示滚动条.(实例化jtextarea时没有设定行数和列数,只是把其加到jscrollpane中).就像记事本中的.    请问如何实现?(我想获得光标的位置然后与jtextarea的长,高做比较,但不能获得jtextarea的长高.而getRows是获得实例化时的行数,若实例化时没有给定则返回0)

解决方案 »

  1.   

    默认处理就是这个样子的,你可以尝试: jTextArea.setPreferredSize(width, height);width和height需要你自己计算来设置。
      

  2.   

    jTextArea.setPreferredSize(width, height); 是设定大小吧,我想实现的不是这个功能.
      

  3.   

    getPrefferredSize().width/height是获取组件的当前大小
      

  4.   

    jtextarea.getpreferedsize()并不是获得组件的大小,而是获得当前光标处的位置。
      

  5.   

    转自:
    http://java.sun.com/docs/books/tutorial/uiswing/components/scrollpane.html#scrollbars=====Setting the Scroll Bar Policy:Constructor:   JScrollPane(Component, int, int)
    第一个int设置竖直scrollbar的policy,第二个设置水平的。你需要的应该是:
    JScrollPane.VERTICAL_SCROLLBAR_ALWAYS

    JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS参数描述:Always display the scroll bar. The knob disappears if the viewport is large enough to show the whole client.
      

  6.   


    1.jTextArea.setPreferredSize(width, height); 
    +2. JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED
    配合
      

  7.   

            JTextArea jta=new JTextArea();
            JScrollPane js=new JScrollPane();
            js.setViewportView(jta);
            js.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
            js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);setEnable()这个方法好像没什么作用,(不知道是不是这样?)