2011-01-31 1 views
4

Следующий вопрос to my other one;JSplitPane + MiGLayout: как включить пропорциональную автореализацию

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

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)

Как это сделать?

ответ

6
splitPane.setResizeWeight(0.333); 
+0

Aha! спасибо, я ожидал, что setDividerLocation будет работать, и когда это было не так, я понятия не имел, что делать. –

2

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

+0

+1: Мне нужно сделать это для других целей, поэтому благодарим за ссылку на ComponentListener. –

Смежные вопросы