Publicité
Offres partenaires
Actualités relatives

Déposez vos albums photo en ligne gratuitement

Publié le 21 mars 2007

Nos confrères d’Infos-du-Net publient aujourd’hui un dossier sur les albums photo en ligne : « Infos-du-Net vous propose de découvrir comment mettre en ligne vos propres albums photo. Les bons plans les plus simples, pratiques et branchées pour Lire la suite

Plus de cuivre dans les cartes mères Gigabyte

Publié le 25 septembre 2008

Gigbayte vient d’annoncer l’Ultra Durable 3, qui consiste à mettre plus de cuivre dans ses cartes mères. Lire la suite

L'iH85, pour écouter la musique même à vélo

Publié le 09 février 2007

iHome n’en n’a pas fini avec nos iPod. Après les radio-réveils, voilà que l’accessoiriste veut nous faire écouter notre musique à vélo ! L’iH85 Speaker System se compose d’un haut-parleur à mettre quelque part sur le biclou, qui pourra être contrôlé Lire la suite

NVIDIA utilise ULi pour mettre la pression sur ATI

Publié le 28 mars 2006

DigiTimes affirme que NVIDIA utiliserait ULi pour mettre la pression sur son concurrent de toujours : ATI. En effet, ATI utilise les chips ULi M1575 et 1573 pour les cartes mères bâties sur ses chipsets Xpress. Or NVIDIA aurait tout s Lire la suite

Les derniers tests

Les téléphones tactiles peuvent-ils remplacer les PC ?

Publié le 24 octobre 2008

Les téléphones tactiles sont-ils capables de rivaliser avec les PC ? Lire la suite

Test du Shuttle X27 : l’Atom sous Vista ?

Publié le 23 octobre 2008

Dans la course à la puissance à laquelle se livrent Intel et AMD, l’Atom est une sorte d’outsider. C’est pourtant lui que Shuttle a choisi pour son ordinateur petit format. Mais est-il assez puissant pour une utilisation au quotidien ? Lire la suite

Test Sony Vaio TT et Z : Tom's Guide raconte

Publié le 22 octobre 2008

Avant même leurs sorties, les Vaio TT et Vaio Z de Sony sont passés entre les mains de Tom's Guide pour une première impression sur la finition et les capacités techniques des deux machines. Lire la suite

Les meilleurs logiciels pour l'overclocking

Publié le 20 octobre 2008

Les overclockeurs n'en sont plus aux jumpers sur la carte mère, maintenant ils utilisent des logiciels. Lire la suite

  FORUM Tom's Hardware » Programmation » C / C++ / Java » JTable] mettre un JLabel et un JButton
 

JTable] mettre un JLabel et un JButton

Il y a 200 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici



Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : JTable] mettre un JLabel et un JButton
 
Plus d'informations

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 :

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



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

Code :
  1. public void fillListTable(String treePathSelected)
  2.     {
  3.         ArrayList<Message> tableContentList = new ArrayList<Message>();
  4.          
  5.                 ............
  6.             //we begin by selecting the first elements of the table
  7.             tableContentList = storeTableContent.getPartOfTableContent(0, storeTableContent.getSelectionLimit() );
  8.             this.setModel(this.getMessageListTableModel(tableContentList));
  9.             this.getModel().addTableModelListener(this);
  10.                                                
  11.             this.setVisible(true);
  12.         }
  13.     }
  14. public MessageListTableModel getMessageListTableModel(ArrayList<Message> tableContentList) {
  15.         MessageListTableModel messageListTableModel = null;
  16.         Message Temp = new Message();
  17.         // Create the messageListTableModel
  18.         messageListTableModel = new MessageListTableModel();
  19.         for(int i = 0 ; i < tableContentList.size(); i++) 
  20.         {
  21.             Temp = tableContentList.get(i);
  22.             JButton chaineMsg = null;
  23.             chaineMsg = new JButton();
  24.             chaineMsg.setText(" + " );
  25.             chaineMsg.addActionListener(new ActionListener() {
  26.                 public void actionPerformed(ActionEvent evt) {
  27.                     chaineMsgActionPerformed(evt);
  28.                 }
  29.             });
  30.             if (Temp.getchainedMsgs()==null)
  31.             {
  32.                 chaineMsg.setVisible(false);
  33.             }
  34.             else
  35.                 chaineMsg.setVisible(true);
  36.             String MsgId = Temp.getmsgId();
  37.             String machineName = Temp.getmachineName();
  38.             String ApplicationName = Temp.getapplicationName();
  39.             String IssuedWhen = Temp.getissuedWhen();
  40.    
  41.              
  42.             JLabel severity = new JLabel();
  43.             severity.setText(Temp.strSeverity[Temp.getseverity()]);   
  44.             severity.setBackground(Temp.severityColors[Temp.getseverity()][0]);
  45.             severity.setOpaque(true);
  46.             severity.setForeground(Temp.severityColors[Temp.getseverity()][1]);
  47.    
  48.             String msgText = Temp.getmsgText();
  49.             String param = Temp.getparam();
  50.    
  51.             messageListTableModel.addRow(chaineMsg, MsgId, machineName, ApplicationName, 
  52.                     IssuedWhen, severity, msgText, param);
  53.         }
  54.         return messageListTableModel;
  55.     }


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

Liens sponsorisés

Plus d'informations

je poste la solution des fois que ca puisse aider quelqu'un par la suite

je cree ma propre classe de TableCellRenderer :

Code :
  1. class MessageListTableCellRenderer implements TableCellRenderer {
  2.           public Component getTableCellRendererComponent(JTable table,
  3.             Object value, boolean isSelected, boolean hasFocus, int line, int column) {
  4.            
  5.                     //as a column can be a JButton or a JLabel I define a Component
  6.                     Component comp = null;
  7.            
  8.             //if it's the first column and there is a chained msg i put a button
  9.             if((table.getColumnName(column).equals("Chained Msgs" )) && (value.toString().equalsIgnoreCase(" + " )))
  10.             {
  11.                 button.addActionListener(new ActionListener() {
  12.                     public void actionPerformed(ActionEvent evt) {
  13.                         chaineMsgActionPerformed(evt);
  14.                     }
  15.                 });
  16.                 button.setVisible(true);
  17.                 button.setEnabled(true);
  18.            
  19.                 //in this case comp is a JButton
  20.                 comp = button;
  21.             }
  22.             else
  23.             {
  24.                 //i define the colors of the content
  25.                 //if the line is selected the severity is a little darker and the rest is light blue
  26.                 if (isSelected == true)
  27.                 {
  28.                     //i define the colors of the severity column
  29.                     if(table.getColumnName(column).equals("Severity" ))
  30.                     {
  31.                         label.setHorizontalAlignment(SwingConstants.CENTER);
  32.                    
  33.                         label.setBackground(Temp.severityColorsSelected[i][0]);    //this is a table of Colors
  34.                           label.setForeground(Temp.severityColorsSelected[i][1]);
  35.                     }
  36.                     else
  37.                     {
  38.                         label.setBackground( new java.awt.Color(157, 206, 255));
  39.                         label.setForeground( new java.awt.Color(0, 0, 0));
  40.                     }
  41.                 }
  42.                 //if the line is selected the severity is as defined in the class Message and the rest is white                
  43.                 else
  44.                 {
  45.                     //i define the colors of the severity column
  46.                     if(table.getColumnName(column).equals("Severity" ))
  47.                     { 
  48.                         label.setHorizontalAlignment(SwingConstants.CENTER);
  49.                    
  50.                         label.setBackground(Temp.severityColors[i][0]);
  51.                           label.setForeground(Temp.severityColors[i][1]);
  52.                     }
  53.                     else
  54.                     {
  55.                         label.setBackground( new java.awt.Color(255, 255, 255));
  56.                         label.setForeground( new java.awt.Color(0, 0, 0));
  57.                     }
  58.                 }
  59.                            
  60.                 // JLable est transparent pas défaut
  61.                 label.setOpaque(true);
  62.                 label.setText(value.toString());
  63.               //in this case comp is a JLabel
  64.                 comp = label;
  65.             }        
  66.             //i return the component
  67.             return comp;
  68.           }
  69.          
  70.           private JLabel label = new JLabel();
  71.           private JButton button = new JButton(" + " );
  72.         }



et quand je definie ma JTable je lui applique le renderer:

Code :
  1. messageListTable = new MessageListTable();
  2. messageListTable.setDefaultRenderer(Object.class, new MessageListTableCellRenderer());
  3. messageListTable.addMouseListener(new MouseAdapter() {
  4.         public void mouseClicked(MouseEvent evt) {
  5.             MessageListTableMouseClicked(evt);
  6.         }
  7. });



voila en esperant que ca puisse aider ^^

Naya[cpp]

zeb
Profil : Modérateur libre

Merci :jap:


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...

  FORUM Tom's Hardware » Programmation » C / C++ / Java » JTable] mettre un JLabel et un JButton

Aller à :
 

Annonces Google