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

 Java Discussion :

JScrollPane dans une JList


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Décembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 52
    Points : 34
    Points
    34
    Par défaut JScrollPane dans une JList
    Bonjour à tous

    Après avoir fait quelques recherches sur différents forums et javadoc, je me lance: J'ai, entre autres, 2 listes dans mon JPanel et je veux ajouter un JScrollpane (barre de défilement) à chaque liste mais je n'y arrive pas.
    Voilà le code:


    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
    DefaultListModel<String> listModel = new DefaultListModel<String>();
    		DefaultListModel<String> listModel1 = new DefaultListModel<String>();
    		JList<String> liste_ingredient = new JList<String>();
    		JList<String> liste_produit_simple = new JList<String>();
     
    liste_ingredient.setSelectionMode(0);
    		liste_produit_simple.setSelectionMode(0);
    		liste_ingredient.setVisibleRowCount(6);
    		liste_produit_simple.setVisibleRowCount(6);
    		JScrollPane scroll1 = new JScrollPane(liste_ingredient);
    		JScrollPane scroll2 = new JScrollPane(liste_produit_simple);
    liste_ingredient.setCellRenderer(new DefaultListCellRenderer());
    				liste_ingredient.setModel(listModel);
    				liste_ingredient.setBorder(new LineBorder(Color.GREEN));
    				liste_produit_simple.setCellRenderer(new DefaultListCellRenderer());
    				liste_produit_simple.setModel(listModel1);
    				liste_produit_simple.setBorder(new LineBorder(Color.GREEN));
    Le truc c'est que avec ou sans l'objet JScrollPane dans mon code çà ne change rien.
    Il manque peut-être des instructions mais je vois pas lesquelles.

    Je poste la classe dans son intégralité si çà peut aider:


    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.GridLayout;
    import java.awt.Image;
    import java.io.File;
    import java.io.IOException;
    import java.text.NumberFormat;
     
    import javax.imageio.ImageIO;
    import javax.swing.BoxLayout;
    import javax.swing.DefaultListCellRenderer;
    import javax.swing.DefaultListModel;
    import javax.swing.JButton;
    import javax.swing.JFormattedTextField;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JSeparator;
    import javax.swing.SwingConstants;
    import javax.swing.border.LineBorder;
     
     
    public class Onglet_stock extends JPanel {
     
    	/**
             * 
             */
    		public Onglet_stock(){
     
     
     
    		// nos panels et objets:
    		JPanel pan1 = new JPanel();
    		JPanel pan2 = new JPanel();
    		JPanel pan3 = new JPanel();
    		JPanel pan4 = new JPanel();
    		JPanel pan5 = new JPanel();
    		JPanel pan6 = new JPanel();
    		JPanel pan7 = new JPanel();
    		JPanel pan8 = new JPanel();
    		DefaultListModel<String> listModel = new DefaultListModel<String>();
    		DefaultListModel<String> listModel1 = new DefaultListModel<String>();
    		JList<String> liste_ingredient = new JList<String>();
    		JList<String> liste_produit_simple = new JList<String>();
    		JButton reinit = new JButton("MAJ Ingrédients");
    		JButton cuisiner = new JButton ("Acheter!");
    		JButton prod_simple = new JButton("MAJ Produits simples");
    		JSeparator sep1 = new JSeparator(SwingConstants.HORIZONTAL);
    		JSeparator sep2 = new JSeparator(SwingConstants.HORIZONTAL);
    		// on les formes
    		pan1.setLayout(new GridLayout(2, 3, 20, 20));
    		pan2.setLayout(new BoxLayout(pan2, BoxLayout.LINE_AXIS)); 
    		pan3.setLayout(new BoxLayout(pan3, BoxLayout.LINE_AXIS)); 
    		pan4.setLayout(new BoxLayout(pan4, BoxLayout.LINE_AXIS));
    		pan5.setLayout(new GridLayout(1, 2, 20, 20));
    		pan7.setLayout(new GridLayout(1, 3, 20, 20));
     
    		pan6.setLayout(new BoxLayout(pan6, BoxLayout.PAGE_AXIS));
     
    		//On autorise la sélection de plusieurs items dans la liste
    		liste_ingredient.setSelectionMode(0);
    		liste_produit_simple.setSelectionMode(0);
    		liste_ingredient.setVisibleRowCount(6);
    		liste_produit_simple.setVisibleRowCount(6);
    		JScrollPane scroll1 = new JScrollPane(liste_ingredient);
    		JScrollPane scroll2 = new JScrollPane(liste_produit_simple);
     
     
    		// le Label
     
    		JLabel pres = new JLabel("Approvisionnement du stock");
    		pres.setFont(new Font("Tahoma", Font.BOLD, 30));
    		pres.setForeground(Color.GREEN);
    		pan4.add(pres);
     
    		prod_simple.setPreferredSize(new Dimension(20,20));
    		// le panneau de préparation des produits (composés) lié à la méthode CuisinerProduits()
    		    // On instancie tous nos objets
    		//Création de la liste
     
     
    				liste_ingredient.setCellRenderer(new DefaultListCellRenderer());
    				liste_ingredient.setModel(listModel);
    				liste_ingredient.setBorder(new LineBorder(Color.GREEN));
    				liste_produit_simple.setCellRenderer(new DefaultListCellRenderer());
    				liste_produit_simple.setModel(listModel1);
    				liste_produit_simple.setBorder(new LineBorder(Color.GREEN));
     
     
    				Ingredients.getInstance();
    				ProduitsEnVente.getInstance();
     
    				for (int i=Ingredients.getStockIngredients().size()-1 ; i>=0;i--){
    					String temp = Ingredients.getStockIngredients().get(i).getNom_ingredient();
    					listModel.addElement(temp);
    				}
    				for (int j=ProduitsEnVente.getProducts().size()-1 ; j>=0 ; j--){
    					 String temp = ProduitsEnVente.getProducts().get(j).getNom_produit();
    					listModel1.addElement(temp);
    				}
     
    				JFormattedTextField nom_produit1 = new JFormattedTextField();
     
     
    		JLabel nom_produit=new JLabel("Ingrédients à commander");
    		JLabel prix_produit=new JLabel("Prix unitaire");
    		JLabel qte_produit=new JLabel("Quantité");
    		JLabel liste_ingred=new JLabel("Liste des ingrédients :   ");
    		JLabel liste_prod = new JLabel("Liste des produits simples :   ");
     
    		JFormattedTextField prix_produit1 = new JFormattedTextField();
     
     
    		JFormattedTextField qte_produit1 = new JFormattedTextField(NumberFormat.getIntegerInstance());
     
    		Font police = new Font("Arial", Font.BOLD, 14);
     
    		// On les modifie
     
    		nom_produit1.setFont(police);
    		prix_produit1.setFont(police);
    		qte_produit1.setFont(police);
    		nom_produit.setFont(police);
    		prix_produit.setFont(police);
    		qte_produit.setFont(police);
    		liste_ingred.setFont(police);
     
    		// Pour le 1er produit
    		nom_produit1.setPreferredSize(new Dimension(40, 30));
            nom_produit1.setForeground(Color.ORANGE);
            prix_produit1.setPreferredSize(new Dimension(40, 30));
            prix_produit1.setForeground(Color.ORANGE);
            qte_produit1.setPreferredSize(new Dimension(40, 30));
            qte_produit1.setForeground(Color.ORANGE);
     
     
    // On les ajuste dans le JPanel
     
            pan1.add(nom_produit);
            pan1.add(prix_produit);
            pan1.add(qte_produit);
    		pan1.add(nom_produit1);
    		pan1.add(prix_produit1);
    		pan1.add(qte_produit1);
     
    		pan2.add(liste_ingred);
    		pan2.add(liste_ingredient);
    		pan5.add(cuisiner);
    		pan5.add(reinit);
    		pan4.add(pres);
    		pan7.add(liste_prod);
    		pan7.add(liste_produit_simple);
    		pan7.add(prod_simple);
     
     
    		// le Choix des boutons
     
    		// on ajoute dans le JPanel
     
     
    		pan6.add(pan4);
    		pan6.add(pan1);
    		pan6.add(sep1);
    		pan6.add(pan2);
    		pan6.add(sep2);
    		pan6.add(pan5);
    		pan6.add(pan7);
    		pan6.add(pan8);
    		add(pan6);
     
     
     
    	}
     
    	public void paintComponent(Graphics g){
    		try {
    			Image img = ImageIO.read(new File("stock.jpg") );
    			g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
    		}
    		catch (IOException e){
    			e.printStackTrace();
    		}
    	}
     
    }

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Bonjour,

    En fait quand tu ajoutes une liste dans un JScroll c'est le JScroll qu'il faut ajouter et plus la liste.
    Essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    pan2.add(scroll1);
    pan7.add(scroll2);
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Décembre 2011
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    Ah oui c'est bien çà merci! Par contre, comme on peut voir j'ai mis des boutons MAJ pour actualiser mes.différentes listes, mais n'y a t-il pas un moyen pour que ce soit fait automatiquement? J'ai regardé un peu les threads et je sais pas trop si c'est çà qui permettrait cela.

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    humm, je ne pense pas, regarde du côté des listeners des fenêtres. Quand tu arrives sur ta fenêtre tu met à jours tes tableaux. Mais un bouton maj stock n'est pas une mauvaise ergonomie pour ma part.

    Les threads c'est un processus qui tourne en parallèle du processus main de ton application, donc à part contrôler que ta liste ne change pas de taille et la changer sinon ( ce code n'est pas le plus simple je pense) je ne vois pas pour ma part.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

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

Discussions similaires

  1. Récupérer une valeur dans une JList
    Par Noosymer dans le forum Composants
    Réponses: 6
    Dernier message: 17/06/2010, 23h53
  2. Afficher une Hashtable dans une Jlist
    Par pouillou dans le forum Composants
    Réponses: 3
    Dernier message: 26/05/2006, 13h53
  3. Images dans une JList
    Par pouillou dans le forum Composants
    Réponses: 7
    Dernier message: 08/05/2006, 15h10
  4. Inserer une jProgressBar dans une Jlist
    Par Noosymer dans le forum Composants
    Réponses: 1
    Dernier message: 18/04/2006, 19h56
  5. inserer une image et du texte dans une Jlist
    Par cellestion dans le forum Composants
    Réponses: 4
    Dernier message: 03/03/2006, 23h47

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