A voir également:
- Afficher un texte par dessus tout
- Excel cellule couleur si condition texte - Guide
- Transcription audio en texte word gratuit - Guide
- Mettre un texte en majuscule - Guide
- Windows 11 clic droit afficher plus d'options par défaut - Guide
- Afficher mot de passe wifi android - Guide
5 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
10 mars 2013 à 10:35
10 mars 2013 à 10:35
Une idée : tu peux remplacer le contenu de ta JFrame le temps d'afficher ton texte avant d'afficher à nouveau le contenu initial.
Par exemple avec une méthode comme ceci :
Et voici un petit exemple de comment s'en servir :
Par exemple avec une méthode comme ceci :
/** * Remplace temporairement le contenu d'une frame par un contenu provisoire. * @param frame la frame où l'on doit afficher le contenu provisoire * @param temp le contenu provisoire * @param millis la durée d'affichage du contenu provisoire * @return le contenu temporairement masqué */ public static Container replace(final JFrame frame, final Container temp, final long millis) { // Sauvegarde du panel courant final Container pane = frame.getContentPane(); // Dimpensionnement à l'identique du panel remplacant temp.setSize(pane.getSize()); // Remplacement du panel frame.setContentPane(temp); frame.repaint(); // Création d'un délai avant de remettre en place le contenu new Thread() { public void run() { // Attente try {Thread.sleep(millis); } catch (InterruptedException e) {} // Remise en place du panel initial frame.setContentPane(pane); frame.repaint(); } }.start(); return pane; }
Et voici un petit exemple de comment s'en servir :
public static void main(String[] args) { final JFrame frame = new JFrame("HelloWorld"); frame.setLayout(new GridLayout(3,1)); frame.add(new JLabel("Quel est votre nom ?")); final JTextField name = new JTextField(System.getProperty("user.name")); frame.add(name); final JButton hello = new JButton("Bonjour"); frame.add(hello); hello.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // Création du contenu provisoire à afficher final JPanel temp = new JPanel(); temp.add(new JLabel("Bonjour "+name.getText())); replace(frame,temp,2000); } }); frame.pack(); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }
nico147
Messages postés
1
Date d'inscription
dimanche 10 mars 2013
Statut
Membre
Dernière intervention
10 mars 2013
10 mars 2013 à 22:51
10 mars 2013 à 22:51
Bonjour,
Tout d'abord merci de ta réponse, je garde ton plan B au chaud qui reste une solution viable!
Cependant, une telle technique fait momentanément disparaître le contenu initial le temps d'afficher autre chose..
Ce que j'essaye de faire c'est d'écrire un texte par dessus le contenu de la Frame.
Quelqu'un a t il une solution pour remédier à cet inconvénient?
En vous remerciant d'avance,
Nico.
Tout d'abord merci de ta réponse, je garde ton plan B au chaud qui reste une solution viable!
Cependant, une telle technique fait momentanément disparaître le contenu initial le temps d'afficher autre chose..
Ce que j'essaye de faire c'est d'écrire un texte par dessus le contenu de la Frame.
Quelqu'un a t il une solution pour remédier à cet inconvénient?
En vous remerciant d'avance,
Nico.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
11 mars 2013 à 07:05
11 mars 2013 à 07:05
Avec ce que tu veux faire, le problème c'est qu'il va falloir ajouter un composant à la JFrame, or celle-ci peut être soumise à des contraintes de Layout.
Avec mon code d'exemple on pourrait essayer de faire :
Mais ça devient tout de suite n'importe quoi, dans un premier temps ça n'affiche rien, et ensuite si on redimensionne la fenêtre cela modifie complètement l'organisation des composants...
Alors bien sûr, on pourrait faire des fenêtres pop-up qui se mettent en plein milieu, mais j'ai cru comprendre que tu n'en voulais pas :
"Je ne veux pas crée une autre fenetre (car c'est plus moche)"
Avec mon code d'exemple on pourrait essayer de faire :
public void actionPerformed(ActionEvent e) { // Création du contenu provisoire à afficher final JPanel temp = new JPanel(); temp.add(new JLabel("Bonjour "+name.getText())); frame.add(temp); frame.repaint(); //replace(frame,temp,2000); }
Mais ça devient tout de suite n'importe quoi, dans un premier temps ça n'affiche rien, et ensuite si on redimensionne la fenêtre cela modifie complètement l'organisation des composants...
Alors bien sûr, on pourrait faire des fenêtres pop-up qui se mettent en plein milieu, mais j'ai cru comprendre que tu n'en voulais pas :
"Je ne veux pas crée une autre fenetre (car c'est plus moche)"
Lapourax
Messages postés
3006
Date d'inscription
vendredi 15 mars 2013
Statut
Contributeur
Dernière intervention
17 février 2023
334
Modifié par Lapourax le 19/03/2013 à 13:33
Modifié par Lapourax le 19/03/2013 à 13:33
y'a une classe qui permet de faire une fenetre qui prend le focus,
Si je me souviens bien avec sa tu peu faire une petite fenêtre genre sans cadre qui affiche ton texte
Dans le contructeur tu met un timer, au bout de x secondes elle se ferme et c'est pas plus moche que sa...
Apres c'est sur c'est moins bien que le texte en surbrillance sur la première page
Si tu veu garder absolument cette idée je crois que c'est du coté des layout qu'il faut creuser... Mais je sais par expérience que les trucs qui se superposent Java il aime pas sa si c'est pas aligné niquel
le risque c'est que sa t'affiche rien et que sa fasse planter tout ton existant
Mais c'est surement possible =)
JInternalFrame
Si je me souviens bien avec sa tu peu faire une petite fenêtre genre sans cadre qui affiche ton texte
Dans le contructeur tu met un timer, au bout de x secondes elle se ferme et c'est pas plus moche que sa...
Apres c'est sur c'est moins bien que le texte en surbrillance sur la première page
Si tu veu garder absolument cette idée je crois que c'est du coté des layout qu'il faut creuser... Mais je sais par expérience que les trucs qui se superposent Java il aime pas sa si c'est pas aligné niquel
le risque c'est que sa t'affiche rien et que sa fasse planter tout ton existant
Mais c'est surement possible =)
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
19 mars 2013 à 18:26
19 mars 2013 à 18:26
Dans ce genre d'idées il y a surtout les JOptionPane qui permettent de faire apparaître une petite pop-up sans avoir à construire soit même le JInternalFrame, mais je pense que ça fait partie des trucs "moche" dont ne veux pas nico147...
Lapourax
Messages postés
3006
Date d'inscription
vendredi 15 mars 2013
Statut
Contributeur
Dernière intervention
17 février 2023
334
20 mars 2013 à 09:07
20 mars 2013 à 09:07
Ah ou sinon ya JDialog aussi que j'avai oublié
C'est une fenêtre que tu peu configurer facile qui prend le focus...
A voir =)
C'est une fenêtre que tu peu configurer facile qui prend le focus...
A voir =)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question