本文介绍了强制JScrollPane中的JEditorPane缩小+重新包装的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在JScrollPane
扩展其子级JEditorPane
时出现问题,但在再次减小其大小时会强制使用水平滚动条(而不是强制JEditorPane
重新计算包装).
Having an issue with a JScrollPane
expanding its child JEditorPane
just fine but forcing horizontal scroll bars when resizing it down again (instead of forcing the JEditorPane
to recalculate wrapping).
基本代码流程如下:
JFrame f = new JFrame();
JEditorPane jep = new JEditorPane();
JScrollPane jsp = new JScrollPane(jep);
f.add(jsp);
推荐答案
这是一个hack,但是我能找到的最好方法(不使用丑陋的ScrollPaneManager
s)是在JScrollPane
上实现ComponentListener
每次调整子组件的大小时,都要重新调整大小.
It's a hack, but the best way I could find (without using ugly ScrollPaneManager
s) was to implement a ComponentListener
on the JScrollPane
to resize the child component whenever it was resized.
jsp.addComponentListener(new ComponentListener() {
@Override
public void componentShown(ComponentEvent e) {}
@Override
public void componentResized(ComponentEvent e) {
Dimension jspSize = ((JScrollPane)e.getComponent()).getViewport().getSize();
jep.setBounds(0, 0, jspSize.width, jspSize.height);
}
@Override
public void componentMoved(ComponentEvent e) {}
@Override
public void componentHidden(ComponentEvent e) {}
});
这篇关于强制JScrollPane中的JEditorPane缩小+重新包装的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!