JScrollPane控件中添加JPanel后滚动条显示问题
今天在做项目的时候使用到了JScrollPane类,往里面放置一个布局格式为GridLayout的JPanel容器,结果JScrollPane容器的上下和左右滚动条死活不出来,于是上网查找了一下解决方案,只要设置了容器的PreferredSize属性,然后在添加到JScrollP
·
今天在做项目的时候使用到了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);
}
}
效果图:
更多推荐
已为社区贡献1条内容
所有评论(0)