2008-12-08 7 views
0

Mon professeur a affecté un projet où une simulation est exécutée via une interface graphique. Pour l'éditer, nous devons créer un élément de menu "Nouveau". Nous n'avons pas appris comment obtenir des données à partir d'une interface graphique, et notre livre ne le couvre pas du tout. Ce que j'essaie de faire, c'est quand la commande "New" est frappée, le focus est déplacé vers l'invite CMD, où System.out. recommence à travailler et invite l'utilisateur à entrer. Cependant, lorsque j'essaie d'implémenter ceci, mon programme se bloque. Que puis-je faire pour résoudre ce problème?Passer de l'interface graphique à l'invite de commandes en Java?

Répondre

0

Il ne semble pas que vous gardiez la référence à votre interface graphique nouvellement créée.Aussi loin que je me souvienne, Java va collecter l'objet FoxGui (ainsi que tout autre objet) si il n'y a aucune référence à cet objet. Essayez de créer une variable globale pour stocker la référence à votre nouvel objet FoxGui. Quelque chose comme ...

FoxGui MyGUIRef; 
public void actionPerformed(ActionEvent event) 
{ 
    System.out.println("Item: " + event.getActionCommand()); 

    // File Menu Controls 
    if (event.getActionCommand().equals("New")) 
    { 
     MyGUIRef = runNew(); 
    } 
} 

//Now returns a reference to FoxGui 
private FoxGui runNew() 
{ 
    return new FoxGui(....) 
} 
+0

Qu'est-ce qu'un FoxGui? –

+0

Pour être honnête, je n'ai absolument aucune idée ... J'aurais pu jurer que c'était dans la question avant. Après avoir regardé d'autres réponses, je pense que cela a pu être dans mon esprit après avoir vu 'renard' dans la réponse d'Eric. Le point de référence/éboueur ne heureusement pas perdre sa signification! :) –

+0

Ok, je le vois maintenant ("nouveau FoxGui (profondeur, largeur, renard, lapin);"); Je suppose que c'est un risque que les gens ajoutent des réponses au lieu de modifier la question. :) –

0

Le System.out est-il dans une fenêtre de terminal (non Java)? Si c'est le cas, je pense que ce serait beaucoup plus difficile que vous ne le pensez.

Je serais tenté de rediriger le System.in/System.out à un JTextPane sur l'interface graphique (De cette façon, il serait beaucoup plus facile de changer le focus etc. Je pense que vous devez essayer d'expliquer ce que vous « re faire un peu mieux dans votre question et peut-être poster une trace de la pile lorsque votre programme se bloque

Quoi qu'il en soit, de faire quelque chose lorsque l'élément de menu « nouveau » est cliqué, vous aurez besoin de le faire.

menuItem.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     // Code here to be performed when the item is clicked 
    } 
}); 
0

Vous savez quoi? J'ai trouvé une solution très simple, JOptionPane. J'avais juste besoin de trouver un bon exemple. Ça marchera bien pour ce que je veux. Merci pour votre aide. Je vais cocher tous ceux qui ont aidé.

+0

Yup yup, bonne chance avec la cession! –

+0

Bon! ... :) Je suis content! – OscarRyz

0

Je sais qu'il est réponse très tard, mais nulle part ...

Il n'y a qu'une seule façon de faire exactement ce que tu veux.

  1. D'abord, vous devez vous rappeler de vous lancer projet, de CMD par java jar jarname.jar
  2. Catch action de clic et effectuer system.in

Information:

Il est le seule solution, car l'interface graphique ne donne jamais de focus à CMD, mais si l'interface graphique est exécutée à partir de CMD, vous pouvez facilement utiliser System.in.

Cordialement, Greg

Questions connexes