当前位置: 首页 > 知识库问答 >
问题:

从JTable获取DefaultTableModel

童花蜂
2023-03-14

我想从JTable获取DefaultTableModel,然后添加Column。我在JTable中搜索,但只找到了getModel()方法,然后无法添加列。最后,假设我在JTable中使用Binding方法设置日期,然后没有DefaultTableModel,我想添加列内容JButton添加到我的JTable中。

共有1个答案

诸葛嘉熙
2023-03-14

>

  • 同样,您确定不能根据从MyTable.getModel()初始化的DefaultTableModel向JTable添加新的TableColumn吗

    编辑现在我可以在不强制转换的情况下看到(DefaultTableModel model=(DefaultTableModel)Table.getModel();)JTable可以返回TableModel,并且没有AddColumn()

    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Stack;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.WindowConstants;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableColumn;
    import javax.swing.table.TableColumnModel;
    
    public class TableRowHeight {
    
        private static final long serialVersionUID = 1L;
        private JFrame frame = new JFrame("p*s*s*s*s*t*t");
        private String[] columnNames = {"one", "two", "Playing with", "four", "five",};
        private String[][] data = {
            {"aaaaaa", "bbbbbb", "cccccc", "dddddd", "eeeeeee",},
            {"bbbbbb", "cccccc", "dddddd", "eeeeeee", "aaaaaa",},
            {"cccccc", "dddddd", "eeeeeee", "aaaaaa", "bbbbbb",},
            {"dddddd", "eeeeeee", "aaaaaa", "bbbbbb", "cccccc",},
            {"eeeeeee", "aaaaaa", "bbbbbb", "cccccc", "dddddd",}};
        private JTable table = new JTable(new DefaultTableModel(data, columnNames));
        private TableColumnModel tcm = table.getColumnModel();
        private Stack<TableColumn> colDeleted = new Stack<TableColumn>();
        private JButton restoreButton = new JButton("Restore Column Size");
        private JButton hideButton = new JButton("Set Column Size to Zero");
        private JButton deleteButton = new JButton("Delete Column");
        private JButton addButton = new JButton("Restore Column");
        private JButton addNewButton = new JButton("Add New Column");
        private int i = 1;
    
        public TableRowHeight() {
            table.setRowMargin(4);
            table.setRowHeight(30);
            table.setFont(new Font("SansSerif", Font.BOLD + Font.PLAIN, 20));
            JScrollPane scrollPane = new JScrollPane(table);
            for (int i = 0; i < (tcm.getColumnCount()); i++) {
                tcm.getColumn(i).setPreferredWidth(150);
            }
            table.setPreferredScrollableViewportSize(table.getPreferredSize());
            restoreButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    tcm.getColumn(2).setPreferredWidth(100);
                }
            });
            hideButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    tcm.getColumn(2).setPreferredWidth(000);
                }
            });
            deleteButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (table.getColumnCount() > 0) {
                        TableColumn colToDelete = table.getColumnModel().getColumn(table.getColumnCount() - 1);
                        table.removeColumn(colToDelete);
                        table.validate();
                        colDeleted.push(colToDelete);
                        addButton.setEnabled(true);
                    } else {
                        deleteButton.setEnabled(false);
                    }
                }
            });
            addButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if (colDeleted.size() > 0) {
                        table.addColumn(colDeleted.pop());
                        table.validate();
                        deleteButton.setEnabled(true);
                    } else {
                        addButton.setEnabled(false);
                    }
                }
            });
            addNewButton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    DefaultTableModel model = (DefaultTableModel) table.getModel();
                    model.addColumn("New Column " + i);
                    i++;
                }
            });
            JPanel btnPanel = new JPanel();
            btnPanel.add(hideButton);
            btnPanel.add(restoreButton);
            btnPanel.add(deleteButton);
            btnPanel.add(addButton);
            btnPanel.add(addNewButton);
            frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            frame.add(scrollPane, BorderLayout.CENTER);
            frame.add(btnPanel, BorderLayout.SOUTH);
            frame.pack();
            frame.setLocation(150, 150);
            frame.setVisible(true);
        }
    
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    TableRowHeight frame = new TableRowHeight();
                }
            });
        }
    }
    

  •  类似资料:
    • 问题内容: 我使用以下代码将单元格渲染更改为显示图像而不是文本: 现在,我希望能够获取中的每一行的图像,以便将其保存在数据库中。我该怎么办? 问题答案: 我无法抗拒这样的例子

    • 问题内容: 如何从JTable索引获取行?我查看了成员函数,但没有类似getRowAt的东西。有人可以帮忙吗? 问题答案: 表没有“行”对象,因此使用getRow方法无法获得任何结果。 您可以要求获取各个值,将其用于每一列,然后获得完整的行。

    • 我有一个JTable对象。如何获取对JTable所在的JScrollPane的引用?

    • 我有一个JTable,我可以在其中添加具有几个属性的用户,如年龄、名称等。这起作用了,用户被添加到我的arraylist和JTable中。现在我想要的是,当我选择JTable行时,能够获得存储在用户的arrayList中的对象,以便我可以修改或删除它们。 有谁能帮我一下吗?谢谢!

    • 我在将表模型(在模型中)与我的JTable(在视图中)分开时遇到问题,我的模型包含使用方法从数据库获取数据所需的查询: 型号.java View.java 这就是我遇到问题的部分: Controller.java 显然,< code>JTable不能改变它第一次获得的< code>DefaultTbaleModel对象,所以当我执行时,我总是得到一个空的JTable,所以简而言之,我不能在我的<