JScrollPane avec Layout null
adrien1904
Messages postés
1
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
pour un projet d'Algo je dois réaliser une interface en java.
Je souhaiterai afficher une liste de "carte" (des JPanel colorés) et pouvoir scroller dans cette liste lorsque le nombre de carte fait que les suivantes ne sont pas visibles :

(ici on voit que la dernière carte est coupée et il y peut en avoir d'autres en dessous).
J'ai donc découvert qu'il faut utiliser un JScrollPane mais apparemment cela ne marche pas avec un Layout(null) or c'est ce que nous utilisons en cours...
Voici mon code :
et la methode qui affiche les cartes :
et la méthode main si besoin :
Est-ce que quelqu'un aurait une idée pour résoudre mon problème ?
Merci beaucoup pour votre aide.
Adrien
pour un projet d'Algo je dois réaliser une interface en java.
Je souhaiterai afficher une liste de "carte" (des JPanel colorés) et pouvoir scroller dans cette liste lorsque le nombre de carte fait que les suivantes ne sont pas visibles :

(ici on voit que la dernière carte est coupée et il y peut en avoir d'autres en dessous).
J'ai donc découvert qu'il faut utiliser un JScrollPane mais apparemment cela ne marche pas avec un Layout(null) or c'est ce que nous utilisons en cours...
Voici mon code :
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class FenetrePrincipale extends JFrame implements ActionListener, MouseListener{
LinkedList<Carte> cartesFidelite; //Liste des cartes
JPanel conteneurCarte;
JPanel monConteneurMain;
JScrollPane scrollPane;
public FenetrePrincipale(LinkedList<Carte> c){
cartesFidelite=c; //List of cards
//Window
setTitle("Gestionnaire de cartes");
setBounds(0, 0, 1195, 722);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
//CONTAINER Main
containerMain = new JPanel();
containerMain.setLayout(null);
containerMain.setBackground(Color.white);
//CONTAINER Liste de cartes
conteneurCarte = new JPanel();
conteneurCarte.setLayout(null);
conteneurCarte.setBackground(new Color(242,242,242));
conteneurCarte.setBorder(BorderFactory.createLineBorder(new Color(199,199,199)));
scrollPane = new JScrollPane(conteneurCarte);
scrollPane.setBounds(34, 90, 377,550);
containerMain.add(scrollPane);
//Affichage de la fenetre
this.add(monConteneurMain);
this.setVisible(true);
//Affichage des cartes
refreshListCard();
}
et la methode qui affiche les cartes :
public void refreshListCard (){
conteneurCarte.removeAll();
int i = 0;
for(Carte e : cartesFidelite){
e.setLocation(15,(15+i*(172+15)));
conteneurCarte.add(e);
e.addMouseListener(this);
i++;
}
conteneurCarte.updateUI();
}
et la méthode main si besoin :
public static void main(String[] args){
LinkedList<Carte> ListeCarte = new LinkedList<Carte>();
Carte cartesDeFidelite1= new Carte("Nom","Prenom","Nom Magasin",100,123,Color.black);
Carte cartesDeFidelite2= new Carte("DUPONT","Jean","Auchan",1034,123,new Color(255,103,103));
Carte cartesDeFidelite3= new Carte("DURANT","Adrien","Decathlon",500,123,new Color(103,144,255));
ListeCarte.add(cartesDeFidelite3);
ListeCarte.add(cartesDeFidelite2);
ListeCarte.add(cartesDeFidelite1);
FenetrePrincipale gestionnaireCarte = new FenetrePrincipale(ListeCarte);
}
Est-ce que quelqu'un aurait une idée pour résoudre mon problème ?
Merci beaucoup pour votre aide.
Adrien
Configuration: Macintosh / Firefox 86.0
A voir également:
- JScrollPane avec Layout null
- Microsoft keyboard layout creator - Télécharger - Bureautique
- Logiciel layout gratuit - Télécharger - Outils professionnels
- Comment ouvrir un fichier null ? - Guide
- Layout instagram gratuit - Télécharger - Retouche d'image
1 réponse
Bonjour,
"J'ai donc découvert qu'il faut utiliser un JScrollPane mais apparemment cela ne marche pas avec un Layout(null) or c'est ce que nous utilisons en cours"
On ne peut pas réduire un langage informatique aux seules fonctionnalités autorisées en cours.
Il va donc falloir faire un choix : avoir un programme qui ne fait pas ce que tu veux ou aller au delà du cours.
Remarque : Swing n'est plus maintenu depuis la sortie de Java 8 en 2014, la technologie recommandée pour faire des applications de bureau est désormais JavaFX
"J'ai donc découvert qu'il faut utiliser un JScrollPane mais apparemment cela ne marche pas avec un Layout(null) or c'est ce que nous utilisons en cours"
On ne peut pas réduire un langage informatique aux seules fonctionnalités autorisées en cours.
Il va donc falloir faire un choix : avoir un programme qui ne fait pas ce que tu veux ou aller au delà du cours.
Remarque : Swing n'est plus maintenu depuis la sortie de Java 8 en 2014, la technologie recommandée pour faire des applications de bureau est désormais JavaFX