[JAVA] probleme avec le header d'une JTable

Fermé
____22 Messages postés 98 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 13 janvier 2012 - 28 juil. 2008 à 11:11
____22 Messages postés 98 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 13 janvier 2012 - 14 août 2008 à 16:14
Bonjour,


j'espere que quelqu'un pourra me depanner

quand je clicke sur le header d'une JTable, le header ayant un mouseListener, ça detecte la derniere colonne et non celle rellement cliquée
et puis les dimensions qui valent 0 c'est bizarre..
public class MessageReceivedList2 extends JFrame implements MouseListener {

	private static final long serialVersionUID = 1L;

	public static final String[] columnNames = { "bonjour","comment","ca","va" };

	protected JTable table;

	protected JScrollPane scroller;

	protected model2 tableModel;

	private static MessageReceivedList2 instance = null;

	private int cpt = 0;

	public MessageReceivedList2() {
		
		tableModel = new model2(columnNames);
		table = new JTable();
		table.setModel(tableModel);
		
		scroller = new javax.swing.JScrollPane(table);
		table.getTableHeader().addMouseListener(this);
		table.addMouseListener(this);
		getContentPane().setLayout(new BorderLayout());
		getContentPane().add(scroller, BorderLayout.CENTER);

		this.setSize(new Dimension(
				Toolkit.getDefaultToolkit().getScreenSize().width, 150));
		this.setDefaultCloseOperation(HIDE_ON_CLOSE);
		setTitle("Decoded Messages");
		update();
		
	}
	
	public void RowCount(int n){tableModel.RowCount(n);update();}
	
	
	public static MessageReceivedList2 getInstance() {
		if (instance == null) {
			instance = new MessageReceivedList2();
		}
		return instance;
	}
	
	public model2 getTableModel() {
		return tableModel;
	}
	
	public void update() {
		table.repaint();

	}
	
	public JTable getTable() {
		return table;
	}
public void mouseClicked(MouseEvent e) {
		System.out.println("***"+e.getX()+"*"+e.getY());
		try {
			JTableHeader header = (JTableHeader)(e.getSource());
			System.out.println(""+((DefaultTableCellRenderer)header.getDefaultRenderer()).isShowing()+((DefaultTableCellRenderer)header.getDefaultRenderer()).isVisible());
		System.out.println(((DefaultTableCellRenderer)header.getDefaultRenderer()).getSize());
		System.out.println(((DefaultTableCellRenderer)header.getDefaultRenderer()).getText()+"<<<<***"+e.getX()+"*"+e.getY());
} catch (java.lang.ClassCastException e1) {}
	
		}
}



http://img295.imageshack.us/img295/4450/headerad8.jpg
A voir également:

6 réponses

____22 Messages postés 98 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 13 janvier 2012 1
28 juil. 2008 à 11:17
voir l'image ^^ pour comprendre le probleme
0
Tu as "va" parce que c'est le même Renderer qui est utilisé pour afficher chaque Header. C'est la dernière valeur avec laquelle il a été utilisé. Relis la spec de SUN sur les Renderer : c'est pour économiser de la mémoire qu'on utilise un modèle pour les données et un unique Renderer pour toutes les cellules du même type.
0
____22 Messages postés 98 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 13 janvier 2012 1
28 juil. 2008 à 11:38
il faut que je trouve d'ou vient le probleme rapidement svp!
merci
-1
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
28 juil. 2008 à 11:47
Bonjour,

Je comprends pas quel est ton problème.

Le 575-5 c'est ça?
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
____22 Messages postés 98 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 13 janvier 2012 1
28 juil. 2008 à 11:53
le probleme c'est que je clique sur les colonnes "bonjour","comment" , "ca", ou "va" c'est toujours "va" la derniere qui est detectée
-1
____22 Messages postés 98 Date d'inscription jeudi 15 novembre 2007 Statut Membre Dernière intervention 13 janvier 2012 1
14 août 2008 à 16:14
ok merci
de toute façon j'ai resolu le truc en faisant
 int col = table.columnAtPoint(e.getPoint());
-1