永发信息网

java.swing.JScrollPane中改变内容时怎么能让垂直向的滚动条保持在上次用户拉到的位置?

答案:2  悬赏:60  手机版
解决时间 2021-11-20 08:28
  • 提问者网友:放下
  • 2021-11-19 09:43
现在当改变ViewportView中的控件内容时如果超过了JScrollPane的视图大小会显示滚动条,并且垂直向的滚动条会直接拉到最下面,如何设置使垂直向的滚动条保持在上次用户拉到的位置?
比如我setViewportView(JEditorPane content); ,当我content.setText("一个很多内容的HTML");时会出垂直向的滚动条,并且该滚动条会拉到最下方,但是之前用户可能将滚动条拉到了中间,如何使滚动条依然保持在原位?
最佳答案
  • 五星知识达人网友:轻雾山林
  • 2021-04-01 01:08
你需要用JScrollBar来进行控制,可参考:
http://blog.csdn.net/nonetracer/article/details/6048929;

刚针对JTextArea,用上述方法测试了一下,发现没有效果。跟踪源码,发现方法本身是有效的。但是,JScrollBar主动设置value方法,会被BasicScrollPaneUI的syncScrollPaneWithViewport()方法中,所调用的JScrollBar的setValues()方法冲掉。
因此,JScrollBar的setValue()方法理论上能解决你的问题,但使用时还需要一些取巧或者其他处理
全部回答
  • 1楼网友:患得患失的劫
  • 2020-05-24 23:44
1 换look&feel try { uimanager.setlookandfeel("com.sun.java.swing.plaf.nimbus.nimbuslookandfeel"); } catch (throwable e) { e.printstacktrace(); } 2 使用javafx,可以使用css自定义。 如果只改变颜色就如上所说了,要想改变样式,需要,自己写 一个类继承 metalscrollbarui或者其他scrollbarui的类比如mymetalscrollbarui 然后再你要调用jscrollpane之前,uimanager.put("scrollbarui", "mymetalscrollbarui"); 这样就行了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯