JTable supprimer ligne

cs_crazysetup Messages postés 30 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 février 2010 - 31 oct. 2007 à 09:21
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 1 nov. 2007 à 14:35
Salut a tous, j'ai un problème et j'aimerais trouver la solution.
J'ai créé une JTable avec un bouton ajouter qui ajoute des lignes vides et un autre supprimer qui est supposé en supprimer maisj'arrive pas a programmer ce dernier. Quelqu'un aurait une suggestion ?
Voici mon code

ackage fr.istase.td.projets.jtable;




import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.FlowLayout;
 import javax.swing.event.TableModelEvent;
 import javax.swing.event.TableModelListener;
 import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.TableColumn;
 import javax.swing.JButton;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
 import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.UIManager;


 public class InteractiveForm extends JPanel implements ActionListener {
 


 
 
 public static final String[] columnNames = {
         "Utilisateur", "Titre", "Description", "Date_Debut","Date_Fin","Alerte","Periodicite",""
     };


     protected static JTable table;
     protected JScrollPane scroller;
     protected static InteractiveTableModel tableModel;
  
    
     public InteractiveForm() {
      initComponent();
  }
 


     public void initComponent() {
         tableModel = new InteractiveTableModel(columnNames);
         tableModel.addTableModelListener(new InteractiveForm.InteractiveTableModelListener());
         table = new JTable();
         table.setModel(tableModel);
         table.setSurrendersFocusOnKeystroke(true);
         if (!tableModel.hasEmptyRow()) {
             tableModel.addEmptyRow();
         }




         scroller = new javax.swing.JScrollPane(table);
       table.setPreferredScrollableViewportSize(new java.awt.Dimension(600, 600));
         TableColumn hidden = table.getColumnModel().getColumn(InteractiveTableModel.HIDDEN_INDEX);
         hidden.setMinWidth(7);
         hidden.setPreferredWidth(7);
         hidden.setMaxWidth(7);
         hidden.setCellRenderer(new InteractiveRenderer(InteractiveTableModel.HIDDEN_INDEX));


         setLayout(new BorderLayout());
         add(scroller, BorderLayout.CENTER);
     }


     public void highlightLastRow(int row) {
         int lastrow = tableModel.getRowCount();
         if (row == lastrow - 1) {
             table.setRowSelectionInterval(lastrow - 1, lastrow - 1);
         } else {
             table.setRowSelectionInterval(row + 1, row + 1);
         }


         table.setColumnSelectionInterval(0, 0);
     }


     class InteractiveRenderer extends DefaultTableCellRenderer {
      
  private static final long serialVersionUID = 1L;
  protected int interactiveColumn;


         public InteractiveRenderer(int interactiveColumn) {
             this.interactiveColumn = interactiveColumn;
         }


         public Component getTableCellRendererComponent(JTable table,
            Object value, boolean isSelected, boolean hasFocus, int row,
            int column)
         {
             Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
             if (column == interactiveColumn && hasFocus) {
                 if ((InteractiveForm.this.tableModel.getRowCount() - 1) == row &&
                    !InteractiveForm.this.tableModel.hasEmptyRow())
                 {
                     InteractiveForm.this.tableModel.addEmptyRow();
                 }


                 highlightLastRow(row);
             }


             return c;
         }
     }


     public class InteractiveTableModelListener implements TableModelListener {
         public void tableChanged(TableModelEvent evt) {
             if (evt.getType() == TableModelEvent.UPDATE) {
                 int column = evt.getColumn();
                 int row = evt.getFirstRow();
                 System.out.println("row: " + row + " column: " + column);
                 table.setColumnSelectionInterval(column + 1, column + 1);
                 table.setRowSelectionInterval(row, row);
             }
         }
     }
 
    


    public static void main(String[] args) {
         try {
             UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
             JFrame frame = new JFrame("Interactive Form");
             frame.addWindowListener(new WindowAdapter() {
                 public void windowClosing(WindowEvent evt) {
                     System.exit(0);
                 }
             });
             JPanel panelA = new JPanel();
             JPanel panelB = new JPanel();
            
             JMenuBar menu = new JMenuBar();
             JMenu action = new JMenu("Action");
             JMenu aide = new JMenu("aide");
            
             JMenuItem ajout = new JMenuItem("Ajouter ligne");
            
             int toucheRaccourcis = java.awt.Toolkit.getDefaultToolkit().getDefaultToolkit().getMenuShortcutKeyMask() ;
             ajout.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,toucheRaccourcis)) ;
           
             ajout.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent e) {
                InteractiveTableModel refModel = (InteractiveTableModel)table.getModel();
                refModel.addEmptyRow();
               }
               });
            
             JMenuItem suppr = new JMenuItem("Supprimer ligne");
             suppr.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,toucheRaccourcis)) ;
             JMenuItem quitter = new JMenuItem("Quitter");
             quitter.addActionListener(null);
             quitter.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,toucheRaccourcis)) ;
            
            
             JMenuItem aide1 = new JMenuItem("Aide");
             aide1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,toucheRaccourcis)) ;
             JMenuItem a_propos = new JMenuItem("A Propos");
             a_propos.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,toucheRaccourcis)) ;
            
             JButton Supprimer = new JButton("Supprimer");
             Supprimer.addActionListener(new ActionListener(){
              public void actionPerformed(ActionEvent e) {
             InteractiveTableModel refModel = (InteractiveTableModel)table.getModel();
              refModel.removeRow(table.getSelectedRow());
              }
             });
            
            
             JButton Ajouter = new JButton("Ajouter");
        
            Ajouter.addActionListener(new ActionListener(){
              public void actionPerformed(ActionEvent e) {
               InteractiveTableModel refModel = (InteractiveTableModel)table.getModel();
               refModel.addEmptyRow();
              }
              });
           
           
            
             action.add(ajout);
             action.add(suppr);
             action.add(quitter);
          
                    
       //raccourci clavier qui me permet de quitter l'application calculatrice
       
       
            
             aide.add(aide1);
             aide.add(a_propos);
            
             menu.add(action);
             menu.add(aide);
            
            
             panelB.add(Ajouter);
             panelB.add(Supprimer);


             frame.getContentPane().add(menu,BorderLayout.NORTH);
             frame.getContentPane().add(new InteractiveForm(),BorderLayout.CENTER);
             frame.getContentPane().add(panelB,BorderLayout.SOUTH);
            
             frame.pack();
             frame.setVisible(true);
         } catch (Exception e) {
             e.printStackTrace();
         }
        
        
       
       
        
        
     }




 protected static void dispose() {
  // TODO Auto-generated method stub
  
 }




 public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  String commande = e.getActionCommand();
  if ("Quitter".equals(commande))
   System.exit(0); // quitte l'application


  
 }

1 réponse

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
1 nov. 2007 à 14:35
Salut:

A la première vue (initComponents(), ...), il s'agit du code généré par NetBeans.

Pour supprimer les lignes séléctionnées tu peur procèder ainsi:

// Ici je suppose que l'utilisateur peut séléctionner plusieurs lignes à la fois.
protected void removeRows() {
    TableModel tm = table.getTableModel();

    int[] selectedRows = table.getSelectedRows();
    if (selectedRows.length != 0) {
       for (int i = 0; i < selectedRows.length; ++i)
          tm.removeRow(i);
    }
    return;
}
0
Rejoignez-nous