我有一个如下所示的Jlist。我使用JList.HorizontalWrap
来实现这一点,但出于某种原因,在列表中的第4项之后,它会开始一个新行。
以下是我用来查看此列表的配置。
sList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
sList.setVisibleRowCount(-1);
sList.setLayoutOrientation(JList.HORIZONTAL_WRAP);
有没有什么方法可以将List行计数设置为Jlist的宽度,以便在开始新行之前设置列表中的所有项目?
答案 0 :(得分:3)
正如我在评论中指出的那样,你的问题很适合通过创建SSCCE解决问题。事实上,我自己使用你的代码片段和我的一些代码做了一个:
import java.awt.Dimension;
import javax.swing.*;
public class Foo001 {
private static void createAndShowUI() {
DefaultListModel model = new DefaultListModel();
JList sList = new JList(model);
for (int i = 0; i < 100; i++) {
model.addElement("String " + i);
}
sList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
sList.setVisibleRowCount(-1);
sList.setLayoutOrientation(JList.HORIZONTAL_WRAP);
JFrame frame = new JFrame("Foo001");
frame.getContentPane().add(new JScrollPane(sList));
frame.getContentPane().setPreferredSize(new Dimension(400, 300));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}
由于我无法使用我的代码重现您的问题,因此我必须得出结论,您的问题出现在您未向我们展示过的代码中。同样,如果您可以创建并发布您的SSCCE,我们可能会帮助回答您的问题,但在此之前,我不确定我们是否能够猜出问题是什么。