JSplitPane + MiGLayout: как включить пропорциональное автоматическое изменение размера - PullRequest
4 голосов
/ 31 января 2011

ответ на вопрос к моему другому ;

Как включить пропорциональное изменение размера? Я думал, что это будет работать, но это не так:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import net.miginfocom.swing.MigLayout;

public class SplitPaneQuestion {
    public static void main(String[] args) {
        JFrame frame = new JFrame("SplitPaneQuestion");
        JPanel panel = new JPanel();
        frame.setContentPane(panel);
        panel.setLayout(new MigLayout("","[]","[grow]"));
        JSplitPane splitpane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
        panel.add(splitpane, "push, grow");

        splitpane.setTopComponent(new JButton("top"));
        splitpane.setBottomComponent(new JButton("bottom"));
        splitpane.setDividerLocation(0.333);

        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

Мне бы хотелось, чтобы соотношение размеров верхней / нижней кнопок было постоянным при изменении размера всего кадра. (с соотношением 1: 2 по умолчанию)

Как я могу это сделать?

Ответы [ 2 ]

6 голосов
/ 31 января 2011
splitPane.setResizeWeight(0.333);
2 голосов
/ 31 января 2011

Я не могу говорить за MigLayout, который я не знаю. Тем не менее, на мой взгляд, лучшее решение этой проблемы - универсальное: вы добавляете ComponentListener к вашему JSpiltPane и изменяете размер содержащегося в нем компонента с помощью коэффициента, построенного из соотношения размеров.

...