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
| import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
import java.awt.Dimension;
import java.awt.GridLayout;
public class TableDemo1 extends JPanel {
JTable table;
public TableDemo1() {
super(new GridLayout(1,0));
table = new JTable(new MyTableModel());
table.setPreferredScrollableViewportSize(new Dimension(300, 70));
table.setFillsViewportHeight(true);
table.getModel().addTableModelListener(new MyTableModel());
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}
class MyTableModel extends AbstractTableModel implements TableModelListener {
private String[] columnNames = { "entier 1" , "entier 2" };
private Object[][] data = { { 1 , 2 } , { 15 , 30 } , { 5 , 10 } };
public int getColumnCount() {
return columnNames.length; }
public int getRowCount() {
return data.length; }
public String getColumnName(int col) {
return columnNames[col]; }
public Object getValueAt(int row, int col) {
return data[row][col]; }
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass(); }
public boolean isCellEditable(int row, int col) {
return col == 0; }
public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
fireTableCellUpdated(row, col); }
public void tableChanged(TableModelEvent e) {
int row = e.getFirstRow();
int column = e.getColumn();
TableModel model = (TableModel)e.getSource();
Object newValue = model.getValueAt(row, column);
data[row][0] = newValue;
data[row][1] = (Integer)newValue * 2;
fireTableDataChanged();
repaint();
}
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("TableDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TableDemo1 newContentPane = new TableDemo1();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
} |
Partager