当前位置: 首页 > 知识库问答 >
问题:

如何删除Jtable标题网格线

商俊智
2023-03-14

如何删除Jtable标题网格线,我可以从行中删除网格线,但它在Jtable标题中给出了网格线。是否可以删除Jtable标题网格线。

共有3个答案

华烈
2023-03-14

也许你可以使用UIManager做到这一点

UIManager.getDefaults().put("TableHeader.cellBorder" , BorderFactory.createEmptyBorder(0,0,0,0));

注意:这不会更改一个 JTable 的 TableHeader 单元格边框,但会更改应用程序中所有 JTable 的 TableHeader 单元格边框。这是因为您正在更改管理整个应用程序的外观的属性。因此,所有TableHeader.cellBorder都被修改了。

程博学
2023-03-14

请参阅不带网格线的 JTableHeader:

table.setShowGrid(false);
table.setIntercellSpacing(new Dimension(0,0));

您可能还需要查看之前(更长时间)的答案。

下面的代码(来自上面的链接)显示了一个没有网格线的< code>jTable(在表格或标题中)

import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;

public class TableHeaderTest
{
    public static void main(String[] args)
    {
        String[] headers = {
            "column 1", "column 2", "column 3", "column 4"
        };
        String[][] data = new String[4][4];
        for(int i = 0; i < data.length; i++)
            for(int j = 0; j < data[0].length; j++)
            {
                data[i][j] = "item " + (i * data[0].length + j + 1);
            }
        JTable table = new JTable(data, headers);
        for(int i = 0; i < headers.length; i++)
        {
            TableColumn column = table.getColumnModel().getColumn(i);
            column.setHeaderRenderer(new HeaderRenderer());
        }
        table.setShowGrid(false);
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().add(new JScrollPane(table));
        f.setSize(400,300);
        f.setLocation(200,200);
        f.setVisible(true);
    }
}

class HeaderRenderer extends JLabel implements TableCellRenderer
{
    public Component getTableCellRendererComponent(JTable table,
                                                   Object value,
                                                   boolean hasFocus,
                                                   boolean isSelected,
                                                   int row,
                                                   int col)
    {
        setText(value.toString());
        setBorder(BorderFactory.createEmptyBorder(2,2,2,2));
        return this;
    }
}
薄哲
2023-03-14

是否可以删除JTable标头网格行。

只是好奇:你为什么要这样做?

现在的答案是:不,它不是。表头呈现依赖于外观和感觉提供的 TableHeaderUI 实现以及 JTableHeader 的呈现器。您可以告诉渲染器您不需要边框,但如果L

如其他答案中所述,尽管存在(糟糕的)变通方法,但所有这些方法都有其局限性。

为了使表格标题的呈现尽可能与原始呈现最相似,这意味着没有丢失列DnD效果,应用排序时的图标等,我会使用我自己的渲染器,如下所示:

public class TableHeaderRenderer implements TableCellRenderer {

    private final TableCellRenderer baseRenderer;

    public TableHeaderRenderer(TableCellRenderer baseRenderer) {
        this.baseRenderer = baseRenderer;
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        JComponent c = (JComponent)baseRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        c.setBorder(new EmptyBorder(2,2,2,2));
        return c;
    }
}

然后可以使用默认渲染器作为新渲染器的基础,如下所示:

JTable table = new JTable(5, 5);
table.setAutoCreateRowSorter(true);
table.setShowGrid(false);

TableCellRenderer baseRenderer = table.getTableHeader().getDefaultRenderer();
table.getTableHeader().setDefaultRenderer(new TableHeaderRenderer(baseRenderer));

然而,其功能取决于L

正如@blackbishop所述,您可以使用UIManager设置一个属性来告诉L

 类似资料:
  • 如何注释我header.php中的标语? 我正在使用2014年的主题,并试图遵循WordPress codex中的元标签说明。要生成一个描述元标记,它会指示您将描述添加到标语中。但是这个标语显示在我打开网页的每个窗口/选项卡的顶部(以及我的网站名称)。要隐藏标语,WordPress建议“删除或注释掉标头区域的标签”我做这个有困难。我在header.php?中到底要评论什么,我在标题中没有看到任何带

  • 我有几个Kafka的题目作为测试。现在我想通过清理我的Kafka主题列表来把它们全部除掉。我设置了变量,然后停止并重新启动zookeeper和kafka服务器。但什么也帮不了我。主题仍然存在,“标记为删除”。我读了这个问题,但没有找到任何答案。否则,这里建议手动移除任何主题。但我该怎么做呢?在故事的结尾,手动或通过命令行,我如何永久删除Kafka主题?

  • 我正在用java创建一个没有数据库的库系统程序。(直接使用文件)。 我在删除jtable中的一行时遇到了一个奇怪的问题(也就是从文件中删除)。 有时当我在表格中选择一行并单击删除按钮时,不止一行被删除了! 大多数时候它也能正常工作!! 我的代码: 我的模型类: 用户信息类别: 我的文本文件:

  • 问题内容: 我正在尝试隐藏JTable的网格线,但没有结果。即使尝试更改网格线的颜色也不起作用。这是我的代码: 始终绘制白色网格线。我被困在这里… 我是否必须实现自定义视口才能摆脱这种情况? 预先感谢,亚历克斯 问题答案: 你必须设置两个东西 禁用网格显示 零行/列小区间间距 在代码中: 或使用JXTable(来自SwingX项目)为您执行此操作:

  • 问题内容: 我正在使用以下代码进行练习, http://docs.oracle.com/javase/tutorial/uiswing/examples/layout/BorderLayoutDemoProject/src/layout/BorderLayoutDemo.java 我也加 在createAndShowGUI()方法中, 而且,我希望此窗口不具有标题栏,关闭和最小化按钮。 我尝试了以

  • 我在一个文件夹中有两个csv文件,如下所示:文件1: 文件 2: 我想从文件夹中读取文件,然后删除标题名称(col1,col2),然后将行更改为列,将列更改为行,这意味着转置它并将这两个文件合并到一个新的csv文件中,如下所示: