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);

}

}

回答:

contentPane.add(scrollPane, BorderLayout.CENTER);
把组件加到BorderLayout.CENTER的时候,大小是被托管的,非得加到BorderLayout.CENTER的话,只能改变contentPane的大小。
其它办法就是不指定contentPane的布局。

以上是 java_swing 中为什么有的组件设置setPreferedsize()不起作用? 的全部内容, 来源链接: utcz.com/p/170743.html

回到顶部