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

Agents de placement/Fenêtres Java Discussion :

Freeze avec un JDialog


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut Freeze avec un JDialog
    Salut !

    J'ai un probleme avec un JDialog qui me prend la tête depuis des heures ...

    Dans ce JDialog, j'ai une JComboBox; dès que je clique sur un des items, ça freeze ! Et je ne sais absolument pas pourquoi.
    C'est cette instruction qui cause le bug :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jComboBox1.getSelectedItem()
    A noter que si je mets la propriété modale à false, ça marche sans souci mais pas de bol, j'ai besoin de la mettre à true. A noter également que le bouton 'Quitter' fonctionne bien.


    Voici mon 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
    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
    public class Login extends JDialog {
     
    	private static final long serialVersionUID = 3958672121654763604L;	
    	private static Login instance = new Login();  
    	private static User theuser = null;
    	private JPanel jContentPane = null;
    	private JLabel jLabel1 = null;
    	private JButton jButton1 = null;
    	private JComboBox jComboBox1 = null;	
     
    	public Login(){	
    		super();
    		initialize();
    	}
     
    	public static Login getInstance(User user) {
    		theuser = user;
    		return instance;
    	}
     
    	private void initialize() {
    		this.setPreferredSize(new Dimension(300,200));	
    		this.setResizable(false);
    		this.setModal(true);	
    		this.setTitle("Login");
    		this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);	
    		this.setContentPane(getJContentPane());
    		this.pack();
    		this.setVisible(true);
    	}	
     
    	private JPanel getJContentPane() {
    		if (jContentPane == null) {
    			jLabel1 = new JLabel();
    			jLabel1.setBounds(new Rectangle(15, 19, 129, 16));
    			jLabel1.setText("Choisissez votre role :");
    			jContentPane = new JPanel();
    			jContentPane.setLayout(null);
    			jContentPane.add(jLabel1, null);
    			jContentPane.add(getJButton1(), null);
    			jContentPane.add(getJComboBox1(), null);
    		}
    		return jContentPane;
    	}
     
    	private JButton getJButton1() {
    		if (jButton1 == null) {
    			jButton1 = new JButton();
    			jButton1.setBounds(new Rectangle(191, 130, 82, 30));
    			jButton1.setText("Quitter");
    			jButton1.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    					System.exit(0);
    				}
    			});
    		}
    		return jButton1;
    	}
     
    	private JComboBox getJComboBox1() {		
    		if (jComboBox1 == null) {
    			String[] roles = { "Trader", "Middle Office" };
    			jComboBox1 = new JComboBox(roles);		
    			jComboBox1.setSelectedIndex(-1);
    			jComboBox1.setBounds(new Rectangle(15, 54, 142, 26));
    			jComboBox1.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent e) {
    						theuser.setRole(jComboBox1.getSelectedItem().toString());
    					//	System.out.print(jComboBox1.getSelectedItem().toString());					
    				}
    			});
    		}
    		return jComboBox1;
    	}
    }

    Voici la classe appelante :

    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
    public class Application {
     
    	private User user = null;	
     
    	public static void main(String []args) {
    		Application app = new Application();	
    	}	
     
    	public Application(){		
    		user = new User();
    		launchGUI();
    	}
     
    	public void launchGUI(){
    		FactoryDB.register();
    		Login.getInstance(user);		
    		if (user.getRole()!= null) {
    			GUI.getInstance();	
    		}		
    	}
    }

    Merci d'avance !

  2. #2
    Membre expérimenté Avatar de Lethal
    Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 194
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static Login instance = new Login();
    C'est assez étrange d'instancier l'objet en lui même dans la définition des variables!

    Presque certain que c'est pour ça que ça foire.

    Si tu tiens vraiment à faire une factory fais plutot:

    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
    public class Login extends JDialog {
    
            ...	
    	private static Login instance = null; 
            ...
    	
    	public Login()
           {	
    		super();
    		initialize();
    	}
    	
    	public static Login getInstance(User user) {
    
    		theuser = user;
    		if(instance == null)     instance = new Login();
                    return instance;
    	}
         
             ...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 464
    Par défaut
    Ah ben oui tiens, effectivement ! Merci !

    Mais alors, pourquoi ça fonctionnait très bien lorsque ma classe Login héritait d'une JFrame, et plus quand elle hérite d'un JDialog ?...


    D'autre part, dans l'ActionListener correspondant à mon bouton 'Quitter', instance est null, de sorte que je ne peux pas lui appliquer dispose().
    Est-ce normal que instance soit à null (alors que justement, instance est une instanciation de ma classe Login) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private JButton getJButton1() {
    		if (jButton1 == null) {
    			jButton1 = new JButton();
    			jButton1.setBounds(new Rectangle(191, 130, 82, 30));
    			jButton1.setText("Quitter");
    			jButton1.addActionListener(new ActionListener() {
    				public void actionPerformed(ActionEvent e) {			
    					instance.dispose();
    				}
    			});
    		}
    		return jButton1;
    	}


    EDIT : OK, c'est bon, j'ai trouvé

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

Discussions similaires

  1. cursor d'une jframe avec une jdialog
    Par kimjoa dans le forum Agents de placement/Fenêtres
    Réponses: 27
    Dernier message: 03/09/2010, 14h33
  2. [Disque Dur] Problème de freeze avec un disque externe
    Par arnolem dans le forum Composants
    Réponses: 10
    Dernier message: 05/08/2010, 14h07
  3. freeze avec radeon X1650 PCIE
    Par Lilizeclik dans le forum Composants
    Réponses: 9
    Dernier message: 14/10/2009, 22h43
  4. Problème avec une JDialog
    Par Fr33dom dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 19/01/2008, 16h32
  5. Probleme de freez avec ma Ubuntu
    Par Ekinoks dans le forum Ubuntu
    Réponses: 12
    Dernier message: 06/08/2007, 19h58

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