2008-09-22 5 views
1

Je développe une application Mac en Java qui se connecte à l'une des bases de données de nos clients. Mes utilisateurs souhaitent avoir plusieurs copies de ce programme en cours d'exécution afin de pouvoir se connecter à deux clients en même temps, plutôt que de se déconnecter et de se reconnecter.Ouverture simultanée de plusieurs applications Mac

Comment autoriser un utilisateur à ouvrir plusieurs copies de mon application immediatement? J'utilise Eclipse pour développer, et Jarbundler pour faire l'application.

Éditer: Plus important, y a-t-il un moyen de le faire dans la base de code, plutôt que de faire faire quelque chose de funky à mon utilisateur sur son système? Je préfère leur donner un élément de menu 'Ouvrir une nouvelle fenêtre', puis les faire taper des choses dans le terminal.

+0

Ce type de comportement brise le modèle d'interface utilisateur OS X. Pourquoi ne pas leur permettre d'ouvrir plusieurs fenêtres connectées à différentes bases de données? – Mykroft

+0

Oui, ça ressemble à la meilleure façon de faire. Merci^_^ – DyreSchlock

Répondre

4

Vous avez probablement déjà reçu suffisamment de code pour ne pas entendre cela, mais vous ne devriez pas démarrer deux instances de la même application. Il y a une raison pour laquelle vous trouvez cela si difficile et c'est parce qu'Apple ne veut pas que vous le fassiez. Pour ce faire, OSX utilise le modèle Cocoa Document-based Application dans XCode. Apple Documentation: choosing a project.

Ceci est quelque chose que les utilisateurs sont très habitués, et cela fonctionne très bien. Les programmes FTP, les clients IRC et de nombreux autres types utilisent déjà des fenêtres «document» différentes pour pointer vers différents serveurs ou canaux. Il n'y a rien de fondamentalement différent à pointer vers différentes bases de données.

Selon la quantité de code que vous avez écrite et la manière dont votre application est conçue, cela peut être pratiquement impossible à mettre en œuvre sans recommencer. Les développeurs qui rencontrent ce problème lors de la phase de conception, cependant, devraient certainement prendre les conseils d'Apple.

0

Depuis le terminal (ou dans un emballage de script):

/Applications/TextEdit.app/Contents/MacOS/TextEdit & 

Quelque chose comme ça devrait fonctionner pour vous.

Pour ce faire, en Java:

String[] cmd = { "/bin/sh", "-c", "[shell commmand goes here]" }; 
Process p = Runtime.getRuntime().exec (cmd); 
0

Depuis le terminal, je peux courir

open -n -a appName.app 

Puis, à partir AppleScript, je peux courir

tell application "Terminal" 
activaate 
    do script "open -n -a appName.app" 
end tell 

Ensuite, à partir de Java, je peut exécuter ce script. Ensuite, je peux insérer ce code Java dans une action. Ensuite, insérez cette action dans un élément de menu intitulé "Ouvrir une nouvelle fenêtre".

C'est ce que je vais faire pour le moment. Maintenant, j'ai juste besoin d'obtenir le nom de l'application.

+0

Je pense que vous avez besoin de reformuler votre question à ce stade ... – wprl

0

Si vous le développez en mode swing, vous devriez juste pouvoir instancier le cadre supérieur pour créer une nouvelle fenêtre.

Questions connexes