繁体   English   中英

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

[英]How to add new Row by clicking in a jTable?

我创建了一个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);

    }

用户填写TextField,然后单击“确定”,然后在jTable的选定行中设置值。

问题是如果用户单击jTable,我想为输入创建新行

编辑:

这就是我创建jTable和Table模型的方式

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);

要向jTable添加一行,您可以简单地使用它。 请记住,输入必须是一个数组。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM