簡體   English   中英

JTable,Java中的列標題名稱

[英]Column header name in JTable, Java

我用數據庫中的數據填充JTable。 我已經將AbstractTableModel子類化並傳遞了對JTable的引用。 但是,如何在數據庫中提取列名並在JTable中將它們設置為“標題”?

提前致謝。

我已經有了這個,在控制台中顯示了頭名,但我在GUI中沒有列。 我已將JTable附加到選項卡式窗格中的選項卡。

@Override
public String getColumnName(int column) {
    try {
        System.out.println(dbhandler.getMetaData().getColumnName(column + 1));
        return dbhandler.getMetaData().getColumnName(column + 1);
    } catch (SQLException e) {
        e.printStackTrace();
        return "";
    }
}

但是,如何在數據庫中提取列名並在JTable中將它們設置為“標題”?

您的表模型需要實現getColumnName()方法。 然后,您需要首先使用數據創建表模型。 然后使用表模型創建JTable,表將為您構建列。

有關提供可重用表模型的代碼以及自動為表填充表的方法,請參閱數據庫中的表。

我根本沒有任何列,它是所有行...

您需要將表添加到JScrollPane(而不是JPanel),標題將顯示為滾動窗格的列標題視圖:

JScrollPane scrollPane = new JScrollPane( table );

你可以通過覆蓋AbstractTableModel的getColumnName(int i)方法來實現它,並將你的“頭”字符串放在這個方法中。

你如何獲得數據? 使用“SELECT * FROM foo”?

接口:java.sql.DatabaseMetaData

getColumns(String catalog,String schemaPattern,String tableNamePattern,String columnNamePattern)檢索指定目錄中可用的表列的說明。

你是否也覆蓋了getColumnCount?

private void getColumnsFromDB (Connection connection, String tname) throws SQLException
{
    String query = "SELECT * FROM " + tname;
    Statement stmt = connection.createStatement ();
    ResultSet res = stmt.executeQuery (query);
    ResultSetMetaData rsmd = res.getMetaData ();
    int numberOfColumns = rsmd.getColumnCount ();
    boolean searchable = rsmd.isSearchable (1);
    if (searchable)
    {
        for (int j = 1; j <= numberOfColumns; ++j)
        {
            Column col = new Column (tname, rsmd, j);
            // do something with Column (col);
        }
    }
}

類列,Ctor:

public Column (String t, ResultSetMetaData rsmd, int j) throws SQLException
{
    table = t;
    name = rsmd.getColumnName (j);
    schema = rsmd.getSchemaName (j);
    precision = -1;
    try
    {
        precision = rsmd.getPrecision (j);
    }
    catch (NumberFormatException nfe)
    {
        System.err.println ("nfe[gtd]: " + nfe + " " + t.getName () + "." + name);
    }
    scale = rsmd.getScale (j);
    catName = rsmd.getCatalogName (j);
    coltype = rsmd.getColumnType (j);
    coltypeName = rsmd.getColumnTypeName (j);
    int nulling = rsmd.isNullable (j);
    nullable = NULLTYP [nulling];
}

我希望它有效,因為這段代碼是更大代碼庫的一部分,而且很久以前我就用它了。

暫無
暫無

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

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