【问题标题】:JTable add/remove rows to custom table model (updating table display)JTable 向自定义表格模型添加/删除行(更新表格显示)
【发布时间】:2010-08-16 23:16:29
【问题描述】:

有没有人有一个很好的例子来说明如何使用自定义表模型从 JTable 中添加/删除行?我似乎遇到的问题是如何在我添加或删除项目时让表格不断更新。

这里真正简单的想法是在我的表格上方有一个添加和删除按钮,允许用户即时更改表格。

【问题讨论】:

  • “自定义表格模型”是指extends DefaultTableModel 还是extends AbstractTableModel

标签: java swing jtable


【解决方案1】:

这是添加行的示例:

import java.awt.BorderLayout;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JViewport;
import javax.swing.SwingUtilities;
import javax.swing.table.AbstractTableModel;

public class RowAdder extends JFrame {

  final SimpleModel tableData = new SimpleModel();
  JTable table = new JTable(tableData);

  public static void main(String[] args) {
    RowAdder ra = new RowAdder();
    ra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ra.setSize(400, 300);
    ra.setVisible(true);
  }

  public RowAdder() {
    final JTextField textField  = new JTextField();
    setLayout(new BorderLayout());
    add(new JScrollPane(table), BorderLayout.CENTER);
    textField.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        tableData.addText(textField.getText());
        textField.setText("");
      }
    });
    add(textField, BorderLayout.SOUTH);
  }

}
class SimpleModel extends AbstractTableModel {

  Vector textData = new Vector();

  public void addText(String text) {
    textData.addElement(text);
    fireTableDataChanged();
  }

  public int getRowCount() {
    return textData.size();
  }

  public int getColumnCount() {
    return 3;
  }

  public Object getValueAt(int row, int column) {
    return textData.elementAt(row);
  }

}

以上参考来自:http://www.java2s.com/Tutorial/Java/0240__Swing/AddrowstoaTable.htm

查看本关于 JTable 的教程:

http://download.oracle.com/javase/tutorial/uiswing/components/table.html

专门用于表模型检查:

http://download.oracle.com/javase/tutorial/uiswing/components/table.html#data

我认为本教程应该回答你所有的问题。

【讨论】:

    【解决方案2】:

    您必须通知 JTable 对象有关基础表模型的更改。该表不是在观察模型而是在等待事件。

    每次更改(或一组更改)后,创建一个 TableModelEvent 并调用表 tableChanged 方法。

    【讨论】:

      猜你喜欢
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多