/swan-layout

LinearLayout & FrameLayout for Java Swing

Primary LanguageKotlinMIT LicenseMIT

Swan Layout

GitHub closed issues GitHub Repo stars

Bringing LinearLayout and FrameLayout from Android to Java Swing


Install

Add to root build.gradle

allprojects {
  repositories {
    maven { url 'https://jitpack.io' }
  }
}

Add to module build.gradle

dependencies {
  implementation 'com.github.idayrus:swan-layout:VERSION'
}

Documentation

See full documentation at https://idayrus.github.io/swan-layout/

Examples

LinearLayout

val panelVertical = JPanel(LinearLayout(LinearLayout.VERTICAL))
val panelHorizontal = JPanel(LinearLayout(LinearLayout.HORIZONTAL))
val lc = LinearConstraints()

lc.reset()
lc.width = 0
lc.weight = 0.5
lc.margin = 10
lc.marginEnd = 5
panelHorizontal.add(JButton("Horizontal (weight 0.5)"), lc)

lc.reset()
lc.width = 0
lc.weight = 0.5
lc.margin = 10
lc.marginStart = 5
panelHorizontal.add(JButton("Horizontal (weight 0.5)"), lc)

// Add panelHorizontal to panelVertical
lc.reset()
lc.width = LinearConstraints.MATCH_PARENT
lc.height = LinearConstraints.WRAP_CONTENT
panelVertical.add(panelHorizontal, lc)

lc.reset()
lc.margin = 10
lc.marginTop = 0
lc.width = LinearConstraints.WRAP_CONTENT
lc.height = LinearConstraints.WRAP_CONTENT
lc.gravity = LinearConstraints.CENTER
panelVertical.add(JButton("Gravity Center"), lc)

lc.reset()
lc.margin = 10
lc.marginTop = 0
lc.width = LinearConstraints.MATCH_PARENT
lc.height = LinearConstraints.MATCH_PARENT
panelVertical.add(JButton("Fill Remain"), lc)

FrameLayout

val panel = JPanel(FrameLayout())
val fc = FrameConstraints()

fc.margin = 10
fc.gravity = FrameConstraints.TOP_START
panel.add(JButton("TOP_START"), fc)

fc.gravity = FrameConstraints.CENTER
panel.add(JButton("CENTER_CENTER"), fc)

fc.gravity = FrameConstraints.BOTTOM_END
panel.add(JButton("BOTTOM_END"), fc)

Screenshots

LinearLayout

FrameLayout