Estaba experimentando con Intellij Plugin SDK usando Kotlin US DSL v2, técnicamente no es Java Swing puro. Cree este tab para ver visualmente cuando el width (ancho) se aplicaba y cuando era ignorado.
¿Qué es Kotlin UI DSL v2?
Kotlin UI DSL (en inglés, lenguaje específico de dominio) es la segunda iteración, al momento de escribir experimental, diseñado para crear forms usando programación declarativa dentro de la plataforma Intellij, parte de Intellij Plugin SDK.
Cuando dice “extension” significa que se está utilizando una extensión sobre las clases de la librería:
Kotlin provee la habilidad de extender una clase o interfaz con nueva funcionalidad sin tener que heredar de una clase o usar patrones de diseño como Decorator. Esto es hecho mediante unas declaraciones especiales llamadas 'extensions'.
Esta extensión fue creada porque como se puede ver en el ejemplo, si Dimension no es un nuevo objeto, el nuevo valor en size no se aplica, también la función está lidiando con los valores anteriores de height o width cuando estás alterando sólo uno de ellos.
Espero que no pierdas el tiempo como yo, estoy lejos de ser un experto en Java Swing, pero en mi opinión no es un comportamiento correcto.
fungetTab():JPanel{valtestWidth=150returnpanel{indent{row("textField from rowConstructor: "){textField()}row("textField from rowConstructor with RowLayout.PARENT_GRID: "){textField()}.layout(RowLayout.PARENT_GRID)row("textField from JBTextField object "){valjbTextField=JBTextField()cell(jbTextField)}row("textField from JBTextField object with cell.horizontalAlign.FILL"){valjbTextField=JBTextField()cell(jbTextField).horizontalAlign(HorizontalAlign.FILL)}row("textField from JBTextField set $testWidth to width using size.width"){valjbTextField=JBTextField()jbTextField.size.width=testWidthcell(jbTextField)}row("textField from JBTextField set $testWidth to width using size.setWidth extension"){valjbTextField=JBTextField()jbTextField.setWidth(testWidth)cell(jbTextField)}row("textField from JBTextField set $testWidth to width using preferredSize.width"){valjbTextField=JBTextField()jbTextField.preferredSize.width=testWidthcell(jbTextField)}row("textField from JBTextField set $testWidth to width using size.setPreferredWidth extension"){valjbTextField=JBTextField()jbTextField.setPreferredWidth(testWidth)cell(jbTextField)}row("textField from JBTextField set $testWidth to width using minimumSize.width"){valjbTextField=JBTextField()jbTextField.minimumSize.width=testWidthcell(jbTextField)}row("textField from JBTextField set $testWidth to width using size.setMinimumWidth extension"){valjbTextField=JBTextField()jbTextField.setMinimumWidth(testWidth)cell(jbTextField)}}}}