JScrollPane控件中添加JPanel后滚动条显示问题

今天在做项目的时候使用到了JScrollPane类,往里面放置一个布局格式为GridLayout的JPanel容器,结果JScrollPane容器的上下和左右滚动条死活不出来,于是上网查找了一下解决方案,只要设置了容器的PreferredSize属性,然后在添加到JScrollPane容器中,只要容器的大小超出JScrollPane容器的大小,滚动条出现了,之后再翻查了一下API,PreferredSize这个属性是设置组件的首选大小,如果这个值不设置则有UI提供大小。测试代码如下:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class CourtCtrl extends JPanel
{

	public CourtCtrl()
	{
		super();
		
		/**设置场地容器的大小*/
		this.setSize(190, 250);
		this.setPreferredSize(new Dimension(190,250));
		
		/**设置场地容器的布局*/
		this.setLayout(null);
		
		/**创建场地容器的内层容器*/
		JPanel inJPanel = new JPanel();
		inJPanel.setLayout(null);
		inJPanel.setSize(168, 228);
		inJPanel.setLocation(this.getWidth()/2 - inJPanel.getSize().width/2, 
				this.getHeight()/2 - inJPanel.getSize().height/2);
		inJPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
		
		this.add(inJPanel);
	}
	
	/**测试*/
	public static void main(String[] args)
	{
		/**测试窗体*/
		JFrame jf = new JFrame();
		jf.setSize(500, 500);
		
		JPanel jp = new JPanel();
		jp.setLayout(new GridLayout(10,10));
		for(int i = 0; i < 100; i++)
		{
			CourtCtrl court = new CourtCtrl();
			jp.add(court);
		}
		
		/**创建一个带滚动条的容器*/
		JScrollPane scrollPanel = new JScrollPane(jp);
		
		jf.add(scrollPanel);
		jf.setVisible(true);
	}
	
}

效果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值