2015-06-27 12 views
0

我已經創建,其中Java程序:如何通過單擊jTable添加新行?

用戶可以通過使用自定義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和表型號

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

使用'TableModel'來添加行。你使用的是什麼類型的TableModel?也許看看[如何使用表格](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html) – MadProgrammer

+0

@MadProgrammer我認爲這是默認的Table Model。它在這裏說,**'jTable1.setModel(new javax.swing.table.DefaultTableModel(....'** –

+0

@trashgod您向我們展示的喜歡說,_創建動態表添加新的條目**與按鈕** 。我想要的是創建一個新的行輸入,如果用戶**「點擊」** jTable。我想我會嘗試MadProgrammer的建議 –

回答

0

要添加一行到jTable,你可以簡單地使用它。請記住,輸入必須是一個數組。

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