java如何指定Jlist宽度?
我想指定JList的固定宽度
我遵循Gilbert Le Blanc 22k提供的示例
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.X_AXIS));
Panel panel = new JPanel();
panel.setBackground(Color.WHITE);
getContentPane().add(panel);
String [] queries = {"a", "b", "a", "b" , "a", "b", "a", "b"};
panel.setLayout(new BorderLayout());
JList list = new JList(queries);
list.setMaximumSize(new Dimension(200, 200)); // this line does not do the job
list.setMinimumSize (new Dimension (200,200));
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.setVisibleRowCount(5);
JScrollPane scrollPane_1 = new JScrollPane(list);
panel.add(scrollPane_1 , BorderLayout.CENTER);
但这并不强制大小为200 200
。我需要JScrollPane
的宽度为200
# 1 楼答案
否,不要设置已添加到
JScrollpane
的JList
的大小。因为JList
有一个实现的函数getPreferredScrollableViewportSize()
,该函数通过计算其包含的单元格宽度和单元格高度来计算首选的viewport
大小。让JScrollPane
来处理这个问题。如果需要,可以尝试添加JScrollPane's
维度。但是,要控制项目显示编号和方向,可以使用:setLayoutOrientation
允许列表在多列中显示其数据。值:JList.HORIZONTAL_WRAP
:指定在换行到新行之前,列表应从左到右显示其项李>JList.VERTICAL_WRAP
:指定数据在包装到新列之前从上到下显示(通常)李>setVisibleRowCount(-1)
使列表在屏幕可用空间中显示尽可能多的项目。setVisibleRowCount
的另一个常用用法是在列表的滚动窗格中指定列表希望显示的行数查看:How to Use List了解演示和示例强>
# 2 楼答案
您只需使用JList的
setFixedCellWidth
# 3 楼答案
通常情况下,列表的大小是您放入其中的元素数,因此不会以这种方式固定。您不能创建一个包含N个空格的列表,因为它不是一个列表(它的长度是多少?)-阵列更适合这里。如果要创建固定大小的列表,请参阅:
fixed size list in Java
您还可以创建一个类,该类允许您向列表中添加指定数量的元素,然后禁止进一步添加(当列表的大小达到所需的N时)
# 4 楼答案
我也有同样的问题。我的数据只有5个字符,与我的另一个窗口相比,我看不见了。所以我用了绳子。格式化以在其末尾添加空格。这拓宽了我的视野。我还能够添加美元符号并设置小数点的格式
# 5 楼答案
解决方案是调整
JScrollPane
的大小。如果我没记错的话,JList
把JScrollPane
填满# 6 楼答案
大多数布局管理器使用首选大小来确定最佳大小,然后在调整框架大小时使用“最小/最大”来处理大小调整
我想尝试一下:
尽管手动设置组件的首选尺寸很少是个好主意。让LAF确定合适的首选尺寸。例如,我永远不会硬编码高度,因为这样您的列表可能会显示4 1/2行,这看起来不专业
宽度我可以理解一点,如果你只有一个字符串,它可能看起来太窄了。但在这种情况下,更好的解决方案是创建一个自定义渲染器,并使用一个EmptyBorder在左/右上分配额外的空间,然后让LAF调整JList的大小