Programmation JAVA

Fermé
TSniper Messages postés 778 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 15 novembre 2016 - 9 avril 2008 à 10:09
TSniper Messages postés 778 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 15 novembre 2016 - 9 avril 2008 à 16:26
Bonjour,
Bonjour,
"le tableau de mon fichier Java""
c'est un tableau de type ouvrier (ouvrier {string nom;string prénom;int salaire;})
il est déclaré dans mon fichier *.java qui contient le main.
Bon je vais faire une interface graphique avec des zone de texte où l'utilisateur va entrer les données( salaire, nom,prénom) et je veut récupérer ces données et les mettre dans le tableau.
RQ:
- mon fichier java est déjà prés mais l'interfaçe graphique est encours de concept.
- SVP éviter de me mettre des lien de tutoriels en anglais ou venant du site sun je l'ai déjà vu mais rien compris, il vaut mieux qu'il ne soit pas en anglais.
Merci
Qui peut m'aider
moi j'utilise netbeans 5.5
A voir également:

4 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
9 avril 2008 à 14:01
Re,

Plutot que d'utiliser un tableau je te conseille de manipuler une ArrayList. Pourquoi ? Simplement car ce que tu veux faire c'est pouvoir ajouter un nombre indéfini d'Ouvrier avec ton interface. Or pour manipuler un tableau tu es obligé de fixer sa longueur à l'avance pour y ajouter des éléments (ou alors la recalculer à chaque fois).
Comme tout bon programmeur le sait, inutile de réinventer la roue, donc j'ai utiliser une ArrayList d'objet Ouvrier.

Voilà la classe Ouvrier, qui reprends grossomodo ce que tu as déjà fait normalement :

public class Ouvrier {

	private String name		= null;
	private String surname	= null;
	private int money		= 0;
	
	
	/**
	 * Ouvrier
	 * Default class constructor
	 * @param theName
	 * @param theSurname
	 */
	public Ouvrier ( String theName, String theSurname ){
		setName(theName);
		setSurname(theSurname);
		setMoney(0);
	}
	
	/**
	 * Ouvrier
	 * Main class constructor
	 * @param theName
	 * @param theSurname
	 * @param theMoney
	 */
	public Ouvrier ( String theName, String theSurname, int theMoney ){
		setName(theName);
		setSurname(theSurname);
		setMoney(theMoney);
	}
	
	
	/***********************/
	/** SETTERS & GETTERS **/
	/***********************/
	
	public void setName ( String theName ){
		this.name = theName;
	}
	public String getName ( ){
		return this.name;
	}
	public void setSurname ( String theName ){
		this.surname = theName;
	}
	public String getSurname ( ){
		return this.surname;
	}
	public void setMoney ( int theNum ){
		this.money = theNum;
	}
	public int getMoney ( ){
		return this.money;
	}
}


Note: les setters / getters ne sont pas obligatoire, c'est juste une méthode de programmation que je trouve plus claire.

Une classe principale :

public class CreateOuvrier extends JFrame {

	private ArrayList ouvriers		= null;
	private JTextField name			= null;
	private JTextField surname		= null;
	private JTextField money		= null;
	
	/**
	 * CreateOuvrier
	 * Default class constructor
	 */
	public CreateOuvrier ( ){
		super();
		init();
		this.setSize(800,600);
		this.setVisible(true);
	}
	
	private void init(){
		// --- Set content pane
		JPanel myMainPanel = new JPanel();
		myMainPanel.setLayout(new GridLayout(4,2));   // --- 4 lignes et 2 colones
		this.setContentPane( myMainPanel );
		
		name = new JTextField();
		surname = new JTextField();
		money = new JTextField();
		JLabel name_label = new JLabel("Nom : ");
		JLabel surname_label = new JLabel("Prenom : ");
		JLabel money_label = new JLabel("Salaire : ");
		
		// --- Ajout d'un bouton pour ajouter l'ouvrier
		JButton submit = new JButton("Ajouter");
		// --- Ainsi qu'une action lorsque l'on clique dessus pour valider l'ajout
		submit.addActionListener( new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// APPEL DE LA METHODE DE VALIDATION ET D'AJOUT D'UN OUVRIER
				addOuvrier();
			}
		});
		
		// --- Ajout des éléments graphique dans le panel principale
		myMainPanel.add(name_label);
		myMainPanel.add(name);
		myMainPanel.add(surname_label);
		myMainPanel.add(surname);
		myMainPanel.add(money_label);
		myMainPanel.add(money_label);
		myMainPanel.add(submit);
		
	}
	
	/**
	 * addOuvrier
	 * Permet d'ajouter un ouvrier selon les champs remplis
	 */
	protected void addOuvrier ( ){
		
		// --- Retrieve data from fields
		String myName = name.getText();
		String mySurname = surname.getText();
		String myMoney = money.getText();
		
		// --- Check if all fields are valid
		// 1°) NAME
		if ( myName.trim().equalsIgnoreCase("") ){
			JOptionPane.showMessageDialog(null,"Champ requis : nom");
			return;
		}
		// 2°) SURNAME
		if ( mySurname.trim().equalsIgnoreCase("") ){
			JOptionPane.showMessageDialog(null,"Champ requis : prénom");
			return;
		}
		// 3°) MONEY
		if ( myMoney.trim().equalsIgnoreCase("") ){
			// --- Set default value '0' if no filled
			myMoney = "0";
		}
		// 4°) MONEY has integer value ?
		int myIntMoney = 0;
		try{
			myIntMoney = Integer.parseInt(myMoney);
		}catch (NumberFormatException e){
			JOptionPane.showMessageDialog(null,"Le salaire doit avoir une valeur numérique");
			return;
		}
		// 5°) Check if ouvrier to add is already present in the list
		if ( findOuvrier(myName,mySurname) != null ){
			JOptionPane.showMessageDialog(null,"Cet ouvrier est déjà présent dans la liste. Ajout impossible.");
			return;
		}
		
		// --- All the data are ok, so add a new Ouvrier to the list
		Ouvrier myNewOuvrier = new Ouvrier(myName,mySurname,myIntMoney);
		getOuvriers().add(myNewOuvrier);
		
		
		// --- Reset fields values
		name.setText("");
		surname.setText("");
		money.setText("");
		
		// --- And alert the user : new Ouvrier added to the list
		JOptionPane.showMessageDialog(null,"Nouvel ouvrier ajouté avec succès !");
		
	}
	
	private Ouvrier findOuvrier ( String theName, String theSurname ){
		boolean found = false;
		int i = 0;
		Ouvrier myCurrOuvrier  = null;
		
		while ( !found && i < getOuvriers().size() ){
			myCurrOuvrier = (Ouvrier)getOuvriers().get(i);
			if ( myCurrOuvrier.getName().trim().equalsIgnoreCase(theName)
			&& myCurrOuvrier.getSurname().trim().equalsIgnoreCase(theSurname) )
				found = true;
			else
				i++;
		}
		
		if ( found )
			return myCurrOuvrier;
		else
			return null;
	}
	
	/***********************/
	/** GETTERS & SETTERS **/
	/***********************/
	
	public void setOuvriers ( ArrayList theList ){
		this.ouvriers = theList;
	}
	public ArrayList getOuvriers ( ){
		return this.ouvriers;
	}
}


Dans laquelle j'ai fais une petite interface (note bien que j'ai simplement programmé et pas testé, donc l'interface n'est peut être pas bonne), juste pour avoir une idée de comment implémenter le code pour faire ce que tu veux faire.
Un bouton, qui lorsque l'on clique dessus va reprendre les valeurs de tes champs 'nom', 'prenom' et 'salaire', faire quelques contrôles dessus et s'ils sont valide, ajouter le nouvel Ouvrier.


Si j'ai bien compris c'est quelque chose comme ça que tu souhaite faire ?
1
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
9 avril 2008 à 10:47
Bonjour,

Je crois que tu as tout simplement oublié de dire ce que tu voulais réellement ^^
Effectivement tu travaille sur une interface pour remplir ton tableau d'Ouvrier. La classe Ouvrier contient principalement trois propriété, à savoir nom, prenom et salaire, respectivement de type String, String et int.

Mais que veux-tu exactement ? Sur quel difficulté technique bloques-tu ?

As-tu du code déjà fait concernant ton interface graphique que tu pourrais poster ici afin qu'on voit où tu en es ?
0
TSniper Messages postés 778 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 15 novembre 2016 157
9 avril 2008 à 12:37
çe que je veut c'est la liaison entre les zone de texte de l'nterface graphique et les cases de mon tableau T[]
pour que quand l'utilisateur entre le nom dans la case "nom" je veut que cette valeur soit affecté au tableau ouvrier T[0].nom.
merci pour votre aide.
0
TSniper Messages postés 778 Date d'inscription lundi 14 janvier 2008 Statut Membre Dernière intervention 15 novembre 2016 157
9 avril 2008 à 16:26
Oui c comme ça merci mon amie merçi innnnnnnnnfiniment je vait l'essayer.
0