当前位置: 首页 > 面试题库 >

如何在JTable中隐藏网格线

松安民
2023-03-14
问题内容

我正在尝试隐藏JTable的网格线,但没有结果。即使尝试更改网格线的颜色也不起作用。这是我的代码:

    // build the table
tableView = new JTable(ttm);
//Specifify the selection Listener and model
listSelectionModel = tableView.getSelectionModel();
listSelectionModel.addListSelectionListener(new SharedListSelectionHandler(tableView));
tableView.setSelectionModel(listSelectionModel);

//Add a mouse listener to our table and implement double click event
tableView.addMouseListener(new MouseAdapter(){

    public void mouseClicked(MouseEvent e){

        //If double click in a message show the Message Details window
        if (e.getClickCount() == 2){

            showMessageDetail();
            }
    }


} );

// set my own renderer
CustomCellRenderer mtr = new CustomCellRenderer();
tableView.setDefaultRenderer(Object.class, mtr);
// table properties
tableView.setGridColor(Color.black);
tableView.setShowGrid(false);
//tableView.setShowVerticalLines(false);
//tableView.setShowHorizontalLines(false);
tableView.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//hide header
tableView.setTableHeader(null);
// hide the id column
String columName = tableView.getColumnName(TableModel.COLUMN_ID);
tableView.getColumn(columName).setMaxWidth(0);
tableView.getColumn(columName).setMinWidth(0);
tableView.getColumn(columName).setWidth(0);
//load the messages in the table
loadMessages();
//adjust column width
tableView = autoResizeColWidth(tableView, ttm);


    public class CustomCellRenderer extends JPanel implements TableCellRenderer {
/**
 * First gradient color
 */
private static final Color COLOR_1 = new Color(255, 255, 255, 200);
/**
 * Second gradient color
 */
private static final Color COLOR_2 = new Color(255, 0, 255, 200);
/**
 * Controls gradient direction
 */
private static final float SIDE = 50;

private GradientPaint gradientPaint = new GradientPaint(0, 0, COLOR_1, SIDE, SIDE, COLOR_2, true);

private JLabel label = new JLabel();

    public CustomCellRenderer() {
        setOpaque(true);
        setLayout(new BorderLayout());
        add(label, BorderLayout.CENTER);
        label.setHorizontalAlignment(SwingConstants.CENTER);
    }

    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        label.setText(value.toString());
        return this;
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.setPaint(gradientPaint);
        g2.fillRect(0, 0, getWidth(), getHeight());
    }
    }

始终绘制白色网格线。我被困在这里…

我是否必须实现自定义视口才能摆脱这种情况?

预先感谢,亚历克斯


问题答案:

你必须设置两个东西

  • 禁用网格显示
  • 零行/列小区间间距

在代码中:

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

或使用JXTable(来自SwingX项目)为您执行此操作:

xTable.setShowGrid(false, false);


 类似资料:
  • 当您向网格面板添加一些行和列时,Visual Studio2019默认情况下会在XAML Designer视图中显示一些布局指示线,这在某些情况下会干扰我的视线。 有办法关闭它吗?

  • 我在Windows上使用MySQL Workbench。我执行一个查询并得到结果。是否有任何选项或热键可以隐藏/查看结果网格而无需一次又一次地执行查询? 请在这件事上帮助我。

  • 我在android应用程序中使用MPAndroidChart-折线图。我想从背景中删除网格线。如何从背景中删除网格线? 库:GitHub上的MPAndroidChart

  • 问题内容: 通过浏览器的“查看源代码”功能查看源代码时,是否可以从网页的html隐藏Javascript代码? 我知道可以对代码进行混淆,但我希望将其 隐藏 在视图源功能中。 问题答案: 我不确定其他人是否真的直接解决了您的问题,即正在从浏览器的“查看源代码”命令中查看代码。 就像其他人所说的那样,没有办法保护要在浏览器中运行的javascript免受确定的查看者的攻击。如果浏览器可以运行它,那么

  • 问题内容: 我有一些HTML表格,其中文本数据太大而无法容纳。因此,它可以垂直扩展单元格以适应此情况。因此,现在发生溢出的行的高度是数据量较小的行的两倍。这是无法接受的。如何强制表格具有相同的行高? 这是一些重现该问题的标记。表格仅应为一行的高度,并隐藏溢出的文字。 问题答案: 需要在单元格上和单元格上指定两个属性。您还需要将移至单元格

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