java如何调整JEditorPane中编辑区域的大小?
这是一个关于Java和Swing的问题
我将两个JEditorPane放入两个JScrollPane,然后将两个JScrollPane放入一个JSplitPane。问题是,当我拖动以调整JScrollPane的大小时,一个JEditorPane被扩展,但当我向后拖动时,视图缩小,但编辑区域没有缩小,水平滚动条出现
代码如下所示:
import javax.swing.*;
import java.awt.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.*;
public class Main {
private static final int DEFAULT_WIDTH = 800;
private static final int DEFAULT_HEIGHT = 600;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
JEditorPane editor = new JEditorPane();
JEditorPane preview = new JEditorPane();
System.out.println(DEFAULT_WIDTH / 2);
// editor.setSize(DEFAULT_WIDTH / 2, DEFAULT_HEIGHT);
editor.setMinimumSize(new Dimension(0, 0));
// preview.setSize(DEFAULT_WIDTH / 2, DEFAULT_HEIGHT);
preview.setMinimumSize(new Dimension(0, 0));
final JScrollPane scrollEditor = new JScrollPane(editor);
final JScrollPane scrollPreview = new JScrollPane(preview);
final JSplitPane innerPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, scrollEditor, scrollPreview);
innerPane.setContinuousLayout(false);
frame.add(innerPane, BorderLayout.CENTER);
innerPane.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
editor.setSize(innerPane.getLeftComponent().getBounds().width, editor.getHeight());
scrollEditor.setSize(innerPane.getLeftComponent().getBounds().width, editor.getHeight());
}
});
frame.setVisible(true);
}
});
}
}
我试着用绝地魔方。设置大小,但不起作用
我该怎么修
谢谢
# 1 楼答案
您需要覆盖
JEditorPane
的Scrollable
接口的默认实现。基本上,您需要告诉JScrollPane,JEditorPane的宽度应该始终适合滚动窗格的视口您可以使用以下代码来实现这一点:
正如我在评论中提到的,你不需要PropertyChangeListener