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
}
Afficher la suite