Sources JavaConsultez toutes les sources
Nombre d'auteurs : 29, nombre de sources : 134, création le 13 avril 2013
La classe JTableFixedColumn est une extension de JScrollPane. Elle permet de visualiser une JTable dont un certain nombre de colonnes sont fixes par rapport à la vue.
Cette classe change la couleur des cellules choisies du rouge vers le bleu et inversement
Cette classe permet de colorer chaque colonne d'une JTable
Cette classe simple montre comment insérer une JProgressBar dans une JTable
Cet exemple permet de visualiser une arborescence de fichiers grâce à un JTree. Celui ci affiche tous les fichiers et répertoires d'une racine donnée (répertoire). L'application utilise notamment les noms et icones système des fichiers.
Voici un code permettant d'extraire sous forme de string la position des colonnes d'un JTable. Tres pratique donc pour ensuite sauvegarder cette position dans un .ini via les Properties :
import
java.util.*;
import
javax.swing.*;
import
javax.swing.table.*;
/**
*
Permet
de
récuperer
/
positionner
l
'
ordre
des
colonnes
d
'
une
table
*
@author
divxdede
*/
public
class
TableColumnOrderManager
{
/**
Récupere
l
'
ordre
des
colonnes
sous
la
forme
"
2
,
0
,
1
"
*
Donne
l
'
ordre
courant
par
rapport
à
l
'
ordre
d
'
origine
de
la
TableModel
*
@return
Ordre
courant
des
colonnes
(
ex
:
"
2
,
0
,
1
"
)
*
*/
public
static
String getTableOrder
(JTable table)
{
String Result =
"
"
;
int
nbrColumns =
table.getColumnCount
();
for
(int
i =
0
; i <
nbrColumns ; i+
+
)
{
int
realColumn =
table.getColumnModel
().getColumn
(i).getModelIndex
();
Result +
=
realColumn;
if
(i <
nbrColumns -
1
) Result +
=
"
,
"
;
}
return
Result;
}
/**
Réordonne
les
colonnes
d
'
une
table
*
IMPORTANT
les
numero
dans
"
2
,
0
,
1
"
se
refere
à
la
position
d
'
origine
du
TableModel
*
@param
order
Ordre
souhaité
par
rapport
à
l
'
origine
*
@param
table
La
JTable
à
réordonner
*
*/
public
static
void
setTableOrder
(String order,JTable table)
{
ArrayList expected =
makeOrderList
(order);
ArrayList having =
makeOrderList
( getTableOrder
(table) );
for
(int
i =
0
; i <
table.getColumnCount
() ; i+
+
)
{
Integer valExpected =
(Integer)expected.get
(i);
Integer valHaving =
(Integer)having.get
(0
);
if
( valExpected.intValue
() =
=
valHaving.intValue
() )
{
having.remove
(0
);
continue
;
}
int
posExpectedOnCurrent =
having.indexOf
(valExpected);
System.out.println
("
Move
column
"
+
(posExpectedOnCurrent +
i) +
"
to
"
+
i);
having.remove
(posExpectedOnCurrent);
table.moveColumn
( posExpectedOnCurrent +
i , i );
}
}
/**
Restaure
les
colonnes
à
leur
position
d
'
origine
*
@param
table
JTable
dont
ont
veux
restaurer
la
position
des
colonnes
*
*/
public
static
void
restoreTableOrder
(JTable table)
{
String strOrder =
"
"
;
for
(int
i =
0
; i <
table.getColumnCount
() ; i+
+
)
{
strOrder +
=
i;
if
(i <
table.getColumnCount
() -
1
) strOrder +
=
"
,
"
;
}
setTableOrder
(strOrder,table);
}
/**
Méthode
interne
pour
générer
une
liste
d
'
ordre
*
*/
private
static
ArrayList makeOrderList
(String strList)
{
ArrayList result =
new
ArrayList
();
StringTokenizer tokenizer =
new
StringTokenizer
(strList, "
,
"
);
while
(tokenizer.hasMoreTokens
())
{
String token =
tokenizer.nextToken
();
Integer value =
new
Integer
( Integer.parseInt
(token) );
result.add
(value);
}
return
result;
}
}
le principe est simple
un exemple
/**
Sauve
l
'
ordre
actuel
des
colonnes
la
table
*
*/
String saveOrder =
TableColumnOrderManager.getTableOrder
(maTable);
/**
Modifier
l
'
ordre
*
*/
TableColumnOrderManager.setTableOrder
("
3,2,1,0
"
,maTable)
/**
Réinitialiser
l
'
ordre
par
défaut
*
*/
TableColumnOrderManager.restoreTableOrder
(maTable);
/**
Modifier
l
'
ordre
avec
celui
sauvegardé
au
début
*
*/
TableColumnOrderManager.setTableOrder
(saveOrder,maTable)
on peut meme étendre ce principe sur la taille des colonnes aussi simplement.
Ce code montre comment on peux personaliser le popup d'une JComboBox
Pour commencer, il faut savoir que c'est le composant UI associer au JComboBox qui se charge d'afficher le popup. Je vais donc commencer par sa création.
Ensuite pour une cohérence d'affichage entre le popup et la zone du JCombox, redéfinir un ListCellRenderer.
Le composant UI représenté par la classe ComboTreeUI :
En fait on va juste lui dire d'uiliser un autre Popup que celui habituel
Ensuite il faute créer le popup représenté par la classe ComboTreePopup
En fait on fait deux choses, on lui dit d'utiliser une liste dont le model est un peu spécial et va suivre et on redéfinit le comportement de la souris.
Le model de la liste est représente par la classe ModelListTree
Il reste plus qu'a créer le renderer et le JComboTree.
Le Renderer est représenté par la classe RenduComboTree
Le JComboTree est représenté par la classe JComboTree
Pour que l'affichage ressemble à un arbre j'utilises un layout personnel représenté par la classe EcartLayout
C'est une table, dont on peut choisir la taille des cellules par rapport aux autres, les redimenssionées, les déplacées, mettre des entête ou on veut, et plein de trucs sympas comme ça Wink
Pour récupérer, il s'aggit de quatre classes, plus une pour un exemple (il casse pas de briques, mais c'est pour montrer une partie du potentiel)
La classe TableSouple elle même, du package developpez.swing est à récupérée à :
TableSouple
Le modèle de la table, du package developpez.swing.model, est à récupéré à :
ModelTableSouple
L'interface pour faire des écouteurs des événements survenants sur la table, dans le package developpez.swing.listener :
TableSoupleListener
La classe décrivant les événements dans le package developpez.swing.event :
TableSoupleEvent
Voila pour les classes nécéssaire au fonctionnement de la table.
En prime un petit exemple dans le package developpez.tests :
TestTableSouple