簡體   English   中英

刪除jtable中的單元格邊框

[英]remove cells border in a jtable

我有自定義單元格渲染器,並希望刪除單元格的邊框。
我該怎么做? 我試過setBorder但它不起作用。

這是我的渲染器代碼:

public class MyTableCellRenderer extends DefaultTableCellRenderer {

    private static final long serialVersionUID = -1195682136616306875L;

    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        Component c = super.getTableCellRendererComponent(table, value,
                isSelected, hasFocus, row, column);
        if (!isSelected) {
            if (row % 2 == 0 && row != 1) {
                c.setBackground(new Color(255, 255, 150));
            } else {
                c.setBackground(Color.WHITE);
            }
        } else {
            c.setBackground(new Color(255, 230, 255));
        }
        c.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
        return c;
    }
}

細胞之間繪制的線不是細胞本身的一部分。 他們被桌子繪制。 您可以使用以下命令關閉整個表格:

table.setShowGrid(false);

要僅禁用水平線或僅禁用垂直線:

table.setShowHorizontalLines(false);
table.setShowVerticalLines(false);

或者,您可以使用以下方法更改線條的顏色:

table.setGridColor(color)

我不知道你的代碼是如何編譯的,因為只有Swing組件可以有一個Border而Component類沒有setBorder()方法。

當我覆蓋默認渲染器時,我使用類似的東西:

Class CustomRenderer extends DefaultTableCellRenderer
{
    public Component getTableCellRendererComponent(
        JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        this.setBorder (BorderFactory.createBevelBorder (EtchedBorder.RAISED));
        return this;
    }
}

暫無
暫無

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

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