Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

jdialog modal slow 1.6

3 réponses
Avatar
pcouas
Bonjour

J'ai une applet ou a la fin de init() j'avais ajouter une JdialogBox
modal, permettant de saisir le mot de passe afin d'authoriser ou non
certaines actions.
Jusqu'en JRE 1.5 cela fonctionnais bien MAIS avec le JRE 1.6, je vois
bien ma fenetre, mais je ne peux rien saisir ?

Une id=E9e
Merci d'avance
Philippe

3 réponses

Avatar
TestMan
Bonjour

J'ai une applet ou a la fin de init() j'avais ajouter une JdialogBox
modal, permettant de saisir le mot de passe afin d'authoriser ou non
certaines actions.
Jusqu'en JRE 1.5 cela fonctionnais bien MAIS avec le JRE 1.6, je vois
bien ma fenetre, mais je ne peux rien saisir ?

Une idée
Merci d'avance
Philippe



Bonjour,

Pouvez un exemple de code démontrant le problème ?

NB : merci de mettre des titre dans une langue adaptée à celle du groupe
ou vous postez ;-)

A+
TM

Avatar
pcouas
Bonjour,

Cela va etre complique de mettre un exemple simple du code .
La boite modal, semble fonctionner sur un exemple simple .
Alors que englober dans le projet complet et uniquement en JRE1.6, on
arrive pas sur le TextField

Philippe

package util.applet;


import java.beans.*; //Property change stuff
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


// Il semblerait que les System.out permettent au Systeme de respirer

public class PasswordDialog extends JDialog {
private char[] typedText = null;

private JOptionPane optionPane;


final JPasswordField passwordField = new JPasswordField(10);


public String getPassword() {
if(typedText!=null)
{
return new String(typedText);
}
else
return null;
}

public PasswordDialog(Frame parent,final String btnString1,final
String btnString2) {
this(parent,btnString1,btnString2,true,true);
}
public PasswordDialog(Frame parent,final String btnString1,final
String btnString2,boolean mmodal,boolean visible) {
//super(parent, true);
super(parent, mmodal); // TEST REGIS du 25/06/07

setTitle("Enter Password :");


Object[] array = {passwordField};


//final String btnString1 = "Ok";
//final String btnString2 = "Cancel";


Object[] options = { btnString1, btnString2 };
optionPane = new JOptionPane(array,
JOptionPane.PLAIN_MESSAGE,
JOptionPane.OK_CANCEL_OPTION,
null,
options,
options[0]);
setContentPane(optionPane);
System.out.println("PasswordDailog 01");
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
/*
* Instead of directly closing the window,
* we're going to change the JOptionPane's
* value property.
*/
optionPane.setValue(new Integer(JOptionPane.CLOSED_OPTION));
}
public void windowOpened( WindowEvent e ) {
System.out.println("PasswordDailog 02");
SwingUtilities.invokeLater( new Runnable() {
public void run() {
System.out.println("PasswordDailog REQUEST FOCUS 03");
passwordField.requestFocus();
System.out.println("PasswordDailog AP REQUEST FOCUS
03b");
}
});
System.out.println("PasswordDailog REQUEST FOCUS 03c");
}
});

System.out.println("PasswordDailog 04");
passwordField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("PasswordDailog actionPerformed 05");
optionPane.setValue(btnString1);
System.out.println("PasswordDailog 05b");
}
});


optionPane.addPropertyChangeListener(new PropertyChangeListener()
{
public void propertyChange(PropertyChangeEvent e) {
String prop = e.getPropertyName();
System.out.println("PasswordDailog 06");

if (isVisible()
&& (e.getSource() == optionPane)
&& (prop.equals(JOptionPane.VALUE_PROPERTY) ||
prop.equals(JOptionPane.INPUT_VALUE_PROPERTY))) {
Object value = optionPane.getValue();

System.out.println("PasswordDailog 06");
if (value == JOptionPane.UNINITIALIZED_VALUE) {
//ignore reset
return;
}


// Reset the JOptionPane's value.
// If you don't do this, then if the user
// presses the same button next time, no
// property change event will be fired.
optionPane.setValue(JOptionPane.UNINITIALIZED_VALUE);


if (value.equals(btnString1)) { // Si on fait Ok
typedText = passwordField.getPassword();
System.out.println("PasswordDailog ok");
} else { // user closed dialog or clicked cancel
typedText = null;
}
setVisible(false);
}
}
});


pack();


setLocationRelativeTo(parent);
setVisible(visible);
}
}
Avatar
TestMan
Bonjour,

Cela va etre complique de mettre un exemple simple du code .
La boite modal, semble fonctionner sur un exemple simple .
Alors que englober dans le projet complet et uniquement en JRE1.6, on
arrive pas sur le TextField

Philippe

<...>


Bonjour,

Essayez de mettre cette boite modale
http://java.sun.com/docs/books/tutorial/uiswing/examples/components/DialogDemoProject/src/components/CustomDialog.java
dans votre applet pour voir.

Si celà persiste, passer le tout au debogeur pour voir ce qui bloque ...
et peut-être trouver le schmillblick.

A+
TM