CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

aide interface graphique java

martin232
martin232
Niveau 8
20 juin 2009 à 12:25:21

bonjour, j'ai besoin d'aide en interface graphique java.

Je n'arrive pas à remplir la listes et les text field. J'ai fait une screen de ma fenètre avec ce que je souhaite faire.

http://img196.imageshack.k.us/img196/3607/imgprojet.png

merci

Iliah
Iliah
Niveau 10
20 juin 2009 à 12:44:54

C'est pas un problème de vue, c'est un un problème d'absence de modèle et de contrôleur :D

Sinon, pour initialiser un JTextField, c'est avec .setText("mon texte");
Pour la liste, il faut définir un modèle. Et la piloter avec un contrôleur. Cela relève plus de la programmation objet que de Java à proprement parler.
Ah, et n'oublie pas de lancer tes appels à swing dans le thread idoine (Swing.invokeLater(Ton thread contenant les opérations qui vont bien pour ton IHM)), si tu ne veux pas observer de sympathiques deadlocks !

martin232
martin232
Niveau 8
20 juin 2009 à 12:49:53

merci pour ton aide, mais
le JTextField doit avoir sa valeur qui change en fonction de la selection dans la List, donc .setText("mon texte"); peut aller quand meme ?

et pourrais tu préciser comment définir un modèle (sachant que les données doivent être lu dans le fichier), et quel contrôleur utiliser ?

merci

Iliah
Iliah
Niveau 10
20 juin 2009 à 13:58:26

Le contrôleur, c'est à toi de l'écrire (Le contrôleur, je rappelle que c'est juste le bout de code qui permet à la vue et au modèle de dialoguer). Pour le modèle, tu dois remplacer celui de la JList avec un maListe.setModel(monModel); monModel est une instance du modèle utilisé par la JList.
Pour ce qui est de la lecture de fichier, ce n'est pas automatique, c'est à toi d'effectuer le parsing et la création des objets correspondants (Dans ton cas, un simple String tokens[] = ligneLueDansLeFichier.split("_"); suffira pour récuper un tableau des tokens de la ligne, ensuite tu n'as qu'à remplir un objet Etudiant avec les champs qui vont bien et une List<Etude>). Pour la réaction lors de la sélection d'un élément, tu dois avoir une fonction getSeletedIndex() qui traîne sur la JList. Tu as juste à ajouter un listener dessus (sur la JList).

martin232
martin232
Niveau 8
20 juin 2009 à 15:23:44

merci, pour l'instant j'ai réussi à mettre les noms dans la liste :)

martin232
martin232
Niveau 8
20 juin 2009 à 16:13:16

bon si quelqu'un veux bien m'aider par msn parce que là j'ai vraiment du mal, qu'il prenne mon adresse dans mon profil :)

Iliah
Iliah
Niveau 10
21 juin 2009 à 02:03:16

http://java.sun.com/docs/books/tutorial/uiswing/components/list.html

Très utile.

_skip
_skip
Niveau 10
21 juin 2009 à 10:04:55

En fait lliah t'a plus ou moins tout dit...

Pour la lecture du fichier, dans les commons IO de apache tu as une très sympathique API pour lire les fichiers lignes par lignes :

LineIterator it = FileUtils.lineIterator(file, "UTF-8");
try {
while (it.hasNext()) {
String line = it.nextLine();
/// do something with line
}
} finally {
LineIterator.closeQuietly(iterator);
}

A chaque itération tu remplis un objet étudiant avec la ligne que tu balances dans un ArrayList<Etudiant>.

Ensuite il te suffit d'implémenter un petit Model pour ta liste qui utilise ton arrayList comme source de données.

En gros ça va hériter de AbstractListModel et contenir ces 2 méthodes :

public int getSize() { return monArrayEtudiant.Size; }
public Object getElementAt(int index) { return monArrayEtudiant.get(index).getNom(); }

Puis tu utilises un listener d'évenènement de type ListSelectionListener sur la JList pour savoir quand la selection change et ainsi populer les textfields selon l'objet étudiant sélectionné.

C'est un scénario master-detail tout con. J'écris le code ci-dessus à l'arrache donc il aura besoin d'un peu d'adaptations.

PS au connaisseurs : Votez la pendaison des développeurs qui s'insurgent contre l'ajout d'une API de binding en Swing.

martin232
martin232
Niveau 8
21 juin 2009 à 10:18:49

merci à vous j'ai réussi, mais il reste un problème :
je ne trouve pas la fonction permettant de savoir quelle ligne est sélectionnée dans la JList. j'ai trouvé getFirstIndex et getLastIndex, mais ça ne correspond pas tout à fait à ce que je cherche.

_skip
_skip
Niveau 10
21 juin 2009 à 10:35:55

http://java.sun.com/javase/6/docs/api/javax/swing/JList.html#getSelectedValue()

martin232
martin232
Niveau 8
21 juin 2009 à 12:06:08

merci beaucoup, ma fenêtre est maintenant finie :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment