Ajouter un commentaire

nayaphykit
[JTable] mettre un JLabel et un JButton

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 :

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

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

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 H  H  M   M   AA   M   M  H  H 
H H MM MM A A MM MM H H
HHHH M M M AAAA M M M HHHH
H H M M A A M M H H
H H M M A A M M H H