2012-10-13 1 views
1

텍스트 상자에 입력 된 데이터를 테이블에 추가하고 증가 된 ID를 유지하고 싶습니다. "추가"버튼을 클릭하면 데이터가 추가됩니다.JTextField에서 JTable로 데이터

import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 

    public class ex1 extends JFrame { 
    GridLayout experimentLayout = new GridLayout(3, 3); 
    private javax.swing.JButton jButton1,jButton2,jButton3; 
    private javax.swing.JLabel jLabel1, jLabel2, jLabel3; 

    private javax.swing.JTextField jTextField1,jTextField2,jTextField3; 

    String columns[] = {"ID","Name","Age","Gender"}; 
    Object data[][] = { 
      {"0","Tom",new Integer(20),"Male"}, 
      {"1","Tina", new Integer(18), "Female"}, 
      {"2","Raj",new Integer(19),"Male"} 

    }; 

    public void addComponentsToPane(final Container pane) { 
     final JPanel compsToExperiment = new JPanel(); 

     compsToExperiment.setLayout(experimentLayout); 
     JPanel controls = new JPanel(); 
     controls.setLayout(new GridLayout(8, 3)); 

     jLabel1 = new javax.swing.JLabel("Name: "); 
     jLabel2 = new javax.swing.JLabel("Age: "); 
     jLabel3 = new javax.swing.JLabel("Gender: "); 
     jTextField1 = new javax.swing.JTextField(); 
     jTextField2 = new javax.swing.JTextField(); 
     jTextField3 = new javax.swing.JTextField(); 
     jButton1 = new javax.swing.JButton("Add"); 
     jButton2 = new javax.swing.JButton("Next"); 
     jButton3 = new javax.swing.JButton("Per"); 

     compsToExperiment.add(jLabel1); 
     compsToExperiment.add(jLabel2); 
     compsToExperiment.add(jLabel3); 

     compsToExperiment.add(jTextField1); 
     compsToExperiment.add(jTextField2); 
     compsToExperiment.add(jTextField3); 
     compsToExperiment.add(jButton1); 

     JTable table = new JTable(data,columns); 
     controls.add(table.getTableHeader()); 
     controls.add(table); 
      pane.add(compsToExperiment, BorderLayout.NORTH); 
     pane.add(controls, BorderLayout.CENTER); 
    } 

    /** 
    * Create the GUI and show it. For thread safety, this method is invoked 
    * from the event dispatch thread. 
    */ 
    private static void createAndShowGUI() {   
     ex1 frame = new ex1();  
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.addComponentsToPane(frame.getContentPane()); 
     frame.setSize(500,500); 
     //frame.pack();  
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 

     try {   
      UIManager.setLookAndFeel(
       "javax.swing.plaf.metal.MetalLookAndFeel"); 
     } catch (UnsupportedLookAndFeelException ex) { 
      ex.printStackTrace(); 
     } catch (IllegalAccessException ex) { 
      ex.printStackTrace(); 
     } catch (InstantiationException ex) { 
      ex.printStackTrace(); 
     } catch (ClassNotFoundException ex) { 
      ex.printStackTrace(); 
     } 
     /* Turn off metal's use of bold fonts */ 
     UIManager.put("swing.boldMetal", Boolean.FALSE); 

     // Schedule a job for the event dispatch thread: 
     // creating and showing this application's GUI. 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGUI(); 
      } 
     }); 
    } 
} 

본인은이 설계가 모든 난 그냥 자바를 배우기 시작했습니다 여기 저기 만들어 수 있습니다 개선을 지적 주시기 알고. 는 입력 데이터를 추가하려면 사전 :

답변

3

당신을 감사합니다 JTextFields이 경우 jButton1에, 귀하의 추가 버튼에 ActionListener을 등록해야합니다.

String nextRowId = Integer.toString(model.getRowCount()); 
model.addRow(new Object[] { 
       nextRowId, 
       jTextField1.getText(), 
       jTextField2.getText(), 
       jTextField3.getText() }); 

다음

가 추천 : 당신의 ActionListener 당신이 가진 것의 actionPerformed 방법

DefaultTableModel model = new DefaultTableModel(data, columns); 

:

당신은 DefaultTableModel로 변경 가능한 모델을 사용할 수있는 테이블 모델에 항목을 추가하려면 :

  • 보다 의미있는 이름을 사용하십시오. 변수.
  • 잠재적으로 많은 양의 데이터를 저장할 수있는 더 많은 공간을 JTable에 할당하십시오. 또한 JScrollPane 안에 넣으십시오.
+0

더 많은 유연성을 위해'AbstractTableModel'의 사용을 제안 하겠지만, OP의 겉보기 경험 수준을 고려할 때'DefaultTableModel'가 더 충분할 것입니다. +1 – MadProgrammer