2012-12-02 77 views
0

我有一个JTable列出了从SQL查询返回的客户信息。如何设置表格,以便用户可以选择一行,或者双击或勾选复选框,然后使用所选客户名称填充JTextField?(Java)用户选择JTable行

回答

1

尝试阅读关于如何使用JTable的Java Swing教程。基本上,你写一个监听器用于行选择:

How to Use Tables

+0

错了,对不起,我错了。我想说他会写一个听众。 – andreih

+0

+1链接不错 – vels4j

3

下面示例代码去FWD

public class PersonTable { 

    JTable table; 

    public PersonTable() { 
     final MyTableModel myTableModel = new MyTableModel(); 
     myTableModel.fill(); 

     table = new JTable(myTableModel); 
     JFrame frame = new JFrame("Persons"); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     JPanel panel = new JPanel(); 
     JPanel panel1 = new JPanel(); 
     final JTextField t1 = new JTextField(10); 

     table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { 
      @Override 
      public void valueChanged(ListSelectionEvent e) { 
       int selectedRow = table.getSelectedRow(); 
       Object valueAt = myTableModel.getValueAt(selectedRow, 0); 
       t1.setText((String) valueAt); 
      } 
     }); 

     panel1.add(new JLabel("Name"), BorderLayout.EAST); 
     panel1.add(t1, BorderLayout.WEST); 
     panel.add(new JScrollPane(table), BorderLayout.NORTH); 
     panel.add(panel1, BorderLayout.SOUTH); 
     frame.add(panel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public class MyTableModel extends AbstractTableModel { 

     String[] columnName = new String[]{"Customer Name", "Phone Number", "Area"}; 
     String[][] valueA = null; 

     public void fill() { 

      valueA = new String[3][columnName.length]; 
      for (int i = 0; i < 3; i++) { 
       valueA[i][0] = "Name" + i; 
       valueA[i][1] = "989481125" + i; 
       valueA[i][2] = "Area No" + i; 
      } 
     } 

     @Override 
     public int getRowCount() { 
      return valueA.length; 
     } 

     @Override 
     public String getColumnName(int column) { 
      return columnName[column]; 
     } 

     @Override 
     public int getColumnCount() { 
      return columnName.length; 
     } 

     @Override 
     public Object getValueAt(int rowIndex, int columnIndex) { 
      return valueA[rowIndex][columnIndex]; 
     } 
    } 

    public static void main(String[] args) { 
     new PersonTable(); 
    } 
}