Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/09/2009, à 12:19

amwus

[JAVA] Problème de focus de cellule dans une JTable

Salut à tous...

Bon, ça fait deux jours que je cherche à résoudre un problème, je commence à perdre patience, ça me rend fou !:D

Donc je viens ici solliciter votre aide...
Voila, en fait j'utilise une JTable dans un logiciel en cours de développement. Ce que j'aimerais, c'est lorsqu'on édite une cellule, après avoir validé avec Enter, la cellule suivante soit sélectionnée...

Mais impossible de faire ça !
J'ai réimplémenté la méthode public void editingStopped(ChangeEvent e) de la class JTable, mais apparemment ça ne fonctionne pas, et je ne sais pas pourquoi.

Voici cette fonction :

@Override
public void editingStopped(ChangeEvent e){
  super.editingStopped(e);	   
  setCellSelectionEnabled(true);
	   
  if (getSelectedRow() < getRowCount()){       
    if(getSelectedColumn() == getColumnCount()-1)     
      changeSelection(getSelectedRow()+1,0,false,false);     
    else
      changeSelection(getSelectedRow(), getSelectedColumn()+1,false,false);
  }	   

  requestFocus();	        
}

Et pourtant, si par exemple j'affiche un message dans cette fonction, ce dernier apparait bien lorsque j'appuie sur Enter...
J'avoue que là, je sèche, je crois que j'ai épuisé mes ressources dans ce domaine...

Un coup de main serait le bienvenu !

Merci d'avance ! smile


Black holes are where god divided by zero...

Hors ligne

#2 Le 11/09/2009, à 15:59

jofab

Re : [JAVA] Problème de focus de cellule dans une JTable

Ca fonctionne seulement si tu as "edite" la cellule (si tu as entre du texte dedans...)
si tu tappes juste "enter" tu as le comportement par defaut qui est de passer à la ligne...

ps : ton requestFocus me semble inutile

Hors ligne

#3 Le 11/09/2009, à 16:04

jofab

Re : [JAVA] Problème de focus de cellule dans une JTable

ps 2 : idem, ton setCellSelectionEnabled(true); doit etre fait une seule fois (dans ton constructeur par exemple et non pas à chaque fois que tu arretes l'edition d'une cellule)

Hors ligne

#4 Le 11/09/2009, à 18:35

amwus

Re : [JAVA] Problème de focus de cellule dans une JTable

Mais ce que je veux, c'est lorsque j'ai édité la cellule et que j'ai validé en tapant sur Enter, il passe à la cellule suivante... Comment puis je donc le faire ?


Black holes are where god divided by zero...

Hors ligne

#5 Le 12/09/2009, à 00:15

haile_selassie

Re : [JAVA] Problème de focus de cellule dans une JTable

Salut.
Hmm bah tu pourrais supprimer le comportement de la touche entrée :

InputMap inputMap = (InputMap)UIManager.get("Table.ancestorInputMap");
inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));

puis, faire un éditeur "personnalisé" pour tes cellules :

JTextField  textField = new JTextField();
textField.addKeyListener(new KeyAdapter() {
     public void keyPressed(KeyEvent e){
          if (e.getKeyCode() == e.VK_ENTER  ){
               maJTable.editCellAt(maJTable.getSelectedRow(),maJTable.getSelectedColumn()+1);
               maJTable.requestFocus();
           }
                
       }
            
    });

puis tu changes l'éditeur de tes cellules. Ça je ne sais plus trop comment faire, mais tu dois avoir une fonction  setCellEditor, qui se fait en récupérant une colonne de ta JTable. Et à cette fonction, tu lui fais passer un nouveau DefaultCellEditor, à qui tu fais passer le textField. En bouclant sur tes colonnes, ça devrait le faire.

Je ne sais pas si c'est la meilleure solution, mais elle devrait marcher. J'avais du faire ça à une époque, et je crois que ça fonctionnait... à confirmer ^^
En même temps, pas sur que ça fonctionne dans toutes les situations (Cellule sélectionnée ou éditée), à toi de voir tongue

Dernière modification par haile_selassie (Le 12/09/2009, à 16:24)

Hors ligne

#6 Le 12/09/2009, à 04:00

amwus

Re : [JAVA] Problème de focus de cellule dans une JTable

Merci pour ces réponses...

Si je prend la dernière solution proposée, il enleve bien l'action par défaut d'Enter, mais par contre une appui sur Enter ne fait plus rien du tout maintenant...

Bizarre... On dirait qu'il ne tient pas compte du CellEditor...


Black holes are where god divided by zero...

Hors ligne

#7 Le 12/09/2009, à 16:24

haile_selassie

Re : [JAVA] Problème de focus de cellule dans une JTable

Montre le code que ça te fait

Hors ligne

#8 Le 12/09/2009, à 16:29

amwus

Re : [JAVA] Problème de focus de cellule dans une JTable

VOila ce que j'ai fait :

resultTable = new RXTable(tableModel);  

InputMap inputMap = (InputMap)UIManager.get("Table.ancestorInputMap");
inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));

JTextField  textField = new JTextField();
textField.addKeyListener(new KeyAdapter() {
  public void keyPressed(KeyEvent e){
    if (e.getKeyCode() == e.VK_ENTER  ){
      resultTable.editCellAt(resultTable.getSelectedRow(),resultTable.getSelectedColumn()+1);
       resultTable.requestFocus();
     }
  }           
});

resultTable.setCellEditor(new DefaultCellEditor(textfield));
resultTable.setDefaultRenderer(Object.class, new ResultRenderer());     
resultTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
resultTable.setSelectAllForEdit(true);    
    
JScrollPane scrollTable = new JScrollPane(resultTable);
    
resultTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
resultTable.setFillsViewportHeight(true);

RXTable n'est qu'une extension de JTable, ça ne devrait rien changer. Elle permet juste de commencer l'édition dès qu'on commence à taper dans une cellule...

Merci encore...

Dernière modification par amwus (Le 12/09/2009, à 16:30)


Black holes are where god divided by zero...

Hors ligne

#9 Le 12/09/2009, à 18:41

haile_selassie

Re : [JAVA] Problème de focus de cellule dans une JTable

Hmmm je me rappelle que ça m'avait pas mal posé des problèmes également, quand j'avais voulu changer le comportement d'une JTable. personnellement, le mieux que je puisse te conseiller, c'est de faire des recherches dans la doc ou sur des forums plus spécialisés, parce que je n'ai pas de solution miracle à te proposer.
Il y a la solution d'ajouter un KeyListener à la JTable. Si tu veux quand même le code, voici un petit exemple que j'ai fait, vite fait :

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.InputMap;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.KeyStroke;
import javax.swing.RowSorter;
import javax.swing.SortOrder;
import javax.swing.UIManager;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

import presentation.tableModels.ProduitModel;
import divers.Connexion;
import divers.Produit;

public class Essai {

    static JFrame frame = new JFrame();
    static JTable table;

    public static void main(String[] args) {
	ProduitModel modelPerso;

	ArrayList<Produit> match = Connexion.RequeteProduit();
	modelPerso = new ProduitModel(match);
	modelPerso.setEditionAllowed(true);

	table = new JTable(modelPerso);
	table.setRowSelectionAllowed(true);
	table.setColumnSelectionAllowed(true);
	table.setRowSelectionAllowed(true);
	table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
	TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(table.getModel());
	List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
	sortKeys.add(new RowSorter.SortKey(1, SortOrder.ASCENDING));
	sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
	sorter.setSortKeys(sortKeys);

	table.setRowSorter(sorter);
	InputMap inputMap = (InputMap) UIManager.get("Table.ancestorInputMap");
	inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));
	table.addKeyListener(new KeyAdapter() {
	    public void keyPressed(KeyEvent e) {
		if (e.getKeyCode() == e.VK_ENTER) {
		    table.editCellAt(table.getSelectedRow(), table.getSelectedColumn() + 1);
		    table.changeSelection(table.getSelectedRow(), table.getSelectedColumn() + 1, false, false);
		}
	    }
	});

	JScrollPane scrollTable = new JScrollPane(table);

	table.setFillsViewportHeight(true);

	frame.add(scrollTable);
	frame.setSize(700, 700);
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.setVisible(true);
    }

}

Tu as juste à changer le model de table par le tien. Comme je l'ai dit au dessus, je l'ai fait vite fait, et ça ne marche pas vraiment bien, mais tu peux éventuellement essayer de le débuger, si tu en as le courage ^^

Dernière modification par haile_selassie (Le 12/09/2009, à 20:07)

Hors ligne

#10 Le 12/09/2009, à 20:50

amwus

Re : [JAVA] Problème de focus de cellule dans une JTable

Oui effectivement, ça ne faut aucun changement au niveau de la table, mais au moins, maintenant il détecte la pression sur la touche Enter...

Pas facile à résoudre, ce problème !


Black holes are where god divided by zero...

Hors ligne

#11 Le 14/09/2009, à 16:44

jofab

Re : [JAVA] Problème de focus de cellule dans une JTable

amwus a écrit :

Mais ce que je veux, c'est lorsque j'ai édité la cellule et que j'ai validé en tapant sur Enter, il passe à la cellule suivante... Comment puis je donc le faire ?

Si pour toi, passer à la cellule suivante c'est passer à la cellule immediatement à droite, alors ton premier code fait ce que tu veux. Si tu édites une cellule, tu valides avec "entre", il passe bien à la cellule suivante (peut etre peux-tu ajouter un appel à editCellAt mais a mon sens ce n'est pas necessaire puisque des que l'utilisateur va tapper une touche, il va passer en mode edition.
Quel est ton probleme sur ce code ?
Note si tu ne passe pas en mode edition, effectivement "Enter" va faire passer à la cellule en dessous et non pas à droite.

amwus a écrit :

Si je prend la dernière solution proposée, il enleve bien l'action par défaut d'Enter, mais par contre une appui sur Enter ne fait plus rien du tout maintenant...

InputMap inputMap = (InputMap)UIManager.get("Table.ancestorInputMap");
inputMap.remove(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0));

JTextField  textField = new JTextField();
textField.addKeyListener(new KeyAdapter() {
  public void keyPressed(KeyEvent e){
    if (e.getKeyCode() == e.VK_ENTER  ){
      resultTable.editCellAt(resultTable.getSelectedRow(),resultTable.getSelectedColumn()+1);
       resultTable.requestFocus();
     }
  }           
});

C'est exactement ce que tu lui demandes de faire : tu enleves la gestion du button "Enter". Tu ajoutes bien un keylistener mais sur un composant qui n'est pas visible (et qui ne sera que s'il passe en mode edition)  donc par defaut il ne doit rien se passer si tu appuie  sur enter.

amwus a écrit :

RXTable n'est qu'une extension de JTable, ça ne devrait rien changer. Elle permet juste de commencer l'édition dès qu'on commence à taper dans une cellule...

Comprend pas ?! Une jtable agit comme cela par defaut...

je veux bien t'aider mais je ne comprends pas ton pb, (à moins que ce soit simplement le fait de vouloir passer à la cellule immediatement à droite juste en appuyant sur "entre" meme s'il n'y a pas eu de cellule editée ?)

Hors ligne

#12 Le 14/09/2009, à 20:32

amwus

Re : [JAVA] Problème de focus de cellule dans une JTable

Salut !

Non, tu as bien compris mon problème. Je veux, lorsqu'une édition est terminée, passer à la cellule de droite, après validation par la touche Enter...

Or ce code ne fonctionne pas :-)

Et pour RXTable, elle permet de sélectionner automatiquement le texte lorsqu'on commence à taper, et donc, on remplace le contenu, ce que ne fait pas la simple JTable ;-)

Merci de ton aide...


Black holes are where god divided by zero...

Hors ligne

#13 Le 15/09/2009, à 09:15

jofab

Re : [JAVA] Problème de focus de cellule dans une JTable

essaye :

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.event.*;

public class Test extends JFrame {

	class MyJTable extends JTable {


		public MyJTable()
		{
			super(10,10);
			setCellSelectionEnabled(true);
		}

		@Override
		public void editingStopped(ChangeEvent e){
		  super.editingStopped(e);       
		  
		       
		  if (getSelectedRow() < getRowCount()){       
		    if(getSelectedColumn() == getColumnCount()-1)     { 
		        changeSelection(getSelectedRow()+1,0,false,false);  
		}
		    else {
		        changeSelection(getSelectedRow(), getSelectedColumn()+1,false,false);
		}
		  }       
		}
	}

	public Test() {
		super("Test JTable");
		draw();
		pack();
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);		
	}

	protected void draw()
	{
		getContentPane().setLayout(new BorderLayout());
		getContentPane().add(new MyJTable(), BorderLayout.CENTER);
	}	

	public static final void main(String[] arg) {
		new Test();
		
	}
	
}

Et dit moi ce qu'il fait. Chez moi ca fonctionne comme tu le souhaites (ca passe à la cellule de droite)...

Au fait quelle version de Java as-tu ?
java -version
javac -version
tu utilises le java de sun ou gjc ?

elle permet de sélectionner automatiquement le texte lorsqu'on commence à taper

ok je comprend mieux. J'avais compris simplement editer la cellule. Toi tu veux tout effacer. effectivement ce n'est pas le comportement par defaut.

Hors ligne

#14 Le 15/09/2009, à 09:45

jofab

Re : [JAVA] Problème de focus de cellule dans une JTable

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.event.*;
import javax.swing.table.*;

public class Test extends JFrame {

	class MyJTable extends JTable {

		public MyJTable()
		{
			super(10,10);
			setCellSelectionEnabled(true);
		}

		@Override
  		public Component prepareEditor(TableCellEditor editor, int row, int column) {
			Component c=super.prepareEditor(editor, row, column);
			if (c instanceof JTextField) {
				JTextField txtCellEditor=(JTextField)c;
				txtCellEditor.selectAll();
			}
			return c;
		}

		@Override
		public void editingStopped(ChangeEvent e){
		  super.editingStopped(e);       
		  
		       
		  if (getSelectedRow() < getRowCount()){       
		    if(getSelectedColumn() == getColumnCount()-1)     { 
		        changeSelection(getSelectedRow()+1,0,false,false);  
		}
		    else {
		        changeSelection(getSelectedRow(), getSelectedColumn()+1,false,false);
		}
		  }       
		}
	}

	public Test() {
		super("Test JTable");
		draw();
		pack();
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);		
	}

	protected void draw()
	{
		getContentPane().setLayout(new BorderLayout());
		getContentPane().add(new MyJTable(), BorderLayout.CENTER);
	}	

	public static final void main(String[] arg) {
		new Test();
	}
	
}

C'est pas super propre mais ca fonctionne comme tu veux...

Hors ligne

#15 Le 15/09/2009, à 16:21

amwus

Re : [JAVA] Problème de focus de cellule dans une JTable

Bizarre... ça ne fonctionne pas chez moi... Même en remplaçant la RXTable par une simple JTable, ça ne fontionne pas... J'en déduis que le problème ne vient pas de la. J'ai implémenté les deux méthodes editingStopped et prepareEditor dans ma RXTable, et ça ne fonctionne pas... sad

Je poste ici le code de cette RXTable, au cas où ça pourrait aider...

public class RXTable extends JTable {
  /** Constant to remove the warning */
  private static final long serialVersionUID = 1L;
  private boolean isSelectAllForMouseEvent = false;
	 private boolean isSelectAllForActionEvent = false;
	 private boolean isSelectAllForKeyEvent = false;

	 /**
	  * Constructs a default <code>RXTable</code> that is initialized with 
	  * a default data model, a default column model, and a default selection
	  * model.
	  */
	 public RXTable() {
	   this(null, null, null);
  }

	 /**
	  * Constructs a <code>RXTable</code> that is initialized with
	  * <code>dm</code> as the data model, a default column model,
	  * and a default selection model.
	  *
	  * @param dm        the data model for the table
	  */
	 public RXTable(TableModel dm) {
	   this(dm, null, null);
	 }

	 /**
	  * Constructs a <code>RXTable</code> that is initialized with
	  * <code>dm</code> as the data model, <code>cm</code>
	  * as the column model, and a default selection model.
	  *
	  * @param dm        the data model for the table
	  * @param cm        the column model for the table
	  */
	 public RXTable(TableModel dm, TableColumnModel cm) {
	   this(dm, cm, null);
  }

	 /**
	  * Constructs a <code>RXTable</code> that is initialized with
	  * <code>dm</code> as the data model, <code>cm</code> as the
	  * column model, and <code>sm</code> as the selection model.
	  * If any of the parameters are <code>null</code> this method
	  * will initialize the table with the corresponding default model.
	  * The <code>autoCreateColumnsFromModel</code> flag is set to false
	  * if <code>cm</code> is non-null, otherwise it is set to true
	  * and the column model is populated with suitable
	  * <code>TableColumns</code> for the columns in <code>dm</code>.
	  *
	  * @param dm        the data model for the table
	  * @param cm        the column model for the table
	  * @param sm        the row selection model for the table
	  */
	 public RXTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm) {
	   super(dm, cm, sm);
	 }

	 /**
	  * Constructs a <code>RXTable</code> with <code>numRows</code>
	  * and <code>numColumns</code> of empty cells using
	  * <code>DefaultTableModel</code>.  The columns will have
	  * names of the form "A", "B", "C", etc.
	  *
	  * @param numRows           the number of rows the table holds
	  * @param numColumns        the number of columns the table holds
	  */
	 public RXTable(int numRows, int numColumns) {
	   this(new DefaultTableModel(numRows, numColumns));
	 }

	 /**
	  * Constructs a <code>RXTable</code> to display the values in the
	  * <code>Vector</code> of <code>Vectors</code>, <code>rowData</code>,
	  * with column names, <code>columnNames</code>.  The
	  * <code>Vectors</code> contained in <code>rowData</code>
	  * should contain the values for that row. In other words,
	  * the value of the cell at row 1, column 5 can be obtained
	  * with the following code:
	  * <p>
	  * <pre>((Vector)rowData.elementAt(1)).elementAt(5);</pre>
	  * <p>
	  * @param rowData           the data for the new table
	  * @param columnNames       names of each column
	  */
	 @SuppressWarnings("unchecked")
	 public RXTable(Vector rowData, Vector columnNames) {
	   this(new DefaultTableModel(rowData, columnNames));
	 }

	 /**
	  * Constructs a <code>RXTable</code> to display the values in the two 
	  * dimensional array, <code>rowData</code>, with column names, 
	  * <code>columnNames</code>.
	  * <code>rowData</code> is an array of rows, so the value of the cell 
	  * at row 1,column 5 can be obtained with the following code:
	  * <p>
	  * <pre> rowData[1][5]; </pre>
	  * <p>
	  * All rows must be of the same length as <code>columnNames</code>.
	  * <p>
	  * @param rowData           the data for the new table
	  * @param columnNames       names of each column
	  */
	 public RXTable(final Object[][] rowData, final Object[] columnNames) {
	   super(rowData, columnNames);
	 }

	 
	 public boolean editCellAt(int row, int column, EventObject e) {
	   boolean result = super.editCellAt(row, column, e);

	   if (isSelectAllForMouseEvent	|| isSelectAllForActionEvent	|| 
	       isSelectAllForKeyEvent) {
	     selectAll(e);
	   }

	   return result;
	 }

	 /*
	  * Select the text when editing on a text related cell is started
	  */
	 private void selectAll(EventObject e) {
	   final Component editor = getEditorComponent();

	   if (editor == null || ! (editor instanceof JTextComponent))
	     return;

	   if (e == null)	{
	     ((JTextComponent)editor).selectAll();
	     return;
	   }

	   //  Typing in the cell was used to activate the editor

	   if (e instanceof KeyEvent && isSelectAllForKeyEvent) {
	     ((JTextComponent)editor).selectAll();
	     return;
	   }

	   //  F2 was used to activate the editor

	   if (e instanceof ActionEvent && isSelectAllForActionEvent) {
	     ((JTextComponent)editor).selectAll();
	     return;
	   }

	   //  A mouse click was used to activate the editor.
	   //  Generally this is a double click and the second mouse click is
	   //  passed to the editor which would remove the text selection unless
	   //  we use the invokeLater()

	   if (e instanceof MouseEvent && isSelectAllForMouseEvent) {
	     SwingUtilities.invokeLater(new Runnable() {
	       public void run() {
	         ((JTextComponent)editor).selectAll();
	       }
	     });
	   }
	 }

	 
	 /*
	  *  Sets the Select All property for for all event types
	  */
	 public void setSelectAllForEdit(boolean isSelectAllForEdit) {
	   setSelectAllForMouseEvent( isSelectAllForEdit );
	   setSelectAllForActionEvent( isSelectAllForEdit );
	   setSelectAllForKeyEvent( isSelectAllForEdit );
	 }

	 /*
	  *  Set the Select All property when editing is invoked by the mouse
	  */
	 public void setSelectAllForMouseEvent(boolean isSelectAllForMouseEvent) {
	   this.isSelectAllForMouseEvent = isSelectAllForMouseEvent;
	 }

	 /*
	  *  Set the Select All property when editing is invoked by the "F2" key
	  */
	 public void setSelectAllForActionEvent(boolean isSelectAllForActionEvent) {
	   this.isSelectAllForActionEvent = isSelectAllForActionEvent;
	 }

	 /*
	  *  Set the Select All property when editing is invoked by
	  *  typing directly into the cell
	  */
	 public void setSelectAllForKeyEvent(boolean isSelectAllForKeyEvent) {
	   this.isSelectAllForKeyEvent = isSelectAllForKeyEvent;
	 }

	 
	 @Override
  public Component prepareEditor(TableCellEditor editor, int row, int column) {
    Component c=super.prepareEditor(editor, row, column);
    
    if (c instanceof JTextField) {
      JTextField txtCellEditor=(JTextField)c;
      txtCellEditor.selectAll();
    }
    
    return c;
  }
	 
	 @Override
	 public void editingStopped(ChangeEvent e) {
	   super.editingStopped(e);
	   
	   if (getSelectedRow() < getRowCount()){       
	     if(getSelectedColumn() == getColumnCount()-1) 
	       changeSelection(getSelectedRow()+1,0,false,false);     
      else
        changeSelection(getSelectedRow(), getSelectedColumn()+1,false,false);
	   }
	 } 

	 /**
	  *  Convenience method to order the table columns of a table. The columns
	  *  are ordered based on the column names specified in the array. If the
	  *  column name is not found then no column is moved. This means you can
	  *  specify a null value to preserve the current order of a given column.
	  *  
	  *  @param table        the table containing the columns to be sorted
	  *  @param columnNames  an array containing the column names in the
	  *                      order they should be displayed
	  */
	 public static void reorderColumns(JTable table, Object... columnNames) {
	   TableColumnModel model = table.getColumnModel();

	   for (int newIndex = 0; newIndex < columnNames.length; newIndex++) {
	     try {
	       Object columnName = columnNames[newIndex];
	       int index = model.getColumnIndex(columnName);
	       
	       model.moveColumn(index, newIndex);
	     }
	     catch(IllegalArgumentException e) {
	       ErrorMessage.standardException(e.getMessage());
	     }
	   }
	 }
}

Dernière modification par amwus (Le 15/09/2009, à 16:26)


Black holes are where god divided by zero...

Hors ligne

#16 Le 16/09/2009, à 08:53

jofab

Re : [JAVA] Problème de focus de cellule dans une JTable

Salut,
j'ai un tout petit peu regarder ton code mais je n'ai pas vraiment le temps de lire en details.

As tu essaye mon code directement ?
Si c'est pas le cas essaye et regarde le resultat

Si resultat est ok, compare avec ton code pour trouver les diff ou repart directement de mon code pour ajouter une par une les autres fonctionnalités dont tu as besoins - tu verras vite ou ca coince.
Si le resultat de mon code n'est pas celui attendu, je pense qu'il y a un pb au niveaux de ton java installé. J'ai regulierement des pbs avec des java autre que celui de sun (particulierement avec gnu java).

Hors ligne

#17 Le 28/09/2009, à 16:16

sancelot

Re : [JAVA] Problème de focus de cellule dans une JTable

Utilise les actionmap/inputmap :

matable.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0), "selectNextColumnCell");

Hors ligne