Swing拥有三个常用的顶层容器类:
JFrame
JDialog
JApplet
1, 任何画面类,必须是容器类的分支,任何界面树的顶层容器类必须是上面三个中的一个。
2,任何画面组件只能被容器类引用一次,如果复制他们到另外的容器类,它会被从第一个容器类中删除然后放在第二个容器类中。
3,顶层容器类都含有一个内容面板,包含了顶层容器要显示的内容
4,顶层容器类通常含有一个Menu Bar, 这个Menu Bar可以带来更好的使用体验,比如在Mac系统中,Menu bar会显示在screen顶上而不是app顶上。
注意,JPanel默认的排版方式是FlowLayout
但是可以使用顶层容器类的setContentPanel替换成自定义布局的JPanel类。
示例代码:
package com.jesse.kotlin.com.jesse.gui
import java.awt.BorderLayout
import java.awt.Dimension
import javax.swing.*
class WindowMain {
private val rootContainer = JFrame("GUI Demo")
fun buildGui(){
rootContainer.defaultCloseOperation = JFrame.EXIT_ON_CLOSE
var label = JLabel("Hello world")
rootContainer.contentPane.add(label, BorderLayout.CENTER)
rootContainer.preferredSize = Dimension(400, 300)
var menuPanel:JMenuBar = JMenuBar()
menuPanel.add(JMenu("help"))
rootContainer.jMenuBar = menuPanel
rootContainer.pack()
rootContainer.isVisible = true
}
}
fun main(args: Array<String>) {
SwingUtilities.invokeLater {
WindowMain().buildGui()
}
}