固定JFrame下,默认BorderLayout布局中的JPanel大小如何调整

        固定JFrame下,默认BorderLayout布局中的JPanel大小如何调整?

        JFrame默认布局为BorderLayout,共五个部分,分别为:NORTH、SOUTH、LEFT、RIGHT、CENTER,BorderLayout常量,需要为添加的组件进行单独指定。

        在JFrame固定大小情况下,如果布局中使用JPanel,那JPanel如何设置大小,与JFrame大小是之间关系,本文进行实际实践总结。

        代码如下:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class FixFrameTest {
	public static void main(String[] args) {
		MyFrame myFrame = new MyFrame();
		myFrame.setVisible(true);
		myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
 
}
class MyFrame extends JFrame{
	public MyFrame(){
		init();
	}
	public void init() {
		setSize(800,600);//固定窗口大小
		setBackground(Color.BLACK);
		
		LeftPan left=new LeftPan();
		add(left,BorderLayout.WEST);
		
		CenterPan center=new CenterPan();
		add(center,BorderLayout.CENTER);
		
		RightPan right=new RightPan();
		add(right,BorderLayout.EAST);
		
		TopPan top=new TopPan();
		top.add(new JButton("Welcomd"));
		add(top,BorderLayout.NORTH);
		
		BottomPan bottom=new BottomPan();
		bottom.add(new JButton("here"));
		add(bottom,BorderLayout.SOUTH);
	}
}
 
class LeftPan extends JPanel{
	public LeftPan() {
		setPreferredSize(new Dimension(50, 0));//高度无效
		setBackground(Color.RED);
	}
}
class CenterPan extends JPanel{
	public CenterPan() {
		setPreferredSize(new Dimension(100, 100));//宽度、高度无效
		setBackground(Color.GREEN);
	}
}
class RightPan extends JPanel{
		public RightPan() {
			setPreferredSize(new Dimension(150, 0));//高度无效
			setBackground(Color.BLACK);
		}
}
class TopPan extends JPanel{
	public TopPan() {
		setPreferredSize(new Dimension(0, 30));//宽度无效
		setBackground(Color.ORANGE);
	}
}
class BottomPan extends JPanel{
	public BottomPan() {
		setPreferredSize(new Dimension(0, 50));//宽度效果
		setBackground(Color.BLUE);
	}
}

执行结果:

总结:

1、JFrame默认布局:BorderLayout(JPanel默认布局为FlowLayout),JFrame默认布局会屏蔽设置大小JPanel.setSize设置的大小,如要更改,可以使用JPanel.setPreferredSize更改大小。

2、BorderLayout的LEFT、RIGHT的宽度,由组件决定,高度=JFrame.getHeight()-NORTH、SOUTH的高度;NORTH、SOUTH的高度,,由组件决定,宽度=JFrame.getWidth()-LEFT、RIGHT的宽度;CENTER宽度、高度均倒算。

3、可以通过JFrame.setLayout(null)可是去掉布局管理器,自行布局。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值