Merci pour ta réponse.
Malheureusement, cela ne m'a pas aidé car je n'utilise pas du tout javax.swing, mais un component Window que je mets en plein écran.
Comme ça fait 15 jours que je ne trouve pas la solution, bien entendu cela ruine mon moral. Pour l'instant, c'est mon géranium qui subit ma colère mais pour combien de temps ?
J'ai supprimé tout ce qui n'avais pas de rapport avec l 'écran et le clavier dans mon code.
Ca donne les deux fichiers suivants:
import java.util.*;
import java.awt.*;
import java.awt.image.*;
public class PleinEcran{
/* fonction passant en plein écran et renvoyant un objet Graphics
* permettant de dessiner dessus
*/
public static Window ECRAN_PRINCIPAL = null;
public static Graphics pleinEcran(){
//Récupération de l’environnement graphique disponible à notre //application
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
//Récupération de l’écran
GraphicsDevice gd = ge.getDefaultScreenDevice();
// Création des fenêtres d’affichage
Frame frame = new Frame(gd.getDefaultConfiguration());
Window win = new Window(frame);
// Passage au mode plein écran
gd.setFullScreenWindow(win);
win.requestFocus();
//Sélection de la résolution et de la profondeur de couleur
DisplayMode[] affichages = gd.getDisplayModes();
for(int i=0;i<affichages.length;i++){
if((affichages[i].getWidth()==1025)&&(affichages[i].getHeight()==768)&&(affichages[i].getBitDepth()==32)){
gd.setDisplayMode(affichages[i]);
}
}
//Taille de l’écran
int screenWidth = win.getWidth();
int screenHeight = win.getHeight();
// Récupération de l’instance de ‘Graphics’ correspondant à l’écran
Graphics graphicwindow = win.getGraphics();
// Création du tampon qui représentera les pixels de
// ‘MemoryImageSource’
int size = screenWidth * screenHeight;
int[] pixels = new int[size];
//Création de la ‘MemoryImageSource’
MemoryImageSource source = new MemoryImageSource(screenWidth, screenHeight, pixels, 0, screenWidth);
//Spécifie qu’il s’agit d’une animation avec une succession d’images
source.setAnimated(true);
//A chaque fois qu’il y’aura un changement on mets à jour toute
//l’image
source.setFullBufferUpdates(true);
//Création de l’image associée à ‘MemoryImageSource’
Image offscreen = Toolkit.getDefaultToolkit().createImage(source);
ECRAN_PRINCIPAL = win;
return graphicwindow;
}
Le fichier ci-dessus a toujours fonctionné pour tout ce qui est affichage en plein écran.
Et voici, l'aspect "gestion des frappes clavier" réduit à sa plus simple expression:
import java.awt.*;
import java.awt.event.*;
public class EcranMerde extends KeyAdapter{
public void keyReleased(KeyEvent e){
Toolkit.getDefaultToolkit().beep();
}
public static void main(String[] args){
PleinEcran.pleinEcran();
PleinEcran.ECRAN_PRINCIPAL.addKeyListener(new EcranMerde());
}
}
Et ben ça marche pas.
Rien ne se passe quand je frappe sur le clavier.
Rassurez-vous, j'ai bien vérifié que "Toolkit.getDefaultToolkit().beep();" fonctionne bien tout seul.
Je cherche donc à comprendre pourquoi ma fonction keyReleased n'est jamais appelée même quand j'appuie et je relâche le clavier des milliards de fois.
Pourriez-vous essayer de voir pourquoi ça ne marche pas ?
Bon, j'ai supprimé tout ce qui n'avais pas de rapport avec l 'écran et le clavier dans mon code.
Ca donne les deux fichiers suivants:
import java.util.*;
import java.awt.*;
import java.awt.image.*;
public class PleinEcran{
/* fonction passant en plein écran et renvoyant un objet Graphics
* permettant de dessiner dessus
*/
public static Window ECRAN_PRINCIPAL = null;
public static Graphics pleinEcran(){
//Récupération de l’environnement graphique disponible à notre //application
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
//Récupération de l’écran
GraphicsDevice gd = ge.getDefaultScreenDevice();
// Création des fenêtres d’affichage
Frame frame = new Frame(gd.getDefaultConfiguration());
Window win = new Window(frame);
// Passage au mode plein écran
gd.setFullScreenWindow(win);
win.requestFocus();
//Sélection de la résolution et de la profondeur de couleur
DisplayMode[] affichages = gd.getDisplayModes();
for(int i=0;i<affichages.length;i++){
if((affichages[i].getWidth()==1025)&&(affichages[i].getHeight()==768)&&(affichages[i].getBitDepth()==32)){
gd.setDisplayMode(affichages[i]);
}
}
//Taille de l’écran
int screenWidth = win.getWidth();
int screenHeight = win.getHeight();
// Récupération de l’instance de ‘Graphics’ correspondant à l’écran
Graphics graphicwindow = win.getGraphics();
// Création du tampon qui représentera les pixels de
// ‘MemoryImageSource’
int size = screenWidth * screenHeight;
int[] pixels = new int[size];
//Création de la ‘MemoryImageSource’
MemoryImageSource source = new MemoryImageSource(screenWidth, screenHeight, pixels, 0, screenWidth);
//Spécifie qu’il s’agit d’une animation avec une succession d’images
source.setAnimated(true);
//A chaque fois qu’il y’aura un changement on mets à jour toute
//l’image
source.setFullBufferUpdates(true);
//Création de l’image associée à ‘MemoryImageSource’
Image offscreen = Toolkit.getDefaultToolkit().createImage(source);
ECRAN_PRINCIPAL = win;
return graphicwindow;
}
Le fichier ci-dessus a toujours fonctionné pour tout ce qui est affichage en plein écran.
Et voici, l'aspect "gestion des frappes clavier" réduit à sa plus simple expression:
import java.awt.*;
import java.awt.event.*;
public class EcranMerde extends KeyAdapter{
public void keyReleased(KeyEvent e){
Toolkit.getDefaultToolkit().beep();
}
public static void main(String[] args){
PleinEcran.pleinEcran();
PleinEcran.ECRAN_PRINCIPAL.addKeyListener(new EcranMerde());
}
}
Et ben ça marche pas.
Rien ne se passe quand je frappe sur le clavier.
Rassurez-vous, j'ai bien vérifier que "Toolkit.getDefaultToolkit().beep();" fonctionne bien tout seul.
Je cherche donc à comprendre pourquoi ma fonction keyReleased n'est jamais appelée même quand j'appuie et je relâche le clavier des milliards de fois.
Merci aux âmes d'une infinité bonté qui voudront bien essayer de m'aider à sortir de là.