OVH Cloud OVH Cloud

Objets de formulaires Java semblables à ceux de .NET

9 réponses
Avatar
java
Bonjour à tous,

Je suis en train de développer une appli Web. Pour l'instant, quand on
veut modifier un objet, il faut ouvrir une autre fenetre, avec un
autre formulaire similaire à celui d'ajout, bref c'est un peu lourd.

Comme .NET concurrence Java, je me demande s'il est pas possible
d'avoir avec Java un champ Label en apparence, qui une fois qu'on
clique dessus s'avère être une combo, un TextField, quelque chose de
modifiable, et que d'un qu'on en sort (clic ailleurs) les données
soient mises à jour? C'est plus facile et plus rapide pour
l'utilisateur et ça "économise" une fenêtre.

Pour info je débute en Java donc merci de pas me parler avec des mots
trop "barbares"... ;-)

Merci,
Ourladywar.

9 réponses

Avatar
Lionel
Ourladywar wrote:
Comme .NET concurrence Java, je me demande s'il est pas possible
d'avoir avec Java un champ Label en apparence, qui une fois qu'on
clique dessus s'avère être une combo, un TextField, quelque chose de
modifiable, et que d'un qu'on en sort (clic ailleurs) les données
soient mises à jour? C'est plus facile et plus rapide pour
l'utilisateur et ça "économise" une fenêtre.


Avec du javascript et des XmlHttpRequest ça doit pouvoir se faire.
Bon courage par contre ;)

Tu aurais des exemples de site en .NET utilisant ce genre de composants ?
ça m'intéresserait de voir ce qu'on peut faire avec .NET...

Avatar
Arnaud Berger
Bonjour,

Pourquoi pas un JPanel, qui quand il est "cliqué", s'ajoute un composant
(add) et lui met le focus et quand il est "quitté" , valide la modif dans ce
composant et le retire (remove)...

Cordialement,

Arnaud

"Ourladywar" a écrit dans le message news:

Bonjour à tous,

Je suis en train de développer une appli Web. Pour l'instant, quand on
veut modifier un objet, il faut ouvrir une autre fenetre, avec un
autre formulaire similaire à celui d'ajout, bref c'est un peu lourd.

Comme .NET concurrence Java, je me demande s'il est pas possible
d'avoir avec Java un champ Label en apparence, qui une fois qu'on
clique dessus s'avère être une combo, un TextField, quelque chose de
modifiable, et que d'un qu'on en sort (clic ailleurs) les données
soient mises à jour? C'est plus facile et plus rapide pour
l'utilisateur et ça "économise" une fenêtre.

Pour info je débute en Java donc merci de pas me parler avec des mots
trop "barbares"... ;-)

Merci,
Ourladywar.


Avatar
Arnaud Berger
ReBonjour,

Allez comme je suis chaud je me lance (le bouton est juste là pour tester la
perte de focus du textfield) :

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
* Classe DynamEditor créée le 21 avr. 2005 à 09:13:52
*/
public class DynamEditor {

public static void main(String[] args) {
JFrame frame=new JFrame();
frame.setSize(200,200);
Container cont=frame.getContentPane();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel=new JPanel();
final JLabel aLabel=new JLabel("Click me");
panel.setLayout(new BorderLayout());
panel.add(aLabel);
final JTextField field =new JTextField();
panel.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent me){
panel.remove(aLabel);
panel.add(field);
panel.revalidate();
panel.repaint();
field.requestFocus();
}});
field.addFocusListener(new FocusListener(){
public void focusGained(FocusEvent arg0) {
System.out.println("focus gained");
}
public void focusLost(FocusEvent arg0) {
System.out.println("focus lost");
/ / faire plein de choses, genre field.getText(), stocker les valeurs, màj
d'un modèle, etc...
panel.remove(field);
panel.add(aLabel);
panel.revalidate();
panel.repaint();
}});

cont.add(panel,BorderLayout.CENTER);
cont.add(new JButton("un bouton"),BorderLayout.SOUTH);
frame.setVisible(true);
}
}

Cordialement,

Arnaud

"Ourladywar" a écrit dans le message news:

Bonjour à tous,

Je suis en train de développer une appli Web. Pour l'instant, quand on
veut modifier un objet, il faut ouvrir une autre fenetre, avec un
autre formulaire similaire à celui d'ajout, bref c'est un peu lourd.

Comme .NET concurrence Java, je me demande s'il est pas possible
d'avoir avec Java un champ Label en apparence, qui une fois qu'on
clique dessus s'avère être une combo, un TextField, quelque chose de
modifiable, et que d'un qu'on en sort (clic ailleurs) les données
soient mises à jour? C'est plus facile et plus rapide pour
l'utilisateur et ça "économise" une fenêtre.

Pour info je débute en Java donc merci de pas me parler avec des mots
trop "barbares"... ;-)

Merci,
Ourladywar.


Avatar
Arnaud Berger
Bon OK, mea culpa, j'avais pas tilté sur le terme "Web".

Enfin j'espère que ca peut servir à d'autres.

Cordialement,

Arnaud


"Ourladywar" a écrit dans le message news:

Bonjour à tous,

Je suis en train de développer une appli Web. Pour l'instant, quand on
veut modifier un objet, il faut ouvrir une autre fenetre, avec un
autre formulaire similaire à celui d'ajout, bref c'est un peu lourd.

Comme .NET concurrence Java, je me demande s'il est pas possible
d'avoir avec Java un champ Label en apparence, qui une fois qu'on
clique dessus s'avère être une combo, un TextField, quelque chose de
modifiable, et que d'un qu'on en sort (clic ailleurs) les données
soient mises à jour? C'est plus facile et plus rapide pour
l'utilisateur et ça "économise" une fenêtre.

Pour info je débute en Java donc merci de pas me parler avec des mots
trop "barbares"... ;-)

Merci,
Ourladywar.


Avatar
whatsthematter
Je suis en train de d?velopper une appli Web. Pour l'instant, quand on
veut modifier un objet, il faut ouvrir une autre fenetre, avec un
autre formulaire similaire ? celui d'ajout, bref c'est un peu lourd.


Ca correspond ? une ergonomie adapt?e ? la limitation du nombre de
transferts browsers serveur. Il y a peu de temps (2 ans)
beaucoup de gens avaient seulement un modem...

Comme .NET concurrence Java, je me demande s'il est pas possible
d'avoir avec Java un champ Label en apparence, qui une fois qu'on
clique dessus s'av?re ?tre une combo, un TextField, quelque chose de
modifiable, et que d'un qu'on en sort (clic ailleurs) les donn?es
soient mises ? jour? C'est plus facile et plus rapide pour
l'utilisateur et ?a "?conomise" une fen?tre.


Ca c'est ce que .net impl?mente en deux clics.
Il faut savoir que l'update champ par champ se fait c?t? serveur.
Si tu as 10 champs ca fait 10 aller retour browser <-> serveur.
Ca sera un peu lourd avec un modem, mais pas en haut d?bit.
Et c'est boulot minimum pour le d?veloppeur.

L'?tat de l'art en .net c'est :
* on update champ par champ.
* validation c?t? serveur champ par champ
(c'est faisable en javascript c?t? browser mais c'est pas gagn?).
* des ?diteurs genre "visual studio .net" font que le d?veloppeur
a rien ? faire (ou si peu).

L'?tat de l'art en java c'est :
* un formulaire pour cr?ation & modification
c'est le m?me formulaire mais il est initialis? avec les valeurs connues
en mode modification
* validation c?t? client en javascript que tu fais avec tes petites mains.
Des taglibs jsp peuvent te permettre d'automatiser la production de
javascript. Le formulaire est envoy? au serveur quand il est complet,
donc un seul aller retour browser <-> serveur
* Je ne connais pas d'?diteurs qui int?grent tout. Le d?veloppeur doit faire
un r?el effort de compr?hension du probl?me (quoi c?t? browser, quoi c?t?
serveur) qu'on a pas en .net.

Perso je ne connais pas d'API (biblioth?que) qui permettent de faire java-jsp
en ".net-like".

Pour info je d?bute en Java donc merci de pas me parler avec des mots
trop "barbares"... ;-)


J'esp?re que mon message passera.
j'ajoute que je fais du web (profession.) en jsp/servlet, .net et autres
.... j'ai test? pour vous ;-)

Avatar
java
Actuellement c'est la solution 2 que j'utilise : modif en 1 fois apres
vérif de tous les champs. Mais les utilisateurs dans ma boite sont pas
très à l'aise avec tout ça => ayant vu un champ se mettre
automatiquement en combo quand on cliquait dessus sur une page .NET
d'un autre service, je me suis dis que ce serait pas mal plutot que
passer par une autre page spécial modif, avec les valeurs extraites de
la base.

Merci pour tes remarques!

Ourladywar.
Avatar
java
J'avais pensé à ça mais fondamentalement le type d'objet est le meme :
si je mets le cadre en transparent pour le champ, pourquoi pas (encore
que ça me gene un peu que tous les champs en meme temps sur une page
soit "modifiables" le risque de mauvaise manip est assez élevé et si
un onBlur sufffit pour updater, on est mal :S) ça ne couvre pas le cas
que parfois le champ derriere le label puisse etre une combo. Le type
serait un faux label tout au plus mais ça reste un champ texte.

Pour l'exemple, je ne peux pas t'en donner : c'est dans l'intranet du
groupe de ma boite....

Ourladywar.
Avatar
java
Le code est presque pareil pour un applet! Ca devrait aussi marcher.


Merci!
Ourladywar.
Avatar
whatsthematter
De la prose microsoft qui soutient mon propos.
Ca sort des exemples .net à telecharger,
exemple en
http://samples.gotdotnet.com/quickstart/aspplus/
Rubriques "Performance Tuning Tips"

Ca va tout a l'inverse de ce qu on fait en deux clics dans visual studio....
Si tu veux imiter .net, saches... que Microsoft ne le conseille pas ;-))

<citation>
Avoid excessive round trips to the server: The Web Forms page framework
is one of the best features of ASP.NET, because it can dramatically reduce
the amount of code you need to write to accomplish a task.
Programmatic access to page elements using server controls and the postback
event handling model are arguably the most time-saving features.
However, there are appropriate and inappropriate ways to use these features,
and it is important to know when it is appropriate to use them.

An application typically needs to make a round trip to the server only
when retrieving data or storing data. Most data manipulations can
take place on the client between round trips. For example, validating form entries
can often take place on the client before the user submits data. In general,
if you do not need to relay information back to the server,
then you should not make a round trip to the server.

If you are writing your own server controls, consider having them render
client-side code for up-level (ECMAScript-capable) browsers.
By employing "smart" controls, you can dramatically reduce the number
of unecessary hits to your Web server.
</citation>