为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Jtable中动态添加列名称?

如何在Jtable中动态添加列名称?

炎炎设计 2021-06-07 13:39:06
我在我的项目中使用 Jtable,当按下 Tab 键时,会添加新列,但该列的名称不存在。它在那个地方显示一个空白我希望列名应该是 excel 格式,即。像excel列名应该是A,B,C等等。那我应该检查什么。private void datatypetableKeyPressed(java.awt.event.KeyEvent evt) {                                                 if (evt.getKeyCode() == KeyEvent.VK_TAB) {            addColumn();        }    } private void addColumn() {        DefaultTableModel model = (DefaultTableModel) datatypetable.getModel();        JTableHeader th = datatypetable.getTableHeader();        TableColumnModel tcm = th.getColumnModel();        TableColumn tc = tcm.getColumn(0);        if (model != null) {            Vector v = new Vector(1);            for (int j = 0; j < datatypetable.getRowCount(); j++) {                tc.setHeaderValue("???");                v.add("");            }            model.addColumn(v);            th.repaint();        }    }这是我向 jtable 添加新列的代码。
查看完整描述

3 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

我已经这样做了并且它的工作......希望我的回答可以帮助任何人......


private void datatypetableKeyPressed(java.awt.event.KeyEvent evt) {                                         

            if (evt.getKeyCode() == KeyEvent.VK_ENTER) {

                int col = datatypetable.getSelectedColumn();

                int row = datatypetable.getSelectedRow();

                int colCount = datatypetable.getColumnCount();

                int rowCount = datatypetable.getRowCount();

                col++;

                if (col >= colCount) {

                    col = 0;

                    row++;

                }

                if (row >= rowCount) {

                    row = 0;

                }

    //            datatypetable.getSelectionModel().setSelectionInterval(row, row);

    //            datatypetable.getColumnModel().getSelectionModel().setSelectionInterval(col, col);

    //            datatypetable.editCellAt(row, col);

                if (row == rowCount - 1) {

                    addRow();

                    datatypetable.scrollRectToVisible(datatypetable.getCellRect(rowCount, 0, true));

                }

            }


            if (evt.getKeyCode() == KeyEvent.VK_TAB) {

                int col = datatypetable.getSelectedColumn();

                int row = datatypetable.getSelectedRow();

                int colCount = datatypetable.getColumnCount();

                int rowCount = datatypetable.getRowCount();

                col++;

                if (col >= colCount) {

                    col = 0;

                    row++;

                }

                if (row >= rowCount) {

                    row = 0;

                }

    //            datatypetable.getSelectionModel().setSelectionInterval(row, row);

    //            datatypetable.getColumnModel().getSelectionModel().setSelectionInterval(col, col);

    //            datatypetable.editCellAt(row, col);

                if (col == colCount - 1) {

                    addColumn();

                    int selectedRow = 0;

                    datatypetable.editCellAt(selectedRow, 0);

                    datatypetable.setSurrendersFocusOnKeystroke(true);

                    datatypetable.getEditorComponent().requestFocus();

                    datatypetable.scrollRectToVisible(datatypetable.getCellRect(colCount, 0, true));

                }

            }


        }  



    private void addRow() {

            DefaultTableModel model = (DefaultTableModel) datatypetable.getModel();


            if (model != null) {

                Vector v = new Vector(1);

    //            for (int j = 0; j <= datatypetable.getColumnCount(); j++) {

    //                v.add("");

    //            }

                v.add("");

                model.addRow(v);

            }

        }


        private void addColumn() {

            DefaultTableModel model = (DefaultTableModel) datatypetable.getModel();


            if (model != null) {

                Vector v = new Vector(1);

    //            for (int j = 0; j < datatypetable.getRowCount(); j++) {

    //                v.add("");

    //            }

                v.add("");

                model.addColumn(Character.toString((char) ('A' + datatypetable.getColumnCount())), v);

            }

        }


查看完整回答
反对 回复 2021-06-30
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

您可以像这样添加列。


DefaultTableModel model = new DefaultTableModel();


JTable table = new JTable(model);

//add you dynamic column name logic. ex, I am adding with i loop variable.

for( int i=1; i<5;i++){

model.addColumn("Col"+i);

}

希望你有办法添加列。


查看完整回答
反对 回复 2021-06-30
  • 3 回答
  • 0 关注
  • 228 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信