【问题标题】:How do I remove the A on the top of the JTable inside a JScrollPane?如何删除 JScrollPane 内 JTable 顶部的 A?
【发布时间】:2014-10-23 20:20:04
【问题描述】:

为什么表格顶部有一个A?

我在 JScrollPane 中放置了一个 JTable 以使其可滚动。 有没有我需要放置的方法? 我没有放字母 A,所以我无法追踪。

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.BoxLayout;
import javax.swing.JTable;
import javax.swing.border.LineBorder;
import java.awt.Color;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;

public class Rawr {

    private JFrame frame;
    private JScrollPane scrollPane;
    private JTable table;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Rawr window = new Rawr();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public Rawr() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        frame.getContentPane().add(panel, BorderLayout.CENTER);
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

        scrollPane = new JScrollPane();
        scrollPane.setToolTipText("");
        scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        panel.add(scrollPane);

        table = new JTable(100, 1);
        table.setBorder(new LineBorder(new Color(0, 0, 0)));
        scrollPane.setViewportView(table);
    }
}

如何删除它?谢谢!

【问题讨论】:

  • JTable 构造函数的文档:public JTable(int numRows, int numColumns) 使用 DefaultTableModel 构造一个具有 numRows 和 numColumns 个空单元格的 JTable。列将具有“A”、“B”、“C”等形式的名称。

标签: java swing user-interface jtable jscrollpane


【解决方案1】:

使用以下方法显式设置列名:

String[] colNames = new String[]{"Your Column Name"};
DefaultTableModel defaultTableModel = new DefaultTableModel(colNames, 100);
table = new JTable(defaultTableModel);

如果您使用new JTable(100, 1) 创建表,您将看到A、B 等列标题,因为构造函数 javadoc 说:

使用DefaultTableModel 构造带有numRows 和numColumns 的空单元格的JTable。

由于JTable 构造函数没有关于列标题的任何信息。它只能创建一个不知道任何列标题名称的DefaultTableModel。 DefaultTableModel 扩展 AbstractTableModel 和 AbstractTableModel.getColumnName() 的 javadoc 说

使用电子表格约定返回列的默认名称:A、B、C、... Z、AA、AB 等。如果找不到column,则返回一个空字符串。

【讨论】:

    【解决方案2】:

    在创建表后添加以下代码。

    String[] columns = new String[]{"列名"}; ((DefaultTableModel)table.getModel()).setColumnIdentifiers(columns);

    【讨论】:

      【解决方案3】:

      如何删除它?

      JTable 旨在显示数据,并带有标题以描述列中的数据。

      由于您只有一列数据,如果您不想要标题,请不要使用 JTable。相反,您可以使用JList。

      阅读 How to Use Lists 上的 Swing 教程部分,了解更多信息和示例。

      【讨论】:

        猜你喜欢
        • 2020-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-25
        • 1970-01-01
        • 2016-04-28
        • 1970-01-01
        相关资源
        最近更新 更多