Java exception AWT-EventQueue-0" java.lang
harizon007
Messages postés
21
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
bonjour j'ai développer une class JDialog
et quand je l'éxécute, jai l'érreur suivante qui affiche:
default close operation is set to EXIT_ON_CLOSE. ... Exception in thread "AWT-EventQueue-0" java.lang. ... must be one of: DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, or DISPOSE_ON_CLOSE ...
voila la classe un peut simplifier, la méthode main est dans une autre class, donc je fais l'instanciation de cette class pour la lancer.
Merci pour votre réponse.
public class Permis extends JDialog{
private JButton okButton,cancelButton;
private JPanel contenuCentre;
public Permis(JFrame parent){
super(parent,"Ajout d'un nouveau permis",true);
initComposants();
initPanels();
run();
//fenetre principal
setSize(420,380);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
// setResizable(false);
setLocationRelativeTo(null);
}
public void initComposants(){
//Button
okButton= new JButton ("OK");
okButton.setPreferredSize(new Dimension(80,22));
cancelButton = new JButton("cancel");
cancelButton.setPreferredSize(new Dimension(80,22));
//Label
Label1 =new JLabel("Numero license");
Label1.setPreferredSize(dimLabel);
}
public void initPanels(){
Container c=getContentPane();
c.setLayout(new BorderLayout());
contenuCentre = new JPanel();
Border brd=BorderFactory.createEtchedBorder(EtchedBorder.LOWERED) ;
FlowLayout flt=new FlowLayout();
flt.setAlignment(FlowLayout.LEFT) ;
contenuCentre.setLayout(flt);
contenuCentre.setBorder(brd);
JPanel row1=new JPanel(new FlowLayout());
row1.add(Label1);
row1.add(txtLno);
-----------
contenuCentre.add(row1);
//panel du sud
/* panelSud =new JPanel();
panelSud.setLayout(new GridLayout(1,2,5,5));
------------
c.add(contenuCentre,BorderLayout.CENTER);
// c.add(panelSud, BorderLayout.SOUTH);
}
public void run(){
}
}
bonjour j'ai développer une class JDialog
et quand je l'éxécute, jai l'érreur suivante qui affiche:
default close operation is set to EXIT_ON_CLOSE. ... Exception in thread "AWT-EventQueue-0" java.lang. ... must be one of: DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, or DISPOSE_ON_CLOSE ...
voila la classe un peut simplifier, la méthode main est dans une autre class, donc je fais l'instanciation de cette class pour la lancer.
Merci pour votre réponse.
public class Permis extends JDialog{
private JButton okButton,cancelButton;
private JPanel contenuCentre;
public Permis(JFrame parent){
super(parent,"Ajout d'un nouveau permis",true);
initComposants();
initPanels();
run();
//fenetre principal
setSize(420,380);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
// setResizable(false);
setLocationRelativeTo(null);
}
public void initComposants(){
//Button
okButton= new JButton ("OK");
okButton.setPreferredSize(new Dimension(80,22));
cancelButton = new JButton("cancel");
cancelButton.setPreferredSize(new Dimension(80,22));
//Label
Label1 =new JLabel("Numero license");
Label1.setPreferredSize(dimLabel);
}
public void initPanels(){
Container c=getContentPane();
c.setLayout(new BorderLayout());
contenuCentre = new JPanel();
Border brd=BorderFactory.createEtchedBorder(EtchedBorder.LOWERED) ;
FlowLayout flt=new FlowLayout();
flt.setAlignment(FlowLayout.LEFT) ;
contenuCentre.setLayout(flt);
contenuCentre.setBorder(brd);
JPanel row1=new JPanel(new FlowLayout());
row1.add(Label1);
row1.add(txtLno);
-----------
contenuCentre.add(row1);
//panel du sud
/* panelSud =new JPanel();
panelSud.setLayout(new GridLayout(1,2,5,5));
------------
c.add(contenuCentre,BorderLayout.CENTER);
// c.add(panelSud, BorderLayout.SOUTH);
}
public void run(){
}
}
A voir également:
- Exception in thread "awt-eventqueue-0" java.lang.numberformatexception: for input string
- Downloader for pc - Télécharger - Téléchargement & Transfert
- In da place - Forum Mail
- Navigation in private - Guide
- Input signal out of range - Forum Ecran
- Girl in the basement streaming vf - Forum Cinéma / Télé
2 réponses
Bonjour
Le message d'erreur est clair
default close operation is set to EXIT_ON_CLOSE. ... Exception in thread "AWT-EventQueue-0" java.lang. ... must be one of: DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, or DISPOSE_ON_CLOSE ...
ça te rapporte à ceci
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
tu as une ligne de trop, tu ne peux en utiliser qu'une des deux.
Le message d'erreur est clair
default close operation is set to EXIT_ON_CLOSE. ... Exception in thread "AWT-EventQueue-0" java.lang. ... must be one of: DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, or DISPOSE_ON_CLOSE ...
ça te rapporte à ceci
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
tu as une ligne de trop, tu ne peux en utiliser qu'une des deux.
Il serait bon que tu nous donnes le bon code !
Celui que tu nous as donné est incomplet, erroné et ne correspond pas au problème !
Pour qu'on puisses t'aider il faut qu'on puisse faire copier-coller, exécuter, et tomber sur l'erreur. Là avec ton code il faut rajouter les fields, les imports, déboguer, construire un main, et finalement quand je teste, je tombe sur une autre erreur que la tienne !
Mais bon pour analyser ton problème, ce n'est pas le fait que tu utilises deux setDefaultCloseOperation à la suite qui pose problème, mais plutôt que tu utilises les constantes de JFrame dans un composant JDialog... Pour un JDialog, EXIT_ON_CLOSE n'est pas valide, comme l'indique ton message tu peux mettre DISPOSE_ON_CLOSE à la place.
Remarque : "par chance" les constantes JFrame.x_ON_CLOSE, et JDialog.x_ON_CLOSE ont la même valeur (en fait c'est parce que les constantes sont définis dans WindowConstants), mais il n'est pas toujours nécessaire que deux constantes de même nom aient la même valeur alors qu'elles appartiennent à deux classes différentes ! Elles auraient très bien pu être définies indépendamment par JFrame et JDialog avec des valeurs différentes (exemple JFrame.EXIT_ON_CLOSE aurait pu avoir la même valeur que JDialog.DISPOSE_ON_CLOSE) Ici il n'y a donc aucune raison d'utiliser les constantes de JFrame, il faut que tu utilises les constantes de JDialog. Dans ce cas puisque tu hérites, tu peux directement mettre le nom de la constante sans mettre le JDialog. devant :
Celui que tu nous as donné est incomplet, erroné et ne correspond pas au problème !
Pour qu'on puisses t'aider il faut qu'on puisse faire copier-coller, exécuter, et tomber sur l'erreur. Là avec ton code il faut rajouter les fields, les imports, déboguer, construire un main, et finalement quand je teste, je tombe sur une autre erreur que la tienne !
Mais bon pour analyser ton problème, ce n'est pas le fait que tu utilises deux setDefaultCloseOperation à la suite qui pose problème, mais plutôt que tu utilises les constantes de JFrame dans un composant JDialog... Pour un JDialog, EXIT_ON_CLOSE n'est pas valide, comme l'indique ton message tu peux mettre DISPOSE_ON_CLOSE à la place.
Remarque : "par chance" les constantes JFrame.x_ON_CLOSE, et JDialog.x_ON_CLOSE ont la même valeur (en fait c'est parce que les constantes sont définis dans WindowConstants), mais il n'est pas toujours nécessaire que deux constantes de même nom aient la même valeur alors qu'elles appartiennent à deux classes différentes ! Elles auraient très bien pu être définies indépendamment par JFrame et JDialog avec des valeurs différentes (exemple JFrame.EXIT_ON_CLOSE aurait pu avoir la même valeur que JDialog.DISPOSE_ON_CLOSE) Ici il n'y a donc aucune raison d'utiliser les constantes de JFrame, il faut que tu utilises les constantes de JDialog. Dans ce cas puisque tu hérites, tu peux directement mettre le nom de la constante sans mettre le JDialog. devant :
//setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); // un seul suffira setDefaultCloseOperation(DISPOSE_ON_CLOSE);