JSplitPane скользит только в одну сторону

Я не уверен, почему, но ползунок идет только влево и даже блокирует новую позицию. Он использует модифицированную версию учебника NestedJSplitPane с JTree и JEditorPane. Я предполагаю, что JEditorPane вызывает проблему...

public frameMenu(){
    JEditorPane htmlPane;
    JTree parkSelect;
    JTree triggerSelect;
    URL helpURL;

    DefaultMutableTreeNode left = new DefaultMutableTreeNode("Tree Left");
    DefaultMutableTreeNode triggerTree = new DefaultMutableTreeNode("Tree Down");
    //nNode.createNodes();

    int HORIZSPLIT = JSplitPane.HORIZONTAL_SPLIT;
    int VERTSPLIT = JSplitPane.VERTICAL_SPLIT;

    boolean continuousLayout = true;

    parkSelect = new JTree(left);
    parkSelect.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);

    htmlPane = new JEditorPane();
    htmlPane.setEditable(true);

    triggerSelect = new JTree(triggerTree);
    triggerSelect.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);

    JSplitPane splitPane1 = new JSplitPane(VERTSPLIT, continuousLayout, htmlPane, triggerSelect);
    splitPane1.setOneTouchExpandable(true);
    splitPane1.setDividerSize(2);
    splitPane1.setDividerLocation(0.5);

    JSplitPane splitPane2 = new JSplitPane(HORIZSPLIT, parkSelect, splitPane1);
    splitPane2.setOneTouchExpandable(true);
    splitPane2.setDividerLocation(0.4);
    splitPane2.setDividerSize(2);

    JFrame frame = new JFrame("Trigger Editor");
    frame.setSize(600, 400);
    frame.add(splitPane2);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
}

Это скорее отрывается, но проблема та же. Я не уверен, сколько кода я мог бы поместить в один пост.

Разделение вверх и вниз может быть проведено без проблем, но влево и вправо вызывает проблемы.

1 ответ

Решение

ползунок идет только влево и даже блокирует новую позицию

JSplitPane уважает минимальный размер компонента.

Я предполагаю, что JEditorPane вызывает проблему...

Правильно, минимальный размер JEditorPane, кажется, равен его предпочтительному размеру.

Вам нужно будет переопределить getMinimumSize() метод вас JEditorPane чтобы вернуть более разумное значение для ваших требований:

htmlPane = new JEditorPane()
{
    @Override
    public Dimension getMinimumSize()
    {
        Dimension d = super.getMinimumSize();
        d.width = 100;

        return d;
    }
};
Другие вопросы по тегам