focus sur JFrame [resolu] - Java - Programmation
Marsh Posté le 20-12-2004 à 11:50:36
j'ai fait un test, ca fonctionne pas dans ce cas precis avec la JFrame ainsi qui contient des sous Frame.
par contre, le focus fonctionne parfaitement avec une JFrame standard
Marsh Posté le 20-12-2004 à 14:48:38
j'ai pas bien compris le problême. ton Focus listener ne reçoit pas les évenement c'est ca ?
remarque : mets ton code entre des balises [cpp ] [/cpp ] (bouton C/C++ dans l'interface de saisie)
Marsh Posté le 22-12-2004 à 11:44:48
merci benou d'avoir reagit cependant j'ai trouve mon probleme.
de plus il fallait que j'herite d'un JDialog et non pas d'une JFrame pour appaler la methode setModal() afin d'obliger la saisie modale
Marsh Posté le 22-12-2004 à 14:07:38
en resume, j'appelle le focus au moment de l'ouverture de la fenetre sur un element et ca fonctionne tres bien pour mettre le focus sur mon objet, j'utilise un JDialog et non plus une JFrame ce qui me permet d'appeler la methode setModal() pour eviter que le programme continue sans la saisie de donnee...
public LaClass extends JDialog implements FocusListener, ActionListener{
....
nom.addFocusListener(this);
...
//focus a l'ouverture de la JDialog sur le JTextField nom
addWindowListener( new WindowAdapter() {
public void windowOpened( WindowEvent e ){
nom.requestFocus();
}
} );
}
Marsh Posté le 20-12-2004 à 11:11:33
Bonjours a tous,
je bloque actuellement sur plusieurs problemes lie a JFrame.
j'ai une application qui possede une fenetre principale, ainsi qu'une autre JFrame qui apparait pour demander la saisie d'information, qui possede une JcomboBox ainsi qu'un tableau d'icone associe affiche dans un JPanel pour l'affichage de l'image selectionne.
le focus n'agit pas lorsque j'instancie ma classe et apres avoir fait un request focus.
voici l'instanciation de la fenetre de saisie faite dans la classe principale:
ListeDeroulanteTest lm = new ListeDeroulanteTest("SousApplication" );
lm.setLocation(300, 300);
lm.requestFocus();
contenu de ListeDeroulanteTest:
public class ListeDeroulanteTest extends JFrame implements FocusListener{
private JComboBox images;
private JLabel etiquette;
public Icon[] icones;
public JTextField nom;
private String noms[] =
{ "./images/ConfigurationItem.32.gif",
"./images/ServiceLevelAgreement.32.gif",
"./images/WorkGroup.32.gif",
"./images/africa.32.gif",
"./images/aix.32.gif",
};
public ListeDeroulanteTest(String nomType)
{
super( "./imagesTest de JComboBox" );
Container c = getContentPane();
c.setLayout( new GridLayout(5, 1) );
//initialisation de la structure de donnee
icones = new Icon[noms.length];
JLabel texte = new JLabel("Saisie " + nomType);
nom = new JTextField();
JButton validation = new JButton("valider" );
images = new JComboBox( noms );
images.setMaximumRowCount( 123 );
//positionnement des etiquettes par default
if(nomType.equals("SousApplication" )){
images.setSelectedIndex(10);
}
//initialisation du tableau d'icones
for(int i=0; i< noms.length; i++){
//icones[i] = new ImageIcon( "./images/" + noms[ i ] );
icones[i] = new ImageIcon( noms[ i ] );
}
images.addItemListener(
new ItemListener() {
public void itemStateChanged( ItemEvent e )
{
etiquette.setIcon(
icones[ images.getSelectedIndex() ] );
}
}
);
etiquette = new JLabel( icones[ 0 ] );
c.add(texte);
c.add(nom);
c.add(validation);
c.add(images);
c.add( etiquette );
setSize( 350, 100 );
setFocusable(true);
addFocusListener(this);
show();
}
public void focusGained(FocusEvent e) {
}
public void focusLost(FocusEvent e) {
}
}
voila donc le focus n'agit pas avec ce code.
quelqu'un voit - il l'erreur?
Message édité par kungouf le 22-12-2004 à 14:08:05