java panel以borderlayout添加到frame

java panel以borderlayout添加到frame,第1张

是这样的:

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)后面就行了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11984079.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存