Bonjour,
Je desirerai créer une JTable dont les lignes sont draggable afin d'en changer l'ordre comme il est possible avec les colonnes.
Existe t'il un moyen a l'aider de la JTable?
En vous remerciant d'avance pour l'intêret que vous me portez.
Bonjour,
Je desirerai créer une JTable dont les lignes sont draggable afin d'en changer l'ordre comme il est possible avec les colonnes.
Existe t'il un moyen a l'aider de la JTable?
En vous remerciant d'avance pour l'intêret que vous me portez.
Salut,
Ben a mon avis si tu ajoute un MouseMotionListener sur ta table, quand le drag commence tu recupere la ligne selectionnée et quand le drag est terminé tu récupère la ligne à la position de l'event et tu change la ligne de position.
voila ciao
J'ai un tableau avec 2 "header", comme excel. Mon Header pour les lignes se trouve dans un JScrollPane. A la selection d'un des elements de ma JScrollPane il faut que je recupére la ligne correspondante et que je puisse la draggué. Je ne sais pas si la maniere dont je procéde pour créer mon tableau et adequate pour ce que je recherche.
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 package temp; import java.awt.BorderLayout; import javax.swing.*; import javax.swing.table.*; import java.util.Vector; public class RowHeaderList { public static void main(String[] args) { DefaultListModel _mList = new DefaultListModel(); DefaultTableModel _mData = new DefaultTableModel(0, 5); for (int i = 0 ; i<5 ; i++) { _mList.addElement("Ligne " + i); Vector v = new Vector(); for (int k = 0; k < 3; k++) v.add(null); _mData.addRow(v); } JTable table = new JTable(_mData); JList rowHeader = new JList(_mList); LookAndFeel.installColorsAndFont(rowHeader, "TableHeader.background", "TableHeader.foreground", "TableHeader.font"); rowHeader.setFixedCellHeight(table.getRowHeight()); rowHeader.setCellRenderer(new RowHeaderRenderer()); JScrollPane scrollPane = new JScrollPane(table); scrollPane.setRowHeaderView(rowHeader); JFrame testFrame = new JFrame("Test"); testFrame.getContentPane().add(scrollPane, BorderLayout.CENTER); testFrame.pack(); testFrame.setLocation(200, 100); testFrame.setVisible(true); } }
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125 package temp; import java.awt.Component; import java.awt.Insets; import javax.swing.ListCellRenderer; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.BorderFactory; import javax.swing.JList; import javax.swing.JTable; import javax.swing.UIManager; import javax.swing.BorderFactory; import javax.swing.border.Border; import javax.swing.plaf.BorderUIResource; class RowHeaderRenderer extends DefaultTableCellRenderer implements ListCellRenderer { protected Border noFocusBorder, focusBorder; public RowHeaderRenderer() { setOpaque(true); setBorder(noFocusBorder); } public void updateUI() { super.updateUI(); Border cell = UIManager.getBorder("TableHeader.cellBorder"); Border focus = UIManager.getBorder("Table.focusCellHighlightBorder"); focusBorder = new BorderUIResource.CompoundBorderUIResource(cell, focus); Insets i = focus.getBorderInsets(this); noFocusBorder = new BorderUIResource.CompoundBorderUIResource (cell, BorderFactory.createEmptyBorder(i.top, i.left, i.bottom, i.right)); /* Alternatively, if focus shouldn't be supported: focusBorder = noFocusBorder = cell; */ } public Component getListCellRendererComponent(JList list, Object value, int index, boolean selected, boolean focused) { if (list != null) { if (selected) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); } else { setBackground(list.getBackground()); setForeground(list.getForeground()); } setFont(list.getFont()); setEnabled(list.isEnabled()); } else { setBackground(UIManager.getColor("TableHeader.background")); setForeground(UIManager.getColor("TableHeader.foreground")); setFont(UIManager.getFont("TableHeader.font")); setEnabled(true); } if (focused) setBorder(focusBorder); else setBorder(noFocusBorder); setValue(value); return this; } public Component getTableCellRendererComponent(JTable table, Object value, boolean selected, boolean focused, int row, int column) { if (table != null) { if (selected) { setBackground(table.getSelectionBackground()); setForeground(table.getSelectionForeground()); } else { setBackground(table.getBackground()); setForeground(table.getForeground()); } setFont(table.getFont()); setEnabled(table.isEnabled()); } else { setBackground(UIManager.getColor("TableHeader.background")); setForeground(UIManager.getColor("TableHeader.foreground")); setFont(UIManager.getFont("TableHeader.font")); setEnabled(true); } if (focused) setBorder(focusBorder); else setBorder(noFocusBorder); setValue(value); return this; } }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager