java - tab - JSplitPane división 50% con precisión
tabpane java (4)
Debería usar setDividerLocation(double proportionalLocation)
para determinar la distribución de espacio inicial de JSplitPane
, y luego llamar a setResizeWeight(double)
con el mismo valor para garantizar que los paneles se redimensionen en proporción.
Además, tenga en cuenta: llamar a setDividerLocation(double)
antes de que JSplitPane
esté visible no funcionará correctamente , ya que el cálculo del espacio se basa en el tamaño actual del Component
. En su lugar, debe involucrar a un hack desagradable, como anular el método de pintura de JSplitPane
que contiene el JSplitPane
:
private boolean painted;
@Override
public void paint(Graphics g) {
super.paint(g);
if (!painted) {
painted = true;
splitPane.setDividerLocation(0.25);
}
}
En Swing, ¿cuál es la mejor manera de hacer que JSplitPane divida dos jpanels con un 50% de tamaño cada uno?
Parece que si no configuro los tamaños preferidos en los paneles siempre hace que el primer panel sea casi invisible (2%) y el segundo (98%)
Gracias por adelantado
Las soluciones aquí no tienen en cuenta el caso en el que el usuario mueve el divisor (es decir, una ubicación de divisor variable). Un ejemplo completo que toma esto en cuenta está disponible aquí:
Tuve un problema similar y lo resolví usando un oyente componente en el contenedor principal y establecí la ubicación del divisor en el primer cambio de tamaño. Inicialice una variable firstResize en true y agréguela al constructor contenedor primario:
addComponentListener(new ComponentAdapter(){
@Override
public void componentResized(ComponentEvent e) {
if(firstResize){
splitPane.setDividerLocation(0.5);
firstResize = false;
}
}
});
Esto debería provocar que el divisor se centre cuando se establece por primera vez el tamaño del contenedor padre.
Utilizar
setResizeWeight
(.5d);
[...] Un valor de 0, el predeterminado, indica que el componente derecho / inferior obtiene todo el espacio extra (el componente izquierdo / superior actúa fijo), donde como un valor de 1 especifica que el componente izquierdo / superior obtiene todo el extra espacio (el componente derecho / inferior actúa fijo). [...]