将JList放在ScrollPane中,想设置ScrollPane的大小,发现使用setPreferedsize()无法更改?contentPane使用的是BorderLayout
效果如下:
使用setPreferedsize()没有变化,请问如何更改左边区域的大小
代码如下(用windowbuilder生成)
public class List extends JFrame {
private JPanel contentPane;
JLabel label = null;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
List frame = new List();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public List() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
//创建内容窗格
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
//创建JList
String[] model = { "唱歌", "听音乐", "看书", "玩电脑", "踢足球", "唱歌", "听音乐", "看书",
"玩电脑", "踢足球", "唱歌", "听音乐", "看书", "玩电脑", "踢足球" };
JList list = new JList(model);
list.setValueIsAdjusting(true);
//将Jlist放在scrollPane中
JScrollPane scrollPane = new JScrollPane(list);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setPreferredSize(new Dimension(20, 20)); //为什么不起作用?
contentPane.add(scrollPane, BorderLayout.CENTER);
label = new JLabel("\u6CA1\u6709\u4EFB\u4F55\u9009\u62E9");
contentPane.add(label, BorderLayout.EAST);
}
}
contentPane.add(scrollPane, BorderLayout.CENTER);
把组件加到BorderLayout.CENTER的时候,大小是被托管的,非得加到BorderLayout.CENTER的话,只能改变contentPane的大小。
其它办法就是不指定contentPane的布局。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。