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

EDT/SwingWorker Java Discussion :

Ajouter des JPanels via une fonction


Sujet :

EDT/SwingWorker Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut Ajouter des JPanels via une fonction
    Bonjour,

    Je ne sais pas si mon problème est dû vraiment à la manipulation de SWING ou est-ce que c'est de la manipulation pure de JAVA :

    J'ai une classe héritant de JPanel (PanScoresNorth). Dans cette classe j'ai créé une fonction "initPanScores(int NbreJoueurs)" (à la ligne 31 de PanScoresNorth) qui doit instancier et ajouter d'autres JPanels (PanPersonalScore) sur le JPanel de cette classe.

    Cela ne fonctionne pas alors que si je mets les instanciations dans le constructeur plutôt que dans une fonction cela fonctionne.


    Dans PanScoreNorth, j'ai essayé de déclarer la classe psc avant le constructeur et dans la fonction "initPanScores(int NbreJoueurs)" mais aucune des deux manières n'a fonctionné.

    Autre problème sûrement lié, j'ai mis dans la fonction une ligne (ligne 35 de PanScoreNorth) colorant le background du panel pour tester : cette ligne fonctionne bien lorsque je suis en débug sur Eclipse, mais en mode RUN, rien ne fonctionne !

    Donc voici les classes d'où l'appel à la fonction est fait et les classes héritant de JPanel :

    Control :
    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
    package ctrl;
     
    import modeles.Joueur;
    import vues.Cadre;
     
    public class Control {
     
    	Cadre cadre = null;
    	Joueur joueur = null;
     
    	int nbreJoueurs = 0;
     
    	public static void main(String[] args) {
    		Control ctrl = new Control();
    	}
     
    //*********CONSTRUCTEUR***********
    	public Control() {
    		//affichage de l'interface graphique
    		Cadre cadre = new Cadre(this);
     
    		//affichage question nombre de joueurs
    		nbreJoueurs = cadre.initNbreJoueurs();
     
    		do {
    		}while(nbreJoueurs == 0);
     
    		//instanciations des panneaux de score des joueurs
    		cadre.initPanScores(nbreJoueurs);
     
    		//affichage question prénoms des joueurs
    		cadre.initPrenoms(nbreJoueurs);
    	}
     
    //*********METHODES***********
    	public int getNbreJoueurs() {
    		return this.nbreJoueurs;
    	}
     
    	public void setNbreJoueurs(int nbreJoueurs_) {
    		this.nbreJoueurs = nbreJoueurs_;
    	}
    }
    Cadre :
    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
    package vues;
     
    import javax.swing.JFrame;
     
    import ctrl.Control;
     
    public class Cadre extends JFrame {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	Control ctrl = null;
    	PanneauPrincipal panneau = null;
     
    	//*********CONSTRUCTEUR*********
    	public Cadre(Control ctrl_) {
    		this.ctrl = ctrl_;
     
    		panneau = new PanneauPrincipal(ctrl);
     
    		//paramétrages cadre
    	    this.setTitle("Jeu de dés");
    	    this.setContentPane(panneau);
    //	    this.setLocationRelativeTo(null);	//fenêtre centrée à l'écran
    	    this.pack();
    	    this.setVisible(true);
    	    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	    this.setResizable(false);
    	}
     
     
    	//*********METHODES*********
    	public int initNbreJoueurs() {
    		return panneau.initNbreJoueurs();
    	}
     
    	public void initPrenoms(int nbreJoueurs_) {
    		panneau.initPrenoms(nbreJoueurs_);
    	}
     
     
    	public void initPanScores(int nbreJoueurs) {
    		panneau.initPanScores(nbreJoueurs);
    	}
    }
    PanneauPrincipal :
    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
    package vues;
     
    import java.awt.BorderLayout;
    import java.awt.Toolkit;
     
    import javax.swing.JPanel;
     
    import ctrl.Control;
    import vues.panneaux.PanActualScore_east;
    import vues.panneaux.PanCommands_south;
    import vues.panneaux.PanDes_center;
    import vues.panneaux.PanScores_north;
     
    public class PanneauPrincipal extends JPanel {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	Control ctrl = null;
    	PanDes_center des = null;
    	String text;
    	PanScores_north scores = null;
     
    	//*********CONSTRUCTEUR*********
    	public PanneauPrincipal(Control ctrl_) {
     
    		this.ctrl = ctrl_;
     
    		this.setPreferredSize(Toolkit.getDefaultToolkit().getScreenSize());
     
    		//Récupération de la taille de l'écran afin de gérer les tailles de Panels
    		Toolkit tk = Toolkit.getDefaultToolkit();  
    		int xScreenSize = ((int) tk.getScreenSize().getWidth());  
    		int yScreenSize = ((int) tk.getScreenSize().getHeight()); 
     
    		//insertions des différents panneaux
    		this.setLayout(new BorderLayout());
     
    		//Paramétrages des dimensions de tous les sous panneaux
    		int xPanNorth = xScreenSize;
    		int yPanNorth = (int) Math.round(yScreenSize * 0.2);
     
    		int xPanSouth = xScreenSize;
    		int yPanSouth = (int) Math.round(yScreenSize * 0.1);
     
    		int xPanEast = (int) Math.round(xScreenSize * 0.2);
    		int yPanEast = (int) Math.round(yScreenSize * 0.3);
     
    		int xPanCenter = (int) Math.round(xScreenSize * 0.8);
    		int yPanCenter = (int) Math.round(yScreenSize * 0.3);
     
    		scores = new PanScores_north(xPanNorth, yPanNorth);
    		PanCommands_south commandes = new PanCommands_south(xPanSouth, yPanSouth);
    		PanActualScore_east actualScore = new PanActualScore_east(xPanEast, yPanEast);
    		des = new PanDes_center(ctrl, xPanCenter, yPanCenter);
     
    		this.add(scores ,BorderLayout.NORTH);
    		this.add(des,BorderLayout.CENTER);
    		this.add(actualScore,BorderLayout.EAST);
    		this.add(commandes,BorderLayout.SOUTH);		
    	}
     
    	//*********METHODES*********
    	public int initNbreJoueurs() {
    		return des.initNbreJoueurs();
    	}
     
    	public void initPrenoms(int nbreJoueurs_) {
    		des.initPrenoms(nbreJoueurs_);
    	}
     
    	public void initPanScores(int nbreJoueurs) {
    		scores.initPanScores(nbreJoueurs);
    	}
    }
    PanScoreNorth :
    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
    package vues.panneaux;
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
     
    import javax.swing.JPanel;
     
    public class PanScores_north extends JPanel {
     
    	private static final long serialVersionUID = 1L;
    	PanPersonalScore psc = null;
    	int xPanSize, yPanSize, yPanPersSize;
     
     
    	//*********CONSTRUCTEUR*********
    	public PanScores_north(int xPanSize_, int yPanSize_) {
    		this.xPanSize = xPanSize_;
    		this.yPanSize = yPanSize_;
     
    		this.setPreferredSize(new Dimension(xPanSize, yPanSize));
     
    		//hauteur du panneauPersonnel affiché
    		yPanPersSize = (int) Math.round(yPanSize * 0.85);
    		this.setLayout(new FlowLayout(1, 15, (int) Math.round((yPanSize - yPanPersSize) / 2)));	//FlowLayout​(int align, int hgap, int vgap)
     
    		this.setBackground(Color.GRAY);
    	}
     
    	//*********METHODES*********
    	public void initPanScores(int nbreJoueurs_) {
    		for(int i = 0; i < nbreJoueurs_; i++) {
    			psc = new PanPersonalScore(xPanSize, yPanPersSize, i);
    			this.add(psc);
    			this.setBackground(Color.RED);
    		}
    	}
    }
    PanPersonalScore :
    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
    package vues.panneaux;
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.Graphics;
     
    import javax.swing.JPanel;
     
    public class PanPersonalScore extends JPanel {
     
    	private static final long serialVersionUID = 1L;
    	int xScreenSize, xPanSize, xTextPos, rank;
    	int yTextPos = 40;
     
    	//*********CONSTRUCTEUR*********
    	public PanPersonalScore(int xScreenSize_, int yPanSize_, int rank_) {
    		this.xScreenSize = xScreenSize_;
    		this.xPanSize = (int) Math.round( xScreenSize / 8);
    		this.xTextPos = (int) Math.round(xPanSize / 4);
    		this.rank = rank_;
     
    		this.setPreferredSize(new Dimension(xPanSize, yPanSize_));
    	}
     
    	//*********METHODES*********
        public void paint(Graphics g) {
            super.paint(g);
            g.setFont(new Font("default", Font.BOLD, 15));
            g.setColor(Color.MAGENTA);
            g.drawString("JOUEUR " + (rank + 1), xTextPos, yTextPos);
            g.setColor(Color.GREEN);
            g.drawString("JOHN", xTextPos, yTextPos + 20);
            g.setColor(Color.MAGENTA);
            g.drawString("SCORE ", xTextPos, yTextPos + 50);
            g.setColor(Color.GREEN);
            g.drawString("1250", xTextPos, yTextPos + 70);
        }
    }

    Pour plus de clarté, je donne toutes les autres classes du projet :
    Joueur :
    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
    package modeles;
     
    public class Joueur{
    	//******attributs
    	int nbrePts;	//nombre de points de départ pour chaque joueur
    	int tour;	//ordre de départ
    	String prenom;
     
    	//******constructeurs
    	public Joueur(int _nbrePts, int _tour, String _prenom){
    		this.nbrePts = _nbrePts;
    		this.tour = _tour;
    		this.prenom = _prenom;
    	}
     
    	//******Setters Getters
    	public void setNbrePts(int _nbrePts){
    			this.nbrePts = _nbrePts;
    	}
     
    	public int getNbrePts(){
    		return nbrePts;
    	}
     
    	public void setTour(int _tour){
    		this.tour = _tour;
    	}
     
    	public int getTour(){
    		return tour;
    	}
     
    	public void setPrenom(String _prenom){
    		this.prenom = _prenom;
    	}
     
    	public String getPrenom(){
    		return prenom;
    	} 
    }
    PanActualScore_East :
    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
    package vues.panneaux;
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.Font;
    import java.awt.Graphics;
     
    import javax.swing.JPanel;
     
    public class PanActualScore_east extends JPanel {
     
    	int xTextPos;
    	int yTextPos;
     
    	public PanActualScore_east(int xPanSize, int yPanSize) {
     
    		this.xTextPos = (int) Math.round(xPanSize / 4);
    		this.yTextPos = (int) Math.round(yPanSize / 2);
     
    		this.setPreferredSize(new Dimension(xPanSize, yPanSize));
     
    		this.setLayout(new FlowLayout(1, 0, (int) Math.round(yPanSize / 2)));	//FlowLayout​(int align, int hgap, int vgap)
     
    		this.setBackground(Color.GREEN);
    	}
     
        public void paint(Graphics g) {
            super.paint(g);
            Color c = g.getColor();
    //        g.setColor(Color.RED);
    //        g.fillRect(10,20,80,80);
    //        g.setColor(Color.YELLOW);
    //        g.fillOval(100,50,80,80);
            g.setFont(new Font("default", Font.BOLD, 15));
            g.setColor(Color.MAGENTA);
            g.drawString("Dé 1", xTextPos, yTextPos);
            g.setColor(Color.RED);
            g.drawString("1", xTextPos + 5, yTextPos + 20);
            g.setColor(Color.MAGENTA);
            g.drawString("Dé 2", xTextPos, yTextPos + 40);
            g.setColor(Color.RED);
            g.drawString("5", xTextPos + 5, yTextPos + 60);
            g.setColor(Color.MAGENTA);
            g.drawString("Dé 3", xTextPos, yTextPos + 80);
            g.setColor(Color.RED);
            g.drawString("5", xTextPos + 5, yTextPos + 100);
            g.setColor(Color.MAGENTA);
            g.drawString("Dé 4", xTextPos, yTextPos + 120);
            g.setColor(Color.RED);
            g.drawString("3", xTextPos + 5, yTextPos + 140);
            g.setColor(Color.MAGENTA);
            g.drawString("Dé 5", xTextPos, yTextPos + 160);
            g.setColor(Color.RED);
            g.drawString("5", xTextPos + 5, yTextPos + 180);
     
            g.setColor(Color.MAGENTA);
            g.drawString("Total", xTextPos, yTextPos + 220);
            g.setColor(Color.RED);
            g.drawString("600", xTextPos + 5, yTextPos + 240);
        }
    }
    PanCommans_South :
    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
    package vues.panneaux;
     
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.Font;
    import java.awt.FontFormatException;
    import java.awt.GraphicsEnvironment;
    import java.io.IOException;
     
    import javax.swing.JButton;
    import javax.swing.JPanel;
     
    public class PanCommands_south extends JPanel {
     
    	public PanCommands_south(int xPanSize, int yPanSize) {
    		this.setLayout(new FlowLayout(1, xPanSize / 8, 0));	//FlowLayout​(int align, int hgap, int vgap)
     
    		this.setPreferredSize(new Dimension(xPanSize, yPanSize));
     
    		//calculs des tailles pour les boutons
    		int heightBout = (int) Math.round(yPanSize * 0.8);
    		int widhtBout = (int) Math.round(xPanSize * 0.45);
     
    		//calcul des tailles de fonts
    		int sizeFont = (int) Math.round(xPanSize * 0.02);
     
    		//Load font from file
    		Font font = null;
    		try {
    			font = Font.createFont(Font.TRUETYPE_FONT, getClass().getResourceAsStream("/font/Eracake.ttf"));
    		} catch (FontFormatException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
    		GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    		ge.registerFont(font);
     
    		JPanel panLancer = new JPanel();
    		JPanel panArret = new JPanel();
     
    		panLancer.setPreferredSize(new Dimension(xPanSize / 3, yPanSize));
    		panArret.setPreferredSize(new Dimension(xPanSize / 3, yPanSize));
     
    		JButton boutLancer = new JButton("Lancer les des"); 
    		JButton boutArreter = new JButton("Arreter le tour");
     
    		boutLancer.setPreferredSize(new Dimension(widhtBout, heightBout));
    		boutArreter.setPreferredSize(new Dimension(widhtBout, heightBout));
     
    		boutArreter.setFont(new Font("Eracake", font.ITALIC, sizeFont));
    		boutLancer.setFont(new Font("Eracake", font.ITALIC, sizeFont));
     
     
    		panLancer.add(boutLancer);
    		panArret.add(boutArreter);
     
    		this.add(panLancer);
    		this.add(panArret);
    	}
    }
    PanDes_center :
    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
    package vues.panneaux;
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
     
    import ctrl.Control;
     
    public class PanDes_center extends JPanel {
     
    	private static final long serialVersionUID = 1L;
     
    	Control ctrl = null;
     
    	int xPanSize, yPanSize;
    	int nbreJoueurs = 0;
     
    	JLabel l1;
    	JTextField jtf;
    	JButton button;
     
    	public PanDes_center(Control ctrl_, int xPanSize_, int yPanSize_) {
    		this.ctrl = ctrl_;
    		this.xPanSize = xPanSize_;
    		this.yPanSize = yPanSize_;
    		this.setPreferredSize(new Dimension(xPanSize, yPanSize));
    	}
     
    	public int initNbreJoueurs() {
     
     
    	    l1 = new JLabel("Quel est le nombre de joueurs ? (entre 2 et 7 joueurs)");
     
    	    Font font = new Font("Arial", Font.BOLD, 35);
     
    	    l1.setFont(font);
    	    l1.setBounds(xPanSize / 6, yPanSize / 2, 1000, 100);
    	    this.add(l1);
     
    	    jtf = new JTextField("2", 10);
    	    jtf.setBackground(Color.cyan);
    	    jtf.setBounds(xPanSize / 6, yPanSize / 2 + 100, 100, 50);
    	    jtf.setFont(font);
     
    	    this.add(jtf);
     
    	    button = new JButton("Valider");
    	    button.setBounds(xPanSize / 6 + 200, yPanSize / 2 + 100, 200, 50);
    	    button.setFont(font);
     
    	    this.add(button);
     
    	    this.setBackground(Color.GRAY);
     
    	    button.addActionListener(new ActionListener() {
     
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				String text = jtf.getText();
     
    				if (text.matches("^([2-7])$")) {
    					ctrl.setNbreJoueurs((int) Integer.parseInt(text));
    	//					nbreJoueurs = (int) Integer.parseInt(text);
    				}
    			}
    		});
     
    	    return nbreJoueurs;
    	}
     
     
    	public void initPrenoms(int nbreJoueurs_) {
    		//les éléments suivants sont pour essayer
    		l1.setText("youpi");
    		jtf.setBackground(Color.red);
    	}
    }
    Ce problème me dépasse ... j'ai besoin d'aide.

    Merci à vous !

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut Le Thread.sleep() cloque
    Dans mon code actuel, j'utilise Thread.sleep() pour simuler une attente, et c'est cela qui bloque l'exécution de mon programme.

    Avec l'interface graphique Swing, il est déconseillé d'utiliser Thread.sleep() car cela bloque le Event Dispatch Thread (le thread responsable de la gestion de l'interface utilisateur).
    En effet, cela peut causer des problèmes d'interface, comme l'absence de mise à jour de la fenêtre pendant l'attente.

    Du coup, je dois revoir mon code pour éliminer le Thread.sleep().


  3. #3
    Membre éprouvé
    Homme Profil pro
    Admin systèmes (Windows, Linux) et réseaux - Dev DB &Java IHM calcul scientifique
    Inscrit en
    Mai 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Admin systèmes (Windows, Linux) et réseaux - Dev DB &Java IHM calcul scientifique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 92
    Par défaut
    Citation Envoyé par francky74 Voir le message
    Dans mon code actuel, j'utilise Thread.sleep() pour simuler une attente, et c'est cela qui bloque l'exécution de mon programme.

    Avec l'interface graphique Swing, il est déconseillé d'utiliser Thread.sleep() car cela bloque le Event Dispatch Thread (le thread responsable de la gestion de l'interface utilisateur).
    En effet, cela peut causer des problèmes d'interface, comme l'absence de mise à jour de la fenêtre pendant l'attente.

    Du coup, je dois revoir mon code pour éliminer le Thread.sleep().

    Bonjour,
    En effet, il faut utiliser la classe timer de swing pour opérer une/des temporisation(s)
    https://docs.oracle.com/javase/tutor...isc/timer.html
    Cordialement

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

Discussions similaires

  1. Impossible d'ajouter des enregistrements via une requête
    Par roman33 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/06/2009, 22h20
  2. Réponses: 3
    Dernier message: 27/09/2008, 12h46
  3. Réponses: 1
    Dernier message: 19/06/2007, 13h21
  4. Ajouter des CHAMPS dans une table via ASP
    Par hysteresis dans le forum Access
    Réponses: 1
    Dernier message: 27/09/2005, 16h39
  5. Réponses: 7
    Dernier message: 20/03/2005, 15h53

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