Java 完全删除jtable网格(单元格边框)

Java 完全删除jtable网格(单元格边框),java,swing,jtable,border,cell,Java,Swing,Jtable,Border,Cell,如何完全删除swing JTable中单元格周围的边框,使单元格之间没有间隙? 以下是我尝试过的: table.setShowGrid(false); table.setShowVerticalLines(false); table.setShowHorizontalLines(false); 以及编写单元渲染器并使用: setBorder(BorderFactory.createEmptyBorder(0,0,0,0)); 对于每个单独的单元 但结果是细胞之间的线被删除,但它们之间留下1像

如何完全删除swing JTable中单元格周围的边框,使单元格之间没有间隙? 以下是我尝试过的:

table.setShowGrid(false);
table.setShowVerticalLines(false);
table.setShowHorizontalLines(false);
以及编写单元渲染器并使用:

setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
对于每个单独的单元


但结果是细胞之间的线被删除,但它们之间留下1像素的差距

您只需将边框颜色设置为单元格的背景色即可。另外,请看一下这些例子

以及编写单元渲染器并使用:

setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
一切都取决于渲染器返回的内容,但没有渲染器对我有效

  • setIntercellSpacing()

  • setShowGrid()

import java.awt.*;
导入javax.swing.*;
导入javax.swing.table.DefaultTableModel;
公共类表格示例{
公共表格示例(){
对象[][]数据1=新对象[50][5];
对于(int i=0;i
如果列模型不是自动生成的(没有数据绑定),您可以在JTable中使用这些方法来删除网格

但如果使用数据绑定创建列模型,则会遇到问题。即使您调用这些方法,它们的每列边距仍为1像素的白色间隔

可以使用自定义DefaultTableColumnModel删除该列边距

 private class CustomDefaultTableColumnModel extends DefaultTableColumnModel{

 @Override
 public void setColumnMargin(int newMargin) {
    //Always set ColumnMargin to zero.
    //Because after the column data binding its internally set one as ColumnMargin.
   //That course to paint white color grid.
   //To stop we override the setColumnMargin and pass zero to ColumnMargin.
  super.setColumnMargin(0);
  }
}
然后可以将自定义表列模型添加到表中

 setColumnModel(new CustomDefaultTableColumnModel());

请注意,在设置列模型后(如果您选择这样做),必须调用
setIntercellSpacing()
方法,因为它基本上对当前
TableColumnModel
setRowMargin()调用
setColumnMargin()
JTable
上。这是避免在所选行中使用令人讨厌的白色1像素网格的最佳解决方案。也许我会建议重写getColumnMargin以始终返回0,而不是重写setColumnMargin方法,但它非常接近。
 setColumnModel(new CustomDefaultTableColumnModel());