【问题标题】:Add space between JList items在 JList 项之间添加空格
【发布时间】:2013-05-16 07:26:02
【问题描述】:

如何在JList 项目之间添加空格?有什么办法吗?

在此图像上,白色是背景,黄色是 JList 的自定义 DefaultListCellRenderer,我希望每个 JList 项目彼此之间有 5 个像素的空间。

http://img819.imageshack.us/img819/5772/spacemd.png

dlm = new DefaultListModel<String>();
jlist = new JList<String>(dlm);
jlist.setFont(new Font("Calibri",Font.BOLD,16));
jlist.setCellRenderer(new Renderer());
jlist.setFixedCellWidth(100);
jlist.setBorder(new EmptyBorder(10,10, 10, 10));

【问题讨论】:

  • 通常可以通过调整渲染器来实现。为了尽快获得更好的帮助,请发帖SSCCE
  • andrew 你能告诉我从哪里开始吗?我知道如何渲染,但我不知道从这里开始。谢谢
  • @asda Sdasd (wrote I tried it but it is expanding the yellow background) SSCCE 的另一个原因
  • 我的意思是在渲染器内部有什么代码会产生空间? Y_Y

标签: java swing jlist listcellrenderer


【解决方案1】:

我没有看到您的渲染器,但您可以将组件添加到面板。这个依赖于默认 FlowLayout 的默认 5 像素间隙,但您也可以为面板添加边框。

list.setCellRenderer(new DefaultListCellRenderer(){
    private static final int N = 2;

    @Override
    public Component getListCellRendererComponent(JList list, Object value,
            int index, boolean isSelected, boolean cellHasFocus) {
        Component c = super.getListCellRendererComponent(
            list, value, index, isSelected, cellHasFocus);
        c.setBackground(Color.yellow);
        JPanel p = new JPanel();
        p.add(c);
        return p;
    }
});

【讨论】:

    【解决方案2】:

    尝试使用JList.setFixedCellHeight(someValue), 通常会这样做。

    【讨论】:

    • @CatalinaIsland 并非如此,renderer.getPreferedSize() 仅在 fixedCellHeight != -1 时使用。见BasicListUI.updateLayoutState()
    • 好吧,我的 L&F 一定有什么不同。
    猜你喜欢
    • 2023-01-12
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 2012-06-24
    相关资源
    最近更新 更多