2009-10-02 6 views
1

J'ai écrit un programme java et je l'exécute via la ligne de commande comme "java MyProgram"Comment démarrer un programme Java?

Maintenant, je veux avoir une interface graphique qui a un bouton de démarrage, de pause et d'arrêt. Comment démarrer ce programme Java en cliquant sur le bouton Démarrer. Comment faire une pause et comment l'arrêter?

Répondre

0

Vous devez d'abord écrire votre « Formulaires » ...

Ce sera une ressource utile pour un débutant.

Basics

+0

Je pense que cela résout un problème différent ... – fortran

4

Je suppose que votre programme est quelque chose comme:

public class MyProgram { 

    public void doSomething() { 
    // ... does something ... 
    } 

    public static void main(String[] args) { 
    new MyProgram().doSomething(); 
    } 
} 

Je recommande la lecture du Swing Tutorial, mais une interface graphique simple pour lancer votre programme pourrait être quelque chose comme:

public class MyProgramLauncher { 
    public static void main(String[] args) { 
    final MyProgram myProgram = new MyProgram(); 

    JFrame frame = new JFrame("My Program"); 
    JComponent cp = frame.getContentPane(); 
    cp.add(new JButton(new AbstractAction("Start") { 
     public void actionPerformed(ActionEvent e) { 
     myProgram.doSomething(); 
     } 
    })); 
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
    frame.pack(); 
    frame.setVisible(true); 
    } 
} 

Si votre classe a une fonction pause(), vous pouvez ajouter un JButton similaire pour appeler cette fonction, mais yo Je devrais écrire/implémenter la fonction.

Vous devrez cependant lancer ceci avec java MyProgramLauncher, ce qui n'est pas très excitant. Vous obtiendrez néanmoins une interface graphique de base dans laquelle vous pourrez tester le démarrage, la mise en pause, etc.

Pour transformer votre programme en quelque chose sur lequel vous pouvez double-cliquer, vous devez créer un JAR file. Il s'agit essentiellement d'un fichier ZIP spécial qui inclut toutes les classes de votre application, plus un fichier manifest.xml qui décrit ces classes et (pour les fichiers JAR exécutables) identifie la "classe principale" dont la méthode main() doit être appelée lorsque le fichier JAR est lancé.

Pour transformer ce fichier JAR en une application déployable plus ou moins autonome, il y a plus de mal et il y a beaucoup d'options. Le Deployment Tutorial pourrait être un endroit pour commencer.

1

Fondamentalement, vous avez besoin d'un lanceur natif, mais je ne peux pas comprendre ce que vous voulez dire exactement par "pause" ... Envoi du processus pour dormir?

Je pense que cela devrait être très facile à implémenter avec un shellscript utilisant la commande xdialog dans un système Unix.

Vous aurez besoin de mettre en œuvre une machine d'état:

  • État: "Nous nous sommes arrêtés"
    • Démarrer: exécuter java yourprogram et stocker le PID dans une variable. Changer d'état à "commencer"
    • Pause: rien/désactivé
    • Arrêt: rien/désactivé
  • Etat: "Started"
    • Début: rien/désactivé
    • Pause : envoie le signal STOP (comme ctr + z) au processus.Changer l'état en "en pause"
    • Stop: envoie le signal INT (comme ctr + c) au processus. Changer d'état à "Stopped"
  • Etat "Paused"
    • Début: rien/désactivé
    • Pause: envoyer le signal CONT (comme faisant fg) au processus. Modifier le début de "Démarré"
    • Stop: envoie le signal INT (comme ctr + c) au processus. Changer d'état à « Stopped »

Avec cela, vous pouvez boucle dans le script et réagir aux boutons. Regardez la référence pour tuer et dialog ou xdialog pour plus de détails sur la mise en œuvre.

+2

Un lanceur natif n'est pas nécessaire. Un exécutable .jar fonctionne très bien et ne restreint pas artificiellement la compatibilité de la plateforme. –

+0

mais il n'a pas de boutons, il suffit de démarrer l'application ... il a besoin de quelque chose de graphique -pour lancer- (pas après il est déjà lancé) son application, non? – fortran

Questions connexes