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 :

Ce JDialog fait ramer mon pc


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    Artisant
    Inscrit en
    avril 2018
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2018
    Messages : 169
    Points : 60
    Points
    60
    Par défaut Ce JDialog fait ramer mon pc
    Bonsoir,

    J'ai une JFrame sans bord et transparente qui affiche un JComponent ou j'ai dessiné dedans, des boutons, ecrit des nom etc....

    A l'appuie d'un bouton j'ouvre un Jdialog :

    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
    class Gameselection extends JDialog{
     
        Gameselection() {
     
     
            JPanel pan = new JPanel();
            this.setTitle("Choix du jeux");
            this.setSize(400, 200);
            this.setAlwaysOnTop(true);
            this.setResizable(false);
            this.setDefaultCloseOperation(this.DISPOSE_ON_CLOSE);
            this.setLocationRelativeTo(null);
            this.setVisible(true);
            this.setContentPane(pan);
            pan.setBackground(Color.ORANGE);
            pan.setLayout(null);
     
     
            JButton bouton1 = new JButton("DELETE");
            bouton1.setBounds(215, 100, 120, 20);
            pan.add(bouton1);
            bouton1.addActionListener(new TraitementBut1());
     
            JButton bouton2 = new JButton("NEW GAME");
            bouton2.setBounds(50, 100, 120, 20);
            pan.add(bouton2);
            bouton2.addActionListener(new TraitementBut2());
     
     
            JComboBox jComboBox1 = new JComboBox();
            JLabel label1 = new JLabel("Game Selection");
     
            pan.add(jComboBox1);
            pan.add(label1);
     
            jComboBox1.setBounds(60, 35, 265, 30);
            label1.setBounds(60, 10, 101, 10);
     
            File directory = new File("src/Games");
            String liste[] = directory.list();
            for (int i = 0; i < liste.length; i++) {
                String aDirectory = liste[i];
     
     
                jComboBox1.addItem(aDirectory);
                jComboBox1.setSelectedItem(Main.GameSelected);
     
     
                JSONObject obj = new JSONObject();
                jComboBox1.addItemListener(e ->
                {
                    if (e.getStateChange() == ItemEvent.SELECTED) {
     
                        obj.put("GAMESELECTED",Main.GameSelected = (String) jComboBox1.getSelectedItem());
     
                        try {
                            FileWriter out = new FileWriter("src/Settings/GameSelection/GameSelection.json");
                            obj.writeJSONString(out);
                            out.close();
     
                        } catch (IOException H) {
                            H.printStackTrace();
                        }
                        try {
                        Main.setupConfigs();
                    }catch(Exception z){
                    z.printStackTrace();
                }
                    }
                });
     
            }
        }
     
        public  class   TraitementBut1 implements ActionListener {
            /**
             * obligatoire car test implémente l'interface ActionListener
             */
            public void actionPerformed(ActionEvent e) {
            }
     
            }
        public  class   TraitementBut2 implements ActionListener {
            /**
             * obligatoire car test implémente l'interface ActionListener
             */
            public void actionPerformed(ActionEvent e) {
     
              new Nouveaujeux();
     
              //  File newdossier = new File("src/Games/"+ "test"); // c'est le nom que vous voulez donner à votre dossier
             //   newdossier.mkdirs();
            }
        }
     
    }

    Ce que je ne comprend pas c'est quand je l'ouvre, je subit une baisse de Frame rate importante (de 144FPS A 20FPS). Ca dure 3/4 seconde et remonte.

    Apres, dès que je je fais une action dessus (clic sur un bouton, clic sur la combobox, en gros quand je lui donne le focus) les Frames rates s’écroule .....

    Au niveau de la consommation de ram et utilisation de processeur je reste comme au lancement de mon application, 1/2% d'utilisation du processeur et 120 Mo de Ram(moyenne)

    Le pc n'es pas le problème, ma config fais tourne n'importe qu'elle jeux, programmes....

    le problème me fait pense comme si j'avais une boucle par fermée...


    Cordialement

    Fred

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    août 2006
    Messages
    3 925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2006
    Messages : 3 925
    Points : 7 722
    Points
    7 722
    Par défaut
    A l'intérieur d'une boucle, mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jComboBox1.addItemListener()
    est surement une très mauvaise idée... mets le en dehors de la boucle.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    Artisant
    Inscrit en
    avril 2018
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2018
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    Bonjour,

    Merci vous intéresser à mon problème.

    J.ai sortie de la boucle le additemlistener mais j.ai toujours cet grosse baisse de frame rate.

    Ayant fais quelque test hier, je me demande si la résolution de mon écran pouvais en être la cause?
    C.est un écran 2k en 2560x1440.

    Je m.explique.

    J.ai deux écran, le deuxième est en 1920x1080.
    Hier j ai démarre le pc sur cette écran et fait tourné mon programme dessus et la j.ai pas le probleme de baisse de frame rate...

    Cordialement


    Fred

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    août 2006
    Messages
    3 925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : août 2006
    Messages : 3 925
    Points : 7 722
    Points
    7 722
    Par défaut
    Impossible a dire ainsi. Faudrait profiler l'exécution pour le savoir plus précisément.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Homme Profil pro
    Artisant
    Inscrit en
    avril 2018
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2018
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    D'accord,

    Pour plus de précision, la baisse de frame rate ne se fais que au survol d'un des bouton ou sur la petite flêche qui sert a déroule la JCombobox.

    Je me demande si il n'y a pas une histoire de Thread...

  6. #6
    Membre du Club
    Homme Profil pro
    Artisant
    Inscrit en
    avril 2018
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2018
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    Bonsoir,

    J'ai essaye plein de chose différente et j'ai réussi a faire quelque chose....

    J'ai ajoute ceci dans mon Main :

    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
     Gameselection.Servicegameselection.execute(() -> {
     
                while (!Gameselection.Servicegameselection.isShutdown()) {
                    Gameselection.jComboBox1.repaint();
                    Gameselection.bouton1.repaint();
                    Gameselection.bouton2.repaint();
                    Gameselection.label1.repaint();
                    try {
                        Thread.sleep(50);
     
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
    et j'ai initialise ma variable dans ma class comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     static ExecutorService Servicegameselection = Executors.newFixedThreadPool(1);
    Je n'es plus la baisse de frame rate et je trouve mon application plus réactive.

    Est ce une bonne façon de faire les choses?



    Fred

  7. #7
    Membre du Club
    Homme Profil pro
    Artisant
    Inscrit en
    avril 2018
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2018
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    Bonjour,

    Apres de nombreuse recherche,

    J'ai trouve d'ou viens ma grosse baisse de framerate.

    Ma Jframe principale est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     frame.setUndecorated(true);
       frame.setBackground(new Color(0, 0, 0, 0));
    C'est cela qui me pose probleme...

    Lorsque je supprime c'est deux ligne, plus de baisse de frame rate meme avec mes 5 autre Jframe ouverte....

    Comment ressoudre le probleme??

    Merci

    Fred

  8. #8
    Membre du Club
    Homme Profil pro
    Artisant
    Inscrit en
    avril 2018
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Artisant
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2018
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    Bonsoir,

    Problème résolu, enfin pour mon type de projet.

    Etant donné que ma JFrame principale est undecorated, j'ai passe mes autre JFrame ainsi et plus de problème de chute de frame rate.


    Pourquoi? ca je ne sait pas mais ca juste a rajoute des boutons de fermeture le tour est joué.



    Cordialement

    Fred

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

Discussions similaires

  1. MATLAB fait ramer mon PC
    Par wilito dans le forum MATLAB
    Réponses: 3
    Dernier message: 06/04/2007, 14h48
  2. [ZoneAlarm 6] Fait ramer ma connection
    Par Hoegaarden dans le forum Sécurité
    Réponses: 8
    Dernier message: 20/09/2005, 15h51
  3. [Graphics2D] Mon panel fait ramer mon appli
    Par legzo dans le forum 2D
    Réponses: 6
    Dernier message: 22/07/2005, 16h16
  4. [TP7] Turbo Pascal 7 fait chauffer mon ordinateur
    Par wanbihan dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 30/01/2005, 12h21
  5. Int 21H AX=716Ch ne fait pas mon affaire !!
    Par TheBigMac dans le forum Assembleur
    Réponses: 4
    Dernier message: 10/09/2004, 21h51

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