[JAVA] probleme avec le header d'une JTable

____22 Messages postés 101 Statut Membre -  
____22 Messages postés 101 Statut Membre -
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 101 Statut Membre 1
 
voir l'image ^^ pour comprendre le probleme
0
VspaceG
 
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 101 Statut Membre 1
 
il faut que je trouve d'ou vient le probleme rapidement svp!
merci
-1
arth Messages postés 10414 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
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 101 Statut Membre 1
 
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 101 Statut Membre 1
 
ok merci
de toute façon j'ai resolu le truc en faisant
 int col = table.columnAtPoint(e.getPoint());
-1