Simple Java GUI comme une fenêtre pop-up et drop-down menu
Je n'ai jamais eu à écrire interface graphique en java. Cette fois, je peux aussi sauter et utiliser args
que UI (interface utilisateur).
Mais je me demande si il ya un moyen simple de créer une petite interface graphique pour permettre à l'utilisateur de sélectionner l'une des options.
En d'autres termes, pour mettre en œuvre les askUser()
fonction où l'utilisateur peut sélectionner à partir d'un menu déroulant et appuyez sur "ok".
J'ai passer un peu de temps à apprendre à ce sujet, mais même pas sûr que je sais de quel type de graphique, j'ai besoin pour cette tâche. JFrame? Un composite? Jmenu? Merci.
Voici un exemple de la fonction désirée.
package trygui;
public class Main {
public static void main(String[] args) {
String[] choices = new String[]{"cats", "dogs"};
int choice = askUser(choices);
System.out.println("selected: " + choices[choice]);
}
static int askUser(String[] choices) {
//create pop-up dialog
return 0;
}
}
Mise à jour: j'utilise Netbeans, si cela peut faire la différence.
OriginalL'auteur Serg | 2012-11-15
Vous devez vous connecter pour publier un commentaire.
L'option la plus simple serait d'utiliser le
JOptionPane
APIVous pouvez en savoir plus en avoir une lecture Comment Faire des boîtes de dialogue
Mis à JOUR avec les commentaires
String
dans le main() si j'utilise votre solution?Le problème que vous avez, il y a un tente d'accéder à l'INTERFACE utilisateur de côté le Cas de Dispatching Thread (comme
main
n'est pas lancé au sein de l'EDT). Cela apporte un certain nombre de questions. Vérifier la mise à jour de solution possible. La vraie solution serait d'utiliserSwingUtilties#invokeLater
dans lemain
méthode pour vous rendre dans l'EDT et continuer à lancer le reste de l'application, il vousmerci pour la mise à jour.
href="http://stackoverflow.com/a/12643642/714968">notifiés au sujet de thread initial dans une autre réponse ici
OriginalL'auteur MadProgrammer
Si vous souhaitez créer un Swing GUI, à l'aide d'un IDE comme NetBeans vous donne la simplicité d'utilisation d'un WYSIWYG gui designer, de sorte que vous pouvez simplement faire glisser et déposer les éléments de votre interface en place, puis d'ajouter votre code de logique autour du code de GUI NetBeans sorties.
Il n'est certainement pas quelque chose à se fier à "construire l'interface graphique utilisateur pour vous", mais il fait un excellent travail de mise en place de la fondation pour vous de travailler avec. Vous pouvez également en apprendre beaucoup au sujet de Balancer juste par la lecture à travers et de travail avec le code que NetBeans génère pour l'interface graphique.
Je trouve que c'est un formidable accélérateur dans la prise en main de la conception de Swing apps.
OriginalL'auteur noisewaterphd
Après avoir demandé, j'ai trouvé cette solution. Pour faire plus simple, le
askUser()
retourneString
.J'ai lu sur HAE dans le wiki, et je dois avouer que je ne comprends pas quelles difficultés cette solution peut provoquer une telle tâche simple. Pouvez-vous donner un exemple dans lequel il échoue?
Le principal problème est que vous pouvez vous retrouver avec sale de peintures ou de muter des exceptions (comme un modèle, c'est mis à jour par deux threads simultanément). Alors que c'est un exemple simple, c'est une mauvaise pratique, une pratique qui, si vous ne prenez pas le soin de les éradiquer, va revenir et de vous hanter les moyens qui sont difficiles à déboguer (bonjour le Fil de la course et de l'impasse des questions)
Pour un exemple où il échoue, de créer vous-même
JTable
avec une ligne trieur. À l'aide d'un tableau personnalisé de modèle, de le remplir de l'extérieur de l'EDT, permettant au modèle de feu événements de mise à jour. Vous pourriez également essayer d'obtenir deux ou plusieurs threads pour mettre à jour une zone de texte (à l'aide des intervalles aléatoires) que les quelques exemples que je connaishref="http://stackoverflow.com/a/12643642/714968">pas de problème pour la simulation de l'EDT manque ici
OriginalL'auteur Serg