如何通过单击jTable添加新行?

时间:2015-06-27 02:41:09

标签: java swing jtable mouselistener defaulttablemodel

我创建了一个java程序,其中包含:

用户可以使用自定义JOption showConfirmDialog框输入数据(添加了面板和文本框)

我为用户输入使用了单独的方法

public static String[] MultiInput(){

  JTextField idField = new JTextField(5);
  JTextField nameField = new JTextField(5);
  JTextField addressField = new JTextField(5);
  JTextField ageField = new JTextField(5);

  JPanel myPanel = new JPanel();
  myPanel.add(new JLabel("ID number:"));
  myPanel.add(idField);
  myPanel.add(Box.createHorizontalStrut(15)); // for  spacing
  myPanel.add(new JLabel("Name:"));
  myPanel.add(nameField);
  myPanel.add(Box.createHorizontalStrut(15)); // for  spacing 
  myPanel.add(new JLabel("Address:"));
  myPanel.add(addressField);
  myPanel.add(Box.createHorizontalStrut(15)); // for  spacing
  myPanel.add(new JLabel("Age:"));
  myPanel.add(ageField);

  int result = JOptionPane.showConfirmDialog(null, myPanel, 
           "Please Enter Data Here:", JOptionPane.OK_CANCEL_OPTION);
  if (result == JOptionPane.OK_OPTION) {
      String[] Input={idField.getText(),nameField.getText(),addressField.getText(),ageField.getText()};

      return Input;
  }
    return null;
}

并在用户单击jTable上的行

后调用此方法
 private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {        

   int row = jTable1.getSelectedRow();
    String[] input;
    input =MultiInput(); // get input from user

    for(int ctr=0;ctr<jTable1.getColumnCount();ctr++){
       jTable1.setValueAt(input[ctr], row, ctr);

    }

用户填写TextFields,点击“OK”后,设置jTable中所选行的值。

问题是如果用户点击jTable

,我想为输入创建一个新行

编辑:

这就是我创建jTable和Table Model

的方法
final DefaultTableModel model = new javax.swing.table.DefaultTableModel(
new Object [][] {                                                   
    {null, null, null, null},
    {null, null, null, null},
    {null, null, null, null},
    {null, null, null, null}

},
new String [] {
    "idnum", "name", "adress", "age"
}
    );
jTable1 = new javax.swing.JTable();

jTable1.setAutoCreateRowSorter(true);

jTable1.setModel(model);

jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
 public void mouseClicked(java.awt.event.MouseEvent evt) {
    jTable1MouseClicked(evt);
 }
});

jScrollPane1.setViewportView(jTable1);

1 个答案:

答案 0 :(得分:0)

要向jTable添加行,您只需使用它即可。请记住,输入必须是数组。

DefaultTableModel tableModel = (DefaultTableModel) table.getModel(); tableModel.addRow(input);