【问题标题】:JList items with horizontal wrap not extending all the way through水平环绕的 JList 项目没有一直延伸
【发布时间】:2011-10-21 22:11:27
【问题描述】:

我有一个类似下面的 Jlist。我正在使用JList.HorizontalWrap 来实现这一点,但由于某种原因,在列表中的第 4 项之后,它开始了一个新行。

这是我用来让列表看起来像这样的配置。

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

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

【问题讨论】:

  • 这看起来是您创建和发布SSCCE 的好人选。
  • -1,我看到你还没有从你上次的帖子中学到很多东西 (stackoverflow.com/questions/6969358/…)。您是否希望我们继续回来检查您是否发布了 SSCCE?
  • @camickr,我发的帖子是问一个一般的“如何”编程问题。我问是否有办法设置 JList 布局,以便列表中的项目在开始新行之前填充列表的宽度。
  • @Warz:不,你错了;这是我的代码问题出了什么问题。是的,您需要 SSCCE。
  • @Warz,不,您编写了一些代码,但它没有按您预期的方式工作。因此,您发布带有问题的 SSCCE。很简单。

标签: java swing selection jlist alignment


【解决方案1】:

正如我在评论中指出的,您的问题很适合通过创建SSCCE 来解决。事实上,我自己用你的代码 sn-p 和我的一些代码做了一个:

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

【讨论】:

  • @Warz:我刚刚阅读了 camickr 的评论。为什么您还没有创建自己的 SSCCE?你还在等什么?
  • 在我构建 SSCCE 时让它工作。感谢您让我开始。
  • 不客气。这是创建这些人的好处之一,因为您经常在此过程中发现问题及其解决方案。恭喜!
  • @Warz,我已经告诉过您多少次了,这就是创建 SSCCE 的意义所在,这样您才能真正解决自己的问题?当你真正付出努力时,你能做到的事情真是太棒了。
猜你喜欢
  • 2020-10-02
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-16
相关资源
最近更新 更多