[JTable] mettre un JLabel et un JButton

Résolu
cs_nayaphykit Messages postés 14 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 30 décembre 2009 - 15 août 2007 à 13:05
cs_nayaphykit Messages postés 14 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 30 décembre 2009 - 17 août 2007 à 09:27
Bonjour,

 
j'ai beau chercher je ne trouve pas la solution à mon probleme...  
je debute en swing et la je lutte!

 
j'ai une jtable qui est remplie dynamiquement a l'aide d'une
table de ma base de donnees qui contient des messages et leurs
parametres.

une des colonnes correspond a la severité du message (success,
warining, fatal etc). pour chaque severite une couleur est associee
(vert pour success, rouge fonce pour fatal, etc). il faut que la case
correspondant a la severite contienne le mot et quelle soit coloree.

 
au debut j'ai tenter d'utiliser une version custom du
defaultcellrenderer mais meme si la fonction etait parcourue pendant
l'execution, la couleur ne changeait pas.

on m'a donc conseille de mettre un jlabel dans la jtable. et la je bloque!! ca veut pas marcher
 
un autre truc, pour certains message il y a des sous messages
qui ont le meme format mais sont stockes dans un champs du message. ces
message ne sont pas affiches au debut mais il faut qu'ils puissent
l'etre.

on m'a demande de mettre un + en debut de colonne pour indiquer
quand il y en a et pour permettre de les afficher en dessous du "pere"
(le + doit se changer en - pour les cacher)

en gros mon superviseur veut ca :

  msg1  param1  txt1

  msg2  param2  txt2

+msg3  param3  txt3

  msg4  param4  txt4

 
et quand on clic sur le +

  msg1  param1  txt1

  msg2  param2  txt2

-msg3  param3  txt3

  msg3'  param3'  txt3'

  msg3"  param3"  txt3"

  msg4  param4  txt4

 
je vous mets mon code :

 
messageListTable = new MessageListTable();   //je met la MessageListTable (qui extends jtable) dans un jpanel

dans la classe MessageListTable, j'ai une fonction fillListTable :

<ol><li class="li1">
publicvoid fillListTable(String treePathSelected)
</li><li class="li1">
    {
</li><li class="li1">
        ArrayList<Message> tableContentList = new ArrayList<Message>();
</li><li class="li1">
        
</li><li class="li1">
               .....
</li><li class="li1">
                                
</li><li class="li1">
        //we begin by selecting the first elements of the table
</li><li class="li1">
        tableContentList = storeTableContent.getPartOfTableContent(0, storeTableContent.getSelectionLimit());
</li><li class="li1">
            
</li><li class="li1">
        this.setModel(this.getMessageListTableModel(tableContentList));
</li><li class="li1">
        this.getModel().addTableModelListener(this);            
</li><li class="li1">
            
</li><li class="li1">
            this.setVisible(true);
</li><li class="li1">
                
</li><li class="li1">
    }    
</li><li class="li1">
 
</li><li class="li1">
private MessageListTableModel getMessageListTableModel(ArrayList<Message> tableContentList){
</li><li class="li1">
        
</li><li class="li1">
        MessageListTableModel messageListTableModel = null;
</li><li class="li1">
        Message Temp = new Message();    
</li><li class="li1">
        // Create the messageListTableModel
</li><li class="li1">
        messageListTableModel = new MessageListTableModel();
</li><li class="li1">
        
</li><li class="li1">
    
</li><li class="li1">
        for(int i = 0 ; i < tableContentList.size(); i++)
</li><li class="li1">
        {
</li><li class="li1">
            Temp = tableContentList.get(i);
</li><li class="li1">
            JButton chaineMsg = null;
</li><li class="li1">
            chaineMsg = new JButton();
</li><li class="li1">
            chaineMsg.setText(" + ");
</li><li class="li1">
            chaineMsg.addActionListener(new ActionListener(){
</li><li class="li1">
                publicvoid actionPerformed(ActionEvent evt){
</li><li class="li1">
                    chaineMsgActionPerformed(evt);
</li><li class="li1">
                }
</li><li class="li1">
            });
</li><li class="li1">
            if(Temp.getchainedMsgs()==null)
</li><li class="li1">
            {
</li><li class="li1">
                chaineMsg.setVisible(false);
</li><li class="li1">
            }
</li><li class="li1">
            else
</li><li class="li1">
                chaineMsg.setVisible(true);
</li><li class="li1">
            
</li><li class="li1">
            String MsgId = Temp.getmsgId();
</li><li class="li1">
            String machineName = Temp.getmachineName();
</li><li class="li1">
           String ApplicationName = Temp.getapplicationName();
</li><li class="li1">
           String IssuedWhen = Temp.getissuedWhen();
</li><li class="li1">
           
</li><li class="li1">
           
</li><li class="li1">
           JLabel severity = new JLabel();
</li><li class="li1">
           severity.setText(Temp.strSeverity[Temp.getseverity()]);            
</li><li class="li1">
           severity.setBackground(Temp.severityColors[Temp.getseverity()][0]);
</li><li class="li1">
           severity.setOpaque(true);
</li><li class="li1">
           severity.setForeground(Temp.severityColors[Temp.getseverity()][1]);
</li><li class="li1">
           
</li><li class="li1">
           String msgText = Temp.getmsgText();
</li><li class="li1">
           String param = Temp.getparam();
</li><li class="li1">
           String optParam = Temp.getoptParam();
</li><li class="li1">
                       
</li><li class="li1">
            messageListTableModel.addRow(chaineMsg, MsgId, machineName, ApplicationName,
</li><li class="li1">
                    IssuedWhen, severity, msgText, param, optParam);
</li><li class="li1">
            
</li><li class="li1">
        }
</li><li class="li1">
    
</li><li class="li1">
        return messageListTableModel;
</li><li class="li1">
    }
</li></ol>

dans cette classe j'ai aussi la classe MessageListTableModel qui
extends AbstractTableModel (je ne l'a met pas car je pense pas que ce
soit necessaire mais si vous la voulez dites le)

 
lorsque je compile, le jtable est cree et a la place du button et du jlabel il y a ecrit  
javax.swing.jbutton[,0,0,0x0,invalid,alignement.......]  pour le jbutton et a peu pres pareil pour le jlabel

 
je suis disponible s'il vous faut plus de precision

merci d'avance

Naya

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
15 août 2007 à 14:05
va voir ma source de cellrenderer et celleditor et utilise les (regarde aussi ma source JdksPropertyTable si tu veux voir comment les utiliser)
3
cs_nayaphykit Messages postés 14 Date d'inscription mercredi 1 décembre 2004 Statut Membre Dernière intervention 30 décembre 2009
17 août 2007 à 09:27
merci ^^

Naya
0
Rejoignez-nous