簡體   English   中英

JList:如何在“單元格”之間獲取LineBorder?

[英]JList: How to get a LineBorder “between” cells?

這是JList的一個例子。 我知道如何設置整個JList或包含JList的面板的邊框。 我的問題是我們如何在細胞之間創建線條邊界?`

在此輸入圖像描述

例如,在給定圖片中,第一單元和第二單元之間的線邊界的顏色是灰色,而在所有其他單元之間存在白色的邊界線。

請不要說這是JComboBo x或JTree (因為第二個元素及其兩個子元素); 即使它不是JLis ,我希望我的JListcells之間有類似的LineBorders


我的網絡搜索引導我進入這個 interface 它的方法getListCellRendererComponent接受E value, int index, boolean isSelected, boolean cellHasFocus ,而我希望LineBorder出現在所有單元格之間,無論它們具有什么索引以及它們是否被選中等。


編輯:-

在此輸入圖像描述

邊境在某些地方較厚,在其他地方較好。

您可以在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();
    }
}

看起來像:

在此輸入圖像描述

閱讀更多教程

編輯:只需將LineBorder更改為MatteBorder (已更改代碼和圖像)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM