Estoy tratando de establecer la ubicación del divisor de un JSplitPane, pero parece que no funciona.Establecer la ubicación del divisor en un JSplitPane no funciona
He aquí un SSCCE:
import java.awt.Color;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
public class JSplitProblem extends JFrame {
public JSplitProblem(){
JPanel upperPanel = new JPanel();
upperPanel.setLayout(new BoxLayout(upperPanel, BoxLayout.X_AXIS));
JPanel leftPanel = new JPanel();
leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.Y_AXIS));
JPanel red = new JPanel();
red.setBackground(Color.red);
leftPanel.add(red);
JPanel rightPanel = new JPanel();
rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS));
JPanel blue = new JPanel();
blue.setBackground(Color.blue);
rightPanel.add(blue);
upperPanel.add(leftPanel);
upperPanel.add(rightPanel);
JPanel bottomPanel = new JPanel();
bottomPanel.setBackground(Color.black);
JSplitPane mainSplittedPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, upperPanel,bottomPanel);
mainSplittedPane.setOneTouchExpandable(true);
mainSplittedPane.setDividerLocation(0.5);
this.add(mainSplittedPane);
this.setSize(800,600);
this.setResizable(true);
this.setVisible(true);
}
public static void main(String[] args) {
new JSplitProblem();
}
}
Me gustaría que el panel inferior negro que yacía en un 50% de toda la zona por defecto. ¿Qué estoy haciendo mal?
sencilla más uno para sscce – mKorbel
setDividerLocation IIRC con una relación funciona sólo después de la SplitPane se ha hecho visible en un árbol de contenidos. Probablemente se deba a que el método calcula inmediatamente la ubicación real en píxeles, en función del tamaño actual. – jfpoilpret
@jfpoilpret: sí. Lo entendí por la respuesta de mKorbel. De lo contrario, el uso de invocará posterior no afectará a ella. Gracias por señalar de todos modos. – Heisenbug