2011-05-21 31 views
2

你好,我想選擇一行,然後我點擊按鈕,我想顯示這一行!得到選定的行

public class TableDemo extends JPanel { 

    static List<String[]> rosterList = new ArrayList<String[]>(); 
    int[] rowIndices; 

    public TableDemo() { 
     super(new BorderLayout(3, 3)); 

     final JTable table = new JTable(new MyTableModel()); 
     table.setPreferredScrollableViewportSize(new Dimension(500, 70)); 
     table.setFillsViewportHeight(true); 

     final JButton button = new JButton("Buy it"); 

     JPanel buttonCenter = new JPanel(new FlowLayout(FlowLayout.CENTER)); 

     button.addActionListener(new ActionListener() { 

      public void actionPerformed(ActionEvent e) { 
       button.addActionListener(new ActionListener() { 

        public void actionPerformed(ActionEvent e) { 
         if (table.getColumnSelectionAllowed() 
          && !table.getRowSelectionAllowed()) { 
          // Column selection is enabled 
          // Get the indices of the selected columns 
          int[] vColIndices = table.getSelectedColumns(); 
         } else if (!table.getColumnSelectionAllowed() 
          && table.getRowSelectionAllowed()) { 
          // Row selection is enabled 
          // Get the indices of the selected rows 
          rowIndices = table.getSelectedRows(); 
         } 
         if (rowIndices.length > 0) { 
          for (int i = 0; i <= rowIndices.length; i++) { 
           System.out.println(rowIndices[i]); 
          } 
         } 
        } 
       }); 
      } 
     }); 

     buttonCenter.add(button); 
     add(buttonCenter, BorderLayout.SOUTH); 

     //Create the scroll pane and add the table to it. 
     JScrollPane scrollPane = new JScrollPane(table); 

     //Add the scroll pane to this panel. 
     add(scrollPane, BorderLayout.CENTER); 
     //create a button 

     // add a nice border 
     setBorder(new EmptyBorder(5, 5, 5, 5)); 
    } 

    class MyTableModel extends AbstractTableModel { 

     private String[] columnNames = { 
      "Κωδικός", "Ποσότητα", "Τιμή", "Περιγραφή", "Μέγεθος", "Ράτσα" 
     }; 

     public int getColumnCount() { 
      return columnNames.length; 
     } 

     public int getRowCount() { 
      return rosterList.size(); 
     } 

     @Override 
     public String getColumnName(int col) { 
      return columnNames[col]; 
     } 

     public Object getValueAt(int row, int col) { 
      return rosterList.get(row)[col]; 
     } 
    } 

    private static void createAndShowGUI() { 
     //Create and set up the window. 

     JFrame frame = new JFrame("TableDemo"); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 


     //Create and set up the content pane. 
     TableDemo newContentPane = new TableDemo(); 
     newContentPane.setOpaque(true); //content panes must be opaque 
     frame.setContentPane(newContentPane); 

     //Display the window. 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     //Schedule a job for the event-dispatching thread: 
     //creating and showing this application's GUI. 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 

      public void run() { 
       creatArr(); 
       createAndShowGUI(); 
      } 
     }); 
    } 

    private static void creatArr() { 
     BufferedReader br = null; 
     try { 
      br = new BufferedReader(new FileReader("Dogss.txt")); 
      String line = br.readLine(); 

      while (line != null) { 
       String[] rowfields = line.split("#"); 
       rosterList.add(rowfields); 
       line = br.readLine(); 
      } 

     } catch (FileNotFoundException e) { 
      // can be thrown when creating the FileReader/BufferedReader 
      // deal with the exception 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // can be thrown by br.readLine() 
      // deal with the exception 
      e.printStackTrace(); 
     } 
    } 
} 
+2

Crossposted與

table.getSelectedRow() 

或具有多個選定的行獲得的行號(從零開始):[得到選-行的JTable]( http://www.java-forums.org/java-applets/44385-get-select-row-jtable.html)。有趣的是,在得到霍華德的回答之後,這已經完成了。去搞清楚。 – 2011-05-21 15:47:55

回答

5

可以經由

table.getSelectedRows() 
+0

button.addActionListener(新的ActionListener(){ 公共無效的actionPerformed(ActionEvent的E) { table.getSelectedRow(); table.getValueAt(table.getSelectedRow(),1); } }); – 2011-05-21 15:19:55