1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| import java.awt.BorderLayout;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
public class Dep extends JFrame {
private JTable tableau;
private String supp = "Supprimer la ligne";
public Dep() {
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Liste des départements");
this.setSize(400, 90);
this.createContent();
}
private void createContent() {
Object[][] data = { { "Comptabilité", "HP LaserJet 1300" }, { "DAF", "HP LaserJet 1018 Printer" } };
String title[] = { "Département", "Imprimante" };
this.tableau = new JTable(new DefaultTableModel(data, title));
this.tableau.getTableHeader().addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent event) {
if (event.getButton() == MouseEvent.BUTTON3) {
if (tableau.columnAtPoint(new Point(event.getX(), event.getY())) != -1) {
JMenuItem ajouter = new JMenuItem("Ajouter une colonne");
ajouter.addActionListener(new AddListener());
JMenuItem erase = new JMenuItem("Effacer cette colonne");
erase.addActionListener(new EraseListener(new Point(event.getX(), event.getY())));
JPopupMenu menu = new JPopupMenu();
menu.add(ajouter);
menu.add(erase);
menu.show(tableau, event.getX(), event.getY());
}
}
}
});
this.getContentPane().add(new JScrollPane(tableau), BorderLayout.CENTER);
}
class EraseListener implements ActionListener {
private Point point = null;
private Object[][] data;
private Object[] title;
public EraseListener(Point col) {
this.point = col;
}
@Override
public void actionPerformed(ActionEvent event) {
int col = tableau.columnAtPoint(this.point);
TableColumn column = tableau.getColumn(tableau.getColumnName(col));
initNewData(column);
((DefaultTableModel) tableau.getModel()).setDataVector(this.data, this.title);
}
private void initNewData(TableColumn column) {
this.data = new Object[tableau.getRowCount()][tableau.getColumnCount() - 1];
this.title = new Object[tableau.getColumnCount() - 1];
for (int i = 0; i < tableau.getRowCount(); i++) {
for (int j = 0, k = 0; j < tableau.getColumnCount(); j++) {
if (!((DefaultTableModel) tableau.getModel()).getColumnName(j).equals(column.getHeaderValue())) {
if (i == 0)
this.title[k] = ((DefaultTableModel) tableau.getModel()).getColumnName(j);
this.data[i][k] = tableau.getValueAt(i, j);
k++;
}
}
}
}
}
class AddListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent event) {
JOptionPane jop = new JOptionPane(), jop2 = new JOptionPane();
String nom = JOptionPane.showInputDialog(null, "Saisissez le nom de la nouvelle colonne", "Ajout d'une colonne",
JOptionPane.QUESTION_MESSAGE);
if (nom != null) {
if (!nom.trim().equals("")) {
((DefaultTableModel) tableau.getModel()).addColumn(nom);
}
}
}
}
} |
Partager