Bonjour a tous...
J'aimerais retourner ma JTable, de manière a avoir les headers sur les lignes, et non plus sur les colonnes...est-ce possible simplement?
Merci d'avance...
Version imprimable
Bonjour a tous...
J'aimerais retourner ma JTable, de manière a avoir les headers sur les lignes, et non plus sur les colonnes...est-ce possible simplement?
Merci d'avance...
bonjour tomcat
il y a longtemp quelqu'un avais demander comment mettre des numero pour les ligne d'un JTextArea. j'avait poster un code. regarde si tu le retrouve (si c'est pas deja supprimer) parce que pour les JTable tu peut faire la meme chose de la meme maniere.
parce que le truc c'est qu'on travaille pas sur le TextArea ni sur la JTable mais sur le JScrollPane dans lequel ils sont :-)
voila un rapide code (vraiment rapide et pas beaucoup propre) qui fait ce que tu veut.
Code:
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 package others.tmp3; import javax.swing.JTable; import javax.swing.JScrollPane; import javax.swing.JList; import javax.swing.JFrame; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.EventQueue; /** * Created by IntelliJ IDEA. * User: bebe */ public class MyTableWithRowHeaders extends JFrame { private JScrollPane myScrollPane = null; private JTable myTable = null; private JList myRowHeader = null; public MyTableWithRowHeaders() { super("MyTableWithRowHeaders"); myTable = new JTable(new MyTableModel()); myRowHeader = new JList(new TableListRowHeaderModel(myTable)); myRowHeader.setBackground(myScrollPane.getBackground()); myRowHeader.setFixedCellWidth(30); myRowHeader.setFixedCellHeight(myTable.getRowHeight()); myRowHeader.setCellRenderer(new MyRowHeaderRenderer(myTable)); myRowHeader.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { int index = myRowHeader.locationToIndex(e.getPoint()); myTable.setRowSelectionInterval(index, index); myTable.setColumnSelectionInterval(0, 0); myTable.requestFocus(); } }); myScrollPane = new JScrollPane(myTable); myScrollPane.setRowHeaderView(myRowHeader); add(myScrollPane); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { MyTableWithRowHeaders frame = new MyTableWithRowHeaders(); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } }
Code:
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 package others.tmp3; import javax.swing.table.TableModel; import javax.swing.event.TableModelListener; /** * Created by IntelliJ IDEA. * User: bebe */ public class MyTableModel implements TableModel { private Class[] classNames = new Class[]{Boolean.class, String.class}; private Object[][] myModel = new Object[][]{ {true, "JTable"}, {true, "is"}, {true, "cooooool!"}, {true, "JTable"}, {true, "is"}, {true, "cooooool!"}, {true, "JTable"}, {true, "is"}, {true, "cooooool!"}, {true, "JTable"}, {true, "is"}, {true, "cooooool!"}, }; public int getRowCount() { return myModel.length; //To change body of implemented methods use File | Settings | File Templates. } public int getColumnCount() { return myModel[0].length; //To change body of implemented methods use File | Settings | File Templates. } public String getColumnName(int columnIndex) { return "" + (columnIndex + 1); } public Class<?> getColumnClass(int columnIndex) { return classNames[columnIndex]; //To change body of implemented methods use File | Settings | File Templates. } public boolean isCellEditable(int rowIndex, int columnIndex) { return columnIndex == 0; //To change body of implemented methods use File | Settings | File Templates. } public Object getValueAt(int rowIndex, int columnIndex) { return myModel[rowIndex][columnIndex]; //To change body of implemented methods use File | Settings | File Templates. } public void setValueAt(Object aValue, int rowIndex, int columnIndex) { myModel[rowIndex][columnIndex] = aValue; //To change body of implemented methods use File | Settings | File Templates. } /* not implemented */ public void addTableModelListener(TableModelListener l) { //To change body of implemented methods use File | Settings | File Templates. } /* not implemented */ public void removeTableModelListener(TableModelListener l) { //To change body of implemented methods use File | Settings | File Templates. } }
Code:
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 package others.tmp3; import javax.swing.table.JTableHeader; import javax.swing.ListCellRenderer; import javax.swing.JTable; import javax.swing.UIManager; import javax.swing.JList; import javax.swing.JLabel; import java.awt.Component; /** * Created by IntelliJ IDEA. * User: bebe */ public class MyRowHeaderRenderer extends JLabel implements ListCellRenderer { public MyRowHeaderRenderer(JTable table) { JTableHeader header = table.getTableHeader(); setOpaque(true); setBorder(UIManager.getBorder("TableHeader.cellBorder")); setHorizontalAlignment(CENTER); setForeground(header.getForeground()); setBackground(header.getBackground()); setFont(header.getFont()); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if (value == null) { setText(""); } else { setText(value.toString()); } return this; } }
Code:
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 package others.tmp3; import javax.swing.AbstractListModel; import javax.swing.JTable; /** * Created by IntelliJ IDEA. * User: bebe */ public class TableListRowHeaderModel extends AbstractListModel { private JTable table = null; public TableListRowHeaderModel(JTable table) { this.table = table; } public int getSize() { return table.getRowCount(); } public Object getElementAt(int index) { return "" + (index + 1); } }
j'ai retrouver :D
-> http://www.developpez.net/forums/sho...d.php?t=176950