BorderLayout默认会压缩四周,即压缩返睁North,South,West,East中的组件;同时扩展中心,即Center中的组漏芹岁件。由于你的WEST和EAST中的Panel都没有设置首选大小(调用setPreferredSize),所以会被压缩至没有宽度,就看不见了。
你只需要加上:
p1.setPreferredSize(new Dimension(xxx,xxx))
p2.setPreferredSize(new Dimension(xxx,xxx))
其中xxx填写数值首中就可以了。
一般而言可以用两种方法实现。
第一种
import javax.swing.*public class FrameDemo1 {
public static void main(String[] args) {
//创建一个JFrame对象
JFrame jf = new JFrame()
//设置窗口的标题栏
jf.setTitle("窗口一")
//创建一个标签组件
JLabel jl = new JLabel("窗口里的标签组件")
//把标签组件添加到窗口界面
jf.add(jl)
//设置答激窗口的位置
jf.setLocation(200,120)
//设置窗口的大小
jf.setSize(300, 280)
//设置窗口的可见性
jf.setVisible(true)
}
}
第二种方法
import java.awt.*import java.awt.event.*
import javax.swing.*
//写一个类去继承JFrame
public class FrameDemo2 extends JFrame{
//定义组件
JLabel jl
JButton jb
public FrameDemo2() {
//初始化组件
jl = new JLabel("窗口里的标签组件")
jb = new JButton("窗口里的按钮")
//给按钮添加事件响应,点清空袜击按钮改变标签组件上的文字的颜色
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jl.setForeground(Color.RED)
}
})
//设置窗口的布局,为边界布局
this.setLayout(new BorderLayout())
//添加组件到指定的位置
this.add(jl,BorderLayout.CENTER)
this.add(jb,BorderLayout.SOUTH)
//窗口的this.setLocation(120,100) 和this.setSize(300,280)的整合写法setBounds(....)
this.setBounds(120, 100, 300, 280)
//设置点击窗口的关闭按钮执行的默认 *** 作,关闭程序
this.setDefaultCloseOperation(EXIT_ON_CLOSE)
//设置窗口的标题栏
this.setTitle("窗口二")
//窗口默认是不可见的亏信,所以需要设置窗口的可见性为true
this.setVisible(true)
}
public static void main(String[] args) {
new FrameDemo2()
}
}
多半是因为你是在frame显示之后才把组件加上去,当改变窗口大小的时候窗口要重绘,激此这时组件才显示出来坦铅碰
把你加组件让谈的代码放到frame.setVisible(true)后面就行了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)