tabpane tab que jtab java swing jcomponent

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



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). [...]