java_swing 中为什么有的组件设置setPreferedsize()不起作用?
将JList放在ScrollPane中,想设置ScrollPane的大小,发现使用setPreferedsize()无法更改?contentPane使用的是BorderLayout
效果如下:
使用setPreferedsize()没有变化,请问如何更改左边区域的大小
代码如下(用windowbuilder生成)
package com.pop1;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.JScrollPane;
import javax.swing.JList;
import javax.swing.JLabel;
import javax.swing.ScrollPaneConstants;
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);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
contentPane.add(scrollPane, BorderLayout.CENTER);
把组件加到BorderLayout.CENTER的时候,大小是被托管的,非得加到BorderLayout.CENTER的话,只能改变contentPane的大小。
其它办法就是不指定contentPane的布局。