cs_Meriem85
Messages postés43Date d'inscriptiondimanche 13 avril 2008StatutMembreDernière intervention30 juin 2010
-
18 avril 2008 à 20:19
aminewas
Messages postés13Date d'inscriptionmercredi 10 octobre 2007StatutMembreDernière intervention31 mars 2010
-
30 mars 2010 à 00:43
Bonsoir,
Dans mon code j'essais d'ouvrir un JFrame en cliquant sur une cellule d'un JTable mais le proleme est quand je clique sur une cellule tte la ligne sera selectionnée et tous les frame correspondant à ttes les cellules de ctte ligne s'ouvrent ensemble.
Ds mon code j'utilise la methode :
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected,boolean hasFocus, int row, int column)
{
if(isSelected){ // si cellule est sellectionnée le frame correspondant s'ouvre
.....;
...;
interfCell.setVisible(true);
}
}
SVP aidez moi,j'ai meme cherchéds les tutoriols maois j'ai rien trouvé
Bonne nuit et merci d'avance
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201339 18 avril 2008 à 20:49
Salut:
D'abord, la méthode getTableCellRendererComponent() retourne l'éditeur par défaut de ta table. En d'autres termes, cette méthode n'est pas la méthode où tu devras gérer les événements.
Tu peux procéder ainsi:
private JTable table = ...;
table.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
// Coordonnées de la cellule séléctionnée
int selectedRow = table.getSelectedRow();
int selectedColumn = table.getSelectedColumn();
cs_Meriem85
Messages postés43Date d'inscriptiondimanche 13 avril 2008StatutMembreDernière intervention30 juin 2010 18 avril 2008 à 21:00
En realitée je suis debutante en java et j'ai jamais utilisé cette methode:table.getSelectionModel().addListSelectionListener
Je veux savoir comment je peux par la suite afficher le frame
interfCell
c.à.d où est ce que je dois mettre: interfCell.setVisible(true);
Merci d'avance
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201339 18 avril 2008 à 22:01
Salut:
Suppons que tu as créé une interface utilisateur (disons une boite de dialogue).
public class MyDialog extends JDialog {
// Code ...
}
private JTable table = ...;
private JDialog dialog = null;
table.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
// Coordonnées de la cellule séléctionnée
int selectedRow = table.getSelectedRow();
int selectedColumn = table.getSelectedColumn();
// Supposons que lorsqu'on clique sur la cellule (1, 1)
// On lance la boite de dialogue en question
if (dialog == null) {
dialog = new MyDialog();
}
dialog.setVisible(true);
}
}
);
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201339 18 avril 2008 à 22:06
Salut:
J'ai oublié de faire un test sur les coordonnées de la cellule avant de lancer la boite de dialogue.
public class MyDialog extends JDialog {
// Code ...
}
private JTable table = ...;
private JDialog dialog = null;
table.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
// Coordonnées de la cellule séléctionnée
int selectedRow = table.getSelectedRow();
int selectedColumn = table.getSelectedColumn();
// Supposons que lorsqu'on clique sur la cellule (1, 1)
// On lance la boite de dialogue en question if ((selectedRow 1) && (selectedColumn 1)) {
if (dialog == null) {
dialog = new MyDialog();
}
dialog.setVisible(true);
}
}
}
);
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Meriem85
Messages postés43Date d'inscriptiondimanche 13 avril 2008StatutMembreDernière intervention30 juin 2010 19 avril 2008 à 01:47
Bonsoir,
J'ai essayé la partie du code que vous m'avez envoyé mais il y a toujours une exeption: method: valueChanged signature: (Ljavax/swing/event/ListSelectionEvent;)V) Register 13 contains wrong type.
SVP aidez moi si vous savez de quoi il s'agit.
Bonne nuit et merci d'avance
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201339 19 avril 2008 à 06:34
Salut:
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
public class Table extends JFrame {
{
setDefaultCloseOperation(EXIT_ON_CLOSE);
final JTable table = new JTable(
new Object[][] {
{"A", 25},
{"B", 22}
},
new Object[] {"Name", "Age"}
);
table.setPreferredSize(new Dimension(400, 400));
table.setCellSelectionEnabled(true);
table.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
int selectedRow = table.getSelectedRow();
int selectedColumn = table.getSelectedColumn();
cs_Meriem85
Messages postés43Date d'inscriptiondimanche 13 avril 2008StatutMembreDernière intervention30 juin 2010 19 avril 2008 à 13:00
Bonjour(Salem )
Merci bien pour votre aide Ombitious_Developper j'ai essyé votre methode et elle marche cette fois sans exception mais j'ai un autre probleme:lorsque je clique sur une cellule d'un JTable l'interface que je veux s'ouvre 2 fois je sais pas si une erreure ds mon code ou quoi?
Autre question SVP:vous m'avez dit l'autre fois que la méthode getTableCellRendererComponent() retourne l'éditeur par défaut de ta table. En d'autres termes, cette méthode n'est pas la méthode où tu devras gérer les événements. franchement j'ai pas bien compri ce commentaire,par exemple est ce que je peux colorer les cellules du JTable sans utiliser la methode getTableCellRendererComponent().
Bonne journée et desolé pour le derangement.
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201339 19 avril 2008 à 19:47
Salut:
Pour ne pas lancer plus qu'une seule instance de ton interface graphique, tu peux procéder ainsi:
private JTable table = ...;
private InterfCell interfCell = null;
table.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
// Coordonnées de la cellule séléctionnée
int selectedRow = table.getSelectedRow();
int selectedColumn = table.getSelectedColumn();
if ((selectedRow 1) && (selectedColumn 1)) {
// Pour lancer une seule instance
if (interfCell == null) {
interfCell = new InterfCell();
}
interfCell.setVisible(true);
}
}
}
);
La méthode getTableCellRendererComponent() retourne l'éditeur par défaut des cellules de la table. C'est celui qui gère l'affichage des données (couleur, font, ...).
Donc pour colorer les cellules d'un objet JTable tu dois utiliser cette méthode.
cs_Meriem85
Messages postés43Date d'inscriptiondimanche 13 avril 2008StatutMembreDernière intervention30 juin 2010 20 avril 2008 à 19:55
St et je suis vraiment désolé pour le derangement mais j'ai essayé la solution que vous m'avez donné mais le probleme cette fois et que lorsque sur la premiere cellule c'est bon(le frame s'ouvre une seule fois) alors que qd je clique sur n'importe quelle autre cellule c'est toujours le frame qui correspond à la premiere cellule qui s'ouvre(sachant que ds mon code je veux ouvrir le frame "interf" mais ds lequel le contenu change d'une cellule à une autre)
Voici la partie de mon code et SVP si vous avez une solution aidez moi:
private InterfCell interf= null;
private JTable table;
table.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
CustomTransCellRenderer cus=new CustomTransCellRenderer(pathcodvm,pathdatatran,pathregles,vInit);
Hashtable h=new Hashtable();
h=cus.getListRegles();
if (interf == null)
{
interf = new InterfCell();
// Coordonnées de la cellule séléctionnée
int selectedRow = table.getSelectedRow();
int selectedColumn = table.getSelectedColumn();
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201339 20 avril 2008 à 22:25
Salut:
Ce que je fais c'est juste un exemple. Tu dois adapter le code à tes besoins.
1. Normalement tu dois préparer les interfaces graphiques que tu veux lancer lorsqu'on séléctionne une cellule donnée.
2. Discuter selon la cellule séléctionnée quelle interface il faut lancer.
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201339 20 avril 2008 à 22:33
Salut:
Qu'est ce que tu affiches au juste quand tu séléctionnes une cellule?
cs_Meriem85
Messages postés43Date d'inscriptiondimanche 13 avril 2008StatutMembreDernière intervention30 juin 2010 20 avril 2008 à 23:50
Bonsoir,quand je selectionne une cellule c'est toujours l'interface interf qui s'aafiche(interf.setVisible(true)) mais comme je vous ai dit déja et comme il est indiqué ds mon code c'est toujour le contenu du JFrame inter qui sera modifié selon les conditions par cellule(par exemple pour une cellule je peu avoir 2 JPanel contenent des JLabel different,pour une autre je peux avoir un seul JPanel et comme ci de suite) donc l'intrface que j'affiche est dynamique c.à.dire le contenu change d'une cellule à une autre.