JPanel
1、默认的布局方式:流式布局。
2、创建一个JPanel 默认使用流式布局,而且居中显示,要想改变它的显示方式,使用
JPanel(FlowLayout(FlowLayout.LEFT)
JPanel + BorderLayout
代码如下:
package com.cdx.test.test
import java.awt.BorderLayout
import javax.swing.JButton
import javax.swing.JFrame
import javax.swing.JPanel
class JPanelExample : JFrame() {
init {
val jb1 = JButton("西瓜")
val jb2 = JButton("苹果")
val jb3 = JButton("香蕉")
val jb4 = JButton("荔枝")
val jb5 = JButton("葡萄")
val jb6 = JButton("桔子")
val jp1 = JPanel()
val jp2 = JPanel()
jp1.add(jb1)
jp1.add(jb2)
jp2.add(jb4)
jp2.add(jb5)
jp2.add(jb6)
// 定位南边位置
this.add(jp1, BorderLayout.NORTH)
// 定位北边位置
this.add(jp2, BorderLayout.SOUTH)
this.add(jb3)
this.title = "多种布局格式"
// 定义大小
this.setSize(/* width = */ 400, /* height = */ 200)
// 定义位置
this.setLocation(1000, 300)
// 定义关闭的操作
this.defaultCloseOperation = JFrame.EXIT_ON_CLOSE
// 显示JFrame
this.isVisible = true
}
companion object {
@JvmStatic
fun main(args: Array<String>) {
JPanelExample()
}
}
}
JPanel 实现竖直依次排列
代码如下:
package com.cdx.test.test
import java.awt.FlowLayout
import javax.swing.*
class JPanelExample2 : JFrame() {
init {
defaultCloseOperation = WindowConstants.EXIT_ON_CLOSE
// 第 1 个 JPanel, 使用默认的浮动布局
val panel01 = JPanel()
panel01.add(JLabel("用户名"))
panel01.add(JTextField(10))
// 第 2 个 JPanel, 使用默认的浮动布局
val panel02 = JPanel()
panel02.add(JLabel("密 码"))
panel02.add(JPasswordField(10))
// 第 3 个 JPanel, 使用浮动布局, 并且容器内组件居中显示
val panel03 = JPanel(FlowLayout(FlowLayout.CENTER))
panel03.add(JButton("登录"))
panel03.add(JButton("注册"))
// 创建一个垂直盒子容器, 把上面 3 个 JPanel 串起来作为内容面板添加到窗口
val vBox: Box = Box.createVerticalBox()
vBox.add(panel01)
vBox.add(panel02)
vBox.add(panel03)
contentPane = vBox
pack()
setLocationRelativeTo(null)
isVisible = true
}
companion object {
@JvmStatic
fun main(args: Array<String>) {
JPanelExample2()
}
}
}
JPanel 实现竖直排列方式2
主要是利用BoxLayout 和 FlowLayout进行组合使用
package com.cdx.test.view
import com.cdx.test.constant.Constant
import java.awt.Color
import java.awt.Dimension
import java.awt.FlowLayout
import java.awt.GridLayout
import java.awt.event.MouseAdapter
import java.awt.event.MouseEvent
import java.io.File
import javax.swing.*
/**
* 查找丢失的View
*/
class FindLostIdView() : JPanel() {
init {
addView()
}
private fun addView() {
layout = BoxLayout(this,BoxLayout.Y_AXIS)
val chooseRes = JPanel(FlowLayout(FlowLayout.LEFT)).apply { add(JButton("选择Res")) }
val filePath = JPanel(FlowLayout(FlowLayout.LEFT)).apply { add(JLabel("文件夹路径为:")) }
val startCheck = JPanel(FlowLayout(FlowLayout.LEFT)).apply { add(JButton("开始检测")) }
add(chooseRes, LEFT_ALIGNMENT)
add(filePath, LEFT_ALIGNMENT)
add(startCheck, LEFT_ALIGNMENT)
}
private fun getAbsolutePath(): String {
val chooser = JFileChooser()
chooser.fileSelectionMode = JFileChooser.DIRECTORIES_ONLY
chooser.showOpenDialog(this@FindLostIdView)
val file: File = chooser.selectedFile
return file.absolutePath
}
}