具有水平环绕的JList项目不会一直延伸

时间:2011-08-07 17:58:49

标签: java swing selection jlist alignment

我有一个如下所示的Jlist。我使用JList.HorizontalWrap来实现这一点,但出于某种原因,在列表中的第4项之后,它会开始一个新行。

以下是我用来查看此列表的配置。

        sList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
        sList.setVisibleRowCount(-1);
        sList.setLayoutOrientation(JList.HORIZONTAL_WRAP);

有没有什么方法可以将List行计数设置为Jlist的宽度,以便在开始新行之前设置列表中的所有项目?

1 个答案:

答案 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,我们可能会帮助回答您的问题,但在此之前,我不确定我们是否能够猜出问题是什么。