强制JScrollPane中的JEditorPane缩小+重新换行

时间:2012-12-20 08:49:44

标签: java swing resize jscrollpane jeditorpane

问题JScrollPane扩展其子JEditorPane就好了,但在再次调整大小时强制水平滚动条(而不是强制JEditorPane重新计算包装)。

代码的基本流程如下:

JFrame f = new JFrame();
JEditorPane jep = new JEditorPane();
JScrollPane jsp = new JScrollPane(jep);
f.add(jsp);

1 个答案:

答案 0 :(得分:1)

这是一个黑客,但我能找到的最好的方法(不使用丑陋的ScrollPaneManager)是在ComponentListener上实现JScrollPane,以便在调整子元素大小时调整其大小

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) {}
});