Salut,
Je suis inquiet. Y a-t-il un mode design pour créer une UI ou bien est-ce que vous créez tous les composants par le code?
Merci d'avance de votre indulgence.
Immo
Salut,
Je suis inquiet. Y a-t-il un mode design pour créer une UI ou bien est-ce que vous créez tous les composants par le code?
Merci d'avance de votre indulgence.
Immo
"Winter is coming" (ma nouvelle page d'accueil)
Eclispe
[EDIT]
J'ai commencé en suivant ce tuto: http://baptiste-wicht.developpez.com...wing/debutant/
Y'a pas une boite à outils pour faire des glisser déposer des contrôles?
[/EDIT]
"Winter is coming" (ma nouvelle page d'accueil)
Mouaip
Pour Eclipse il existe plusieurs plugins proposant un designer (il n'y en a pas par défaut).
Le mieux foutu se jouant entre WindowBuilder de Google (gratuit) et la version plugin Eclipse de JFormDesigner (payant)
Pour Netbeans et IntelliJ Idea c'est déjà inclus de base.
A noter toutefois que pour bien maîtriser swing, il est préférable d'avoir légèrement codé une ou deux interfaces basiques à la main pour bien comprendre les principes sous jacents...
Et par expérience, on va aussi vite et on a plus facilement ce que l'on veux en y allant par le code :p
Euh Ben non parce que entre glisser déposer une textbox et la déclarer, l'instancier par le code + gérer toutes les méthodes liées aux événements y'a pas photo. Celle là on ne peut plus me la faire
De plus, comment tu gères la séparation des rôles entre le designer et le programmeur? On est à des années lumière des WPF. Bon je vais pas troller alors que je viens juste de m'y mettre
A+
"Winter is coming" (ma nouvelle page d'accueil)
Il n'est pas question de troller
Disons que dans mon expérience je n'ai jamais eu besoin de séparer le programmeur du designer de l'interface. En java pour faire un interface, tu sort ton stylo bille et tu fais un croquis sur une feuille de papier de ce que tu veux (ça c'est le boulot du designer) et en 3 ligne de code, chaque composant est mis en place. Avec l'autocompletion et tout le bordel que fait l'ide. J'ai plus vie fait d'ajouter comme ça un textfield que de déplacer ma main vers la souris pour glisser déposer l'objet
Si le designer ne connais pas un minimum de programmation, il a pas à touche au code de toutes façons, hors les outils de design graphique ca génère du code (pas toujours joli à maintenir d'ailleurs).
C'est une question de gout, les designer existent aussi en java, mon expérience m'a apprise que coder l'interface va plus vite.
Et pour comparer à windows, n'oubliez pas une chose importante: les interface en java doivent systématiquement être concues pour s'ajuster à l'os sous-jacent, contrainte que n'ont pas les programme pur windows.
Chaque os aura ses dimensions, ses résolutions et des polices différentes. Ce qui fait qu'en java on conçois des interfaces où les composants ne sont pas "positionné", mais mis en relation entre eux, ce qui n'est pas toujours évident à exprimer visuellement par du drag and drop.
Enfin, les designer qui génèrent ce genre de code imbuvable:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 private JButton bouton3; private JButton bouton4; private JButton bouton5; public actionPerformed(ActionEvent e) { if (e.getSource()==bouton3) bouton3_clicked(e); else if (e.getSource()==bouton4) bouton4_clicked(e); else if (e.getSource()==bouton5) bouton5_clicked(e); } // + initialisation du bouton public void bouton3_clicked(ActionEvent e){ // code ici }
je préfère mille fois écrire directement à la main
Code : Sélectionner tout - Visualiser dans une fenêtre à part monPanneau.add(new JButton(new ActionSauverClient(monFormulaire)));
Tu veux dire que tu crées une classe pour gérer chaque évènement de ton formulaire??
De plus, si le design change en cours de route, tu es obligé de changer dans le code l'ordre dans lequel les composants sont ajoutés au formulaire?
A+
"Winter is coming" (ma nouvelle page d'accueil)
L'avantage d'avoir une classe Action, c'est que justement tu peux la réutiliser dans plusieurs formulaire. De toutes façons, les "callback" en java, ce sont des objet, donc il est normal que le code aie son objet à part. Normalement, on évite de faire la soupe que fait un designer graphique, qui consiste à mettre tout dans la même grosse méthode d'évènement, et de faire partager ce même objet d'évènement par des bouton qui n'ont rien à voir entre eux
Pour donner un Exemple: un objet de type Action en swing, contient une icone, un texte, un descriptif et ce qu'il faut faire en cas d'action. Un fois que t'as ça (par exemple l'action sauver), tu peux l'utiliser directement dans un JMenuItem (Fichier->Sauver), dans une toolbar, dans un JButton.
Quand au changement de design, avec des layout comme SpringLayout, c'est pas bien compliqué de faire les adaptation.
Bref, c'est une question de gout, mais pas mal de gens qui font du GUI avec swing m'ont déjà confirmé préférer y aller au code qu'au designer. Mais rien ne t'empeche de te faire la main au designer
Et puis il y a pas mal de truc que tu ne sais pas faire prendre en compte par un designer. Comme lui dire "suivant la condition X, ici je met soit un JTextArea, soit une image", ou comme ça m'est déjà arriver, faire faire à un designer:
pour X de 1 à N, créer dans l'ordre un JLabel, soit un JTextArea soit un JTextField suivant une condition dépendant de X, puis évenutuellement un bouton avec un action custom dépendant de X.
Maintenant, j'ai jamais travailler avec WPF, donc je peux pas comparer, le mieux c'est que tu te fasse la main sur swing, avec ses notions de Document, et d'Action et dans 1 an tu viens nous dire ce que t'en pense![]()
Dans l'absolu je mélange les deux.
SI j'ai un formulaire , j'ai tendance à m'appuyer sur JFormDesigner dans lequel j'utilise du FormLayout (le GroupLayout utilisé par Matisse/Netbeans donnant un code parfaitement imbittable). De plus ce designer produit un code tout à fait correct en se basant sur le PanelBuilder fourni par le FormLayout. De même il permet la gestion de l'I18N de façon automatique.
Par contre je gère l'intégralité des actions à la main une fois que le design est fait.
Dans le cas d'éléments conditionnels, j'ai tendance à designer des éléments simples correspondant aux divers cas d'utilisation sous JFormDesigner, puis de les utiliser à ma convenance dans mon application.
mmmh, mais JFormDesigner n'est pas gratuit.
"Winter is coming" (ma nouvelle page d'accueil)
en meme temps 129€ / poste pour une utilisation commercial, on est loin, très loin d'être excessif si tu considère ce genre d'outils comme un gain de temps.
Personellement, on fais pas assez de GUI pour le justifier, mais on justifie d'autres outils dans les même tarifs![]()
T'as pas tords
Mais bon, ce qui m'interpelle c'est de constater la diversité des éditeurs qui fournissent les différentes pièces pour se constituer une environnement de développement. Mais bon, c'est une des caractéristiques de l'open source. Pour un "MS adict" comme moi c'est dur![]()
"Winter is coming" (ma nouvelle page d'accueil)
C'est pour cela qu'il y a d'autres solutions proposées dans mon post initiale.
Enfin un IDE (Eclipse) + Designer graphique pour 129 roros, ça ne fait pas grand chose comparé à une license Visual Studio. Pour un outil tout aussi puissant.
129€ c'est moins que le coût d'une journée de ton boulot dans une boite, pour combien de temps gagné ensuite...
"Winter is coming" (ma nouvelle page d'accueil)
Tu peux aussi te fournir des IDE payant tout intégré comme intellij idea, qui a aussi un swing designer
http://www.jetbrains.com/idea/features/gui_builder.html
Au delà de ça, en java tu a aussi swt comme affichage alternatif, avec ses propres builder, et apache pivot, qui peut travailler avec un fichier xml de configuration![]()
"Winter is coming" (ma nouvelle page d'accueil)
Bon, il arrête pas de m'insulter:J'ai pourtant installé la dernière version de Java...WARNING: Use on a JRE prior to version 1.6 is deprecated
Initializing AppEngine server
[WARN] ********************************************************
Warning: Future versions of the Dev App Server will require Java 1.6 or later. Please upgrade your JRE.
********************************************************
Une idée?
"Winter is coming" (ma nouvelle page d'accueil)
Tu n'aurais pas une autre JVM d'installée par le plus grand des hasards?
donne nous le retour d'un java -version dans un terminal (enfin console ou invite de commande suivant l'OS)...
Dans la liste des programmes installés, j'ai "Java(TM) 6 update 26", "Java(TM) 6 update 7", "Java(TM) Development Kit 6 update 7".java version "1.5.0_03"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_03-b07)
Java HotSpot(TM) Client VM (build 1.5.0_03-b07, mixed mode)
Merci de ton aide.
Immo
"Winter is coming" (ma nouvelle page d'accueil)
Partager