IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Faire un tableau dans un showMessageDialog


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Par défaut Faire un tableau dans un showMessageDialog
    Bonjour,

    La question est peut être bête mais je dois faire un tableau dans une popup (qui est faite en JOptionPane.showMessageDialog). Est-ce possible? Si oui, qu'est-ce que vous utiliseriez comme objet permettant de faire des tableaux? JTable? GridLayout? Autre chose? Je ne sais vraiment pas vers quoi m'orienter...
    Merci beaucoup

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Par défaut
    Salut,

    je ne pense pas que cela puisse être possible via les methodes JOptionPane.showxxx...
    Par contre ces dernières ne sont rien de plus que des JDialog pré-formattées.
    Donc, à toi de fabriquer ton JDialog dans lequel tu pourras placer les composants que tu souhaites.
    Pour le choix du composant, le JTable semble le plus adapté.
    Attention ! GridLayout n'est pas un composant.

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Caalador Voir le message
    je ne pense pas que cela puisse être possible via les methodes JOptionPane.showxxx...
    C'est tout à fait possible : le "message" des JOptionPanes n'est pas forcément du texte. Cela peut très bien être un composant Swing complexe ou même un tableau (qui sera alors traiter récursivement).

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	JPanel panel = new JPanel();
    	panel.add(new JButton("un bouton"));
    	panel.add(new JCheckBox("une checkbox"));
     
    	// JOptionPane avec un bouton et une checkbox :
    	JOptionPane.showMessageDialog(null, panel);
     
    	JTable table = new JTable(10, 5);
     
    	// JOptionPane avec :
    	//	un bouton et une checkbox.
    	//	une JTable dans son scrollpane
    	//	un message
    	Object[] message = { panel, new JScrollPane(table), "Et voilà !!!!" };
    	JOptionPane.showMessageDialog(null, message );
    a++

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Par défaut
    Merci pour les réponses. Effectivement c'est faisable, j'ai choisi un JTable.
    Par contre, j'ai beau essayé, je me retrouve toujours avec un tableau de 5 par 5 alors que c'est que le nombre de colonnes qui doit être à 5.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    int nbPltf = sess.getNbPlateforme();
    		String columnNames[] = new String[nbPltf];
    		int i = 0;//Colonne
    		String dataValues[][] = new String[nbPltf][100];
    		for(Iterator l=sess.getListPlateforme();l.hasNext();)
            {
                String pltf = (String)l.next();   
                columnNames[i] = pltf;
                int j = 0;//Ligne
                TreeMap listValeur = sess.getListePlateformeValeur(pltf);
                for (Iterator k = listValeur.keySet().iterator(); k.hasNext(); ) 
                {
                	String message = "";
                	String rang = (String) k.next();
                	String valeur = (String)listValeur.get(rang);
                    String prompt = sess.getParam().getAttribut(rang).getNom();
                    message = message + prompt + " " + valeur;
                    dataValues[i][j]=message;
                    j++;
                }//fin for k
                i++;
            }//fin for l
    		if(dataValues!=null && columnNames!=null)
    		{			
    			JTable tableMessage = new JTable( dataValues, columnNames );
    			return tableMessage;
    		}
    Est-ce que vous voyez où est le problème?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Par défaut
    Merci adiGuba, j'avoue être toujours passé par des composants perso, et je ne pensais pas que les JOptionPane étaient personnalisable de cette façon là !

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2004
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 163
    Par défaut
    Pour passer ce post en résolu je vais vous dire comment j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    private JScrollPane getMessageTable(SessionParamClass sess, Component component) {
     
    		int nbPltf = sess.getNbPlateforme();
    		String columnNames[] = new String[nbPltf];
    		int i = 0;//Colonne
    		//On cherche la plus grande valeur pour le nombre de lignes
    		int nbValeur = 0;
    		int nbValeurNew = 0;
    		for(Iterator l=sess.getListPlateforme();l.hasNext();)
            {
                String pltf = (String)l.next();   
    			nbValeurNew = sess.getNbPlateformeValeur(pltf);
        		if(nbValeurNew > nbValeur)
        		{
        			nbValeur = nbValeurNew;
        		}
    		}		
    		String dataValues[][] = new String[nbValeur][nbPltf];
    		for(Iterator l=sess.getListPlateforme();l.hasNext();)
            {
                String pltf = (String)l.next();
                columnNames[i] = pltf;
                int j = 0;//Ligne
     
                TreeMap listValeur = sess.getListePlateformeValeur(pltf);
                for (Iterator k = listValeur.keySet().iterator(); k.hasNext(); ) 
                {
                	String message = "";
    	            String rang = (String) k.next();
    	            String valeur = (String)listValeur.get(rang);
    	            String prompt = sess.getParam().getAttribut(rang).getNom();
    	            message = message + prompt + " " + valeur;
    	            dataValues[j][i]=message;
                    j++;
                }//fin for k
                i++;
            }//fin for l
    		if(dataValues!=null && columnNames!=null)
    		{			
    			JScrollPane pane = new JScrollPane();
    			JTable tableMessage = new JTable( dataValues, columnNames );
    			for(int p=0;p<nbPltf;p++)
    			{
    				tableMessage.getColumnModel().getColumn(p).setPreferredWidth(200);
    				tableMessage.getColumnModel().getColumn(p).setResizable(true);
     
    			}
     
    			tableMessage.getTableHeader().setBackground(Color.lightGray);
    			pane.setViewportView(tableMessage);
     
    			return pane;
    		}
    		return null;
     
    	}
    Et c'est donc un JScrollPane que je mets dans ma messageDialog et ça marche nickel. Merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. faire un tableau dans un tableau
    Par monlou dans le forum Langage
    Réponses: 8
    Dernier message: 05/11/2010, 00h55
  2. [Tableaux] Comment faire un tableau dans une fonction?
    Par Alexandrebox dans le forum Langage
    Réponses: 6
    Dernier message: 06/10/2008, 00h12
  3. Faire un tableau dans un formulaire VB.net
    Par Nikkobass dans le forum Windows Forms
    Réponses: 9
    Dernier message: 14/08/2007, 09h15
  4. [Struts layout] comment faire un ascenseur dans un tableau
    Par chouchou93 dans le forum Struts 1
    Réponses: 4
    Dernier message: 21/02/2006, 09h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo