gpt4 book ai didi

java - JList:如何获取 LineBorder "between"单元格?

转载 作者:行者123 更新时间:2023-11-29 05:23:53 26 4
gpt4 key购买 nike

这是一个 JList 的例子。我知道如何为整个 JList 或包含 JList 的面板设置边框。 我的问题是,我们如何在单元格之间创建线条边界?`

enter image description here

例如,在给定的图片中,第一个单元格和第二个单元格之间的线条边框颜色为灰色,而所有其他单元格之间的线条边框为白色。

请不要说这是 JComboBox 或 JTree(因为第二个元素及其两个子元素);即使它不是 JList,我也希望我的 JListcells 之间有类似的 LineBorders


我的网络搜索将我带到了 this 接口(interface)。它的方法 getListCellRendererComponent 采用 E value、int index、boolean isSelected、boolean cellHasFocus 等参数,而我希望 LineBorder 出现在之间所有单元格,无论它们有什么索引,是否被选中等。


编辑:-

enter image description here

边框有些地方粗,有些地方细。

最佳答案

您可以在 ListCellRenderer 的帮助下实现这一点。这是一个简单的例子:

import java.awt.Color;
import java.awt.Component;

import javax.swing.BorderFactory;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;


public class TestFrame extends JFrame{

public TestFrame(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
init();
pack();
setVisible(true);
}

private void init() {
JList<String> list = new JList<>(new String[]{"1","2","3"});
list.setCellRenderer(getRenderer());
add(list);
}

private ListCellRenderer<? super String> getRenderer() {
return new DefaultListCellRenderer(){
@Override
public Component getListCellRendererComponent(JList<?> list,
Object value, int index, boolean isSelected,
boolean cellHasFocus) {
JLabel listCellRendererComponent = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected,cellHasFocus);
listCellRendererComponent.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0,Color.BLACK));
return listCellRendererComponent;
}
};
}

public static void main(String... strings) {
new TestFrame();
}
}

看起来像:

enter image description here

阅读更多 tutorial .

编辑:只需将 LineBorder 更改为 MatteBorder(已更改代码和图像)。

关于java - JList:如何获取 LineBorder "between"单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23495012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com