Это вопрос о Java и Swing.Как изменить размер области редактирования в JEditorPane?
Я положил две 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);
}
});
}
}
Я пытаюсь использовать JEditorPane.setSize, но он не работает.
Как это исправить?
Спасибо.
Вам не нужно использовать PropertyChangeListener. Размер компонентов должен автоматически меняться при перемещении разделителя. Отправьте надлежащий [SSCCE] (http://sscce.org/), который демонстрирует проблему, если вам нужна дополнительная помощь. – camickr
Спасибо за ваш ответ, и я думаю, что код достаточно ясен. Проблема заключается в редактируемой текстовой области JEditorPane, а не в компоненте JEditorPane. Он будет настраиваться с помощью разделителя, но если я продлю один редактор, например, перетащите разделитель вправо и уменьшите его, например, перетащите назад влево, компонент сжимается, но длина строки в текстовой области этого не делает. Таким образом, JEditorPane не отображает все символы в одной строке, я должен перетащить горизонтальную полосу прокрутки. Это ясно? – AuBee
Нет кода недостаточно, или я бы не попросил SSCCE. Поскольку вы не будете прилагать никаких усилий, чтобы опубликовать SSCCE, я думаю, вам действительно не нужна помощь. – camickr