现在当改变ViewportView中的控件内容时如果超过了JScrollPane的视图大小会显示滚动条,并且垂直向的滚动条会直接拉到最下面,如何设置使垂直向的滚动条保持在上次用户拉到的位置?
比如我setViewportView(JEditorPane content); ,当我content.setText("一个很多内容的HTML");时会出垂直向的滚动条,并且该滚动条会拉到最下方,但是之前用户可能将滚动条拉到了中间,如何使滚动条依然保持在原位?
java.swing.JScrollPane中改变内容时怎么能让垂直向的滚动条保持在上次用户拉到的位置?
答案:2 悬赏:60 手机版
解决时间 2021-11-20 08:28
- 提问者网友:放下
- 2021-11-19 09:43
最佳答案
- 五星知识达人网友:轻雾山林
- 2021-04-01 01:08
你需要用JScrollBar来进行控制,可参考:
http://blog.csdn.net/nonetracer/article/details/6048929;
刚针对JTextArea,用上述方法测试了一下,发现没有效果。跟踪源码,发现方法本身是有效的。但是,JScrollBar主动设置value方法,会被BasicScrollPaneUI的syncScrollPaneWithViewport()方法中,所调用的JScrollBar的setValues()方法冲掉。
因此,JScrollBar的setValue()方法理论上能解决你的问题,但使用时还需要一些取巧或者其他处理
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");
这样就行了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯