Pagination dynamique en java

Fermé
Sergent71 - 22 févr. 2008 à 12:08
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 19 févr. 2009 à 09:41
Bonjour,

Comment ecrire un programme en java qui fait une pagination dynamique c'est à dire qui affiche 100 elements par liste en cliquant sur un bouton suivant pour alller à la page suivante jusqu'à la fin avoir un bouton precedent(pour revenir au debut) ou bouton quitter pour sortir?
A voir également:

11 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
22 févr. 2008 à 15:34
Bonjour,

Ton problème est sacrément généraliste ^^
Je veux dire par là que ça demande "beaucoup" de développement et non une simple aide sur un problème technique précis. De ce fait je doute que tu trouve beaucoup de personne pour t'aider à solutionner ton problème.

Est-ce que tu sais développer en JAVA ? J'imagine que non sinon tu ne poserais pas ta question. Je te conseille donc de trouver sur le net un maximum de tutoriaux (tape par exemple les mots suivants dans google : JAVA tutorial interface graphique liste) en rapport avec ton projet.

Il te faut aussi cerner un peu plus précisément tes besoins pour ensuite trouver les solutions techniques :
- Tu parles de, je cite, "faire une pagination dynamique" : je pense donc que tu souhaite avoir une interface graphique. En java, niveau interface graphique, je te conseille de passer par une interface Swing (tutorial java swing sur google).
- Ensuite tu souhaite gérer une liste de "chose" à afficher sur plusieurs pages. Ceci implique donc que tu devras pouvoir stocker tes informations dans des objets, et gérer une liste de ces objets afin de les afficher.
Comment les afficher ? Et bien qui dit page dit gestion d'un numéro de page afin d'afficher les x premiers objets à partir de telle position (page)
- Pour ce qui est des boutons, tout ceci te sera expliquer dans le tutorial de l'interface swing (comment mettre un bouton dans ton interface, lui appliquer une ou plusieurs actions, etc.)

Voilà, si par la suite tu as des questions plus techniques sur des points de ton développement java, n'hésite pas à les poser, mais pour le moment tu comprendra que ce que tu demande là est trop générale pour pouvoir y répondre précisément :)
2
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
8 avril 2008 à 16:48
Ce que je veux dire c'est que ta classe de Bouton doit implémenter l'interface ActionListener :

public class MyButton extends JButton implements ActionListener {


	private int id				= -1;
	private OtherClass oClass	= null;
	
	/**
	 * MyButton
	 * Default class constructor
	 * @param theId int
	 */
	public MyButton ( int theId ){
		super();
		this.id = theId;
	}
	
	/**
	 * MyButton
	 * Main class constructor
	 * @param theId int
	 * @param theClass OtherClass
	 */
	public MyButton ( int theId, OtherClass theClass ){
		this(theId);
		this.oClass = theClass;
	}

	/* (non-Javadoc)
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
	 */
	public void actionPerformed(ActionEvent e) {
		// --- Call generic method of class manager  
		// with specific parameter when action is performed on the button
		if ( oClass != null )
                   oClass.myGenericAction(this.id);  
	}
	
	
}


Voilà, le squellette de ta classe de bouton (gros modo bien sur). Elle étends la classe JButton et implémente l'interface ActionListener, dont la méthode actionPerformed a été définie (avec son traitement) de sorte qu'une action soit lancée lorsque l'on clique sur un objet de cette classe.

Ce que je disais à propos du hic, c'est qu'il faut que cette classe de bouton puisse appeler le traitement a faire depuis ton autre classe (celle qui créer les boutons, ou une autre selon l'architecture des classes de ton projet), la classe chargée de faire le traitement.
Dans l'exemple ci-dessus, tu vois donc qu'il y a un constructeur dont le deuxième paramètre est un objet de cette autre classe.
Ce qui veut dire que dans ta classe de création des boutons, tu aurais ce code pour créer un nouveau bouton :

public void rempli ( ){
   int i  = 1;
   MyButton newButton = new MyButton(i,this);
   newButton.set.... // --- Tu peux appeler le méthode de la classe JButton pour remplir ton bouton
}

public  void myGenericAction( int theId ){
    // --- Ici tu fais le traitement que tu dois faire lorsqu'un bouton est cliqué 
    // --- Et tu connais le numéro du bouton puisqu'il est en paramètre.
}


Et voilà un exemple de code de la classe qui construit tes génère tes boutons. Une méthode de génération (rempli), et surtout la méthode accessible publiquement "myGenericAction" qui est appelée par le bouton lorsqu'on clique dessus, avec un identifiant pour savoir sur quel bouton l'utilisateur a cliqué.

Est-ce que c'est plus clair ?

2
donner moi le code de Pagination dynamique en java s'il vous plait? merci......
1
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
19 févr. 2009 à 09:41
100 balles et un mars aussi ? Non mais je rêve...
0
j'ai presque le même problème que Sergent71, sauf que pour moi mon programme consulte une base de données, et pour chaque ligne il insère 1 boutons et un label dans un JPanel, et ce dernier mis dans le JPanel principale.

mon probleme c'est que j'ai choisit de travailler avec 1 tableau de JButtons, les boutons font le même traitement, sauf qu'il faut savoir dans quel bouton je suis ( indice dans le tableau)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
8 avril 2008 à 13:11
Ok, donc tu as déjà développer une bonne partie et je vois déjà où se situe ton erreur. Seulement il faut que tu post ton code ici même (surtout la partie où tu attribut les boutons à chaque ligne).

Ton erreur doit certainement venir du fait que tu n'as déclaré qu'une seul bouton (avec le même traitement), ou alors que tu as omis d'inclure une variable telle qu'un numéro de bouton qui te permet d'appeler un traitement particulier en fonction du bouton cliquer.

Si tu met ton code (en intégralité c'est mieux) je jetterai un coup d'oeil
0
bonjour,

[CODE]
private JPanel PaneGatewayList = null;

private JPanel pan_gen_mod[] = new JPanel[10];
private JButton mod_gen_in[] = new JButton[10];
private JLabel mod_gen_lbl[] = new JLabel[10];
private boolean mod_in[] = new boolean[10];
private int j=0;

private JPanel getPaneGatewayList() {
if (PaneGatewayList == null)
{
PaneGatewayList = new JPanel();
PaneGatewayList.setLayout(null);

java.sql.ResultSet res = gtway.searchGateway("1");
int i = 0;
try
{
while (res.next())
{
PaneGatewayList.add(GetPanMod(i,res.getString("id")));
i++;
}
PaneGatewayList.setPreferredSize(new Dimension(215, (i*75+5)));
}
catch ( java.sql.SQLException E)
{
System.out.println("SQLException: " + E.getMessage());
System.out.println("SQLState: " + E.getSQLState());
System.out.println("VendorError: " + E.getErrorCode());
}
}
return PaneGatewayList;
}

private JPanel GetPanMod(int i,String id)
{
if (pan_gen_mod[i] == null)
{
java.sql.ResultSet res2 = gtway.searchGateway("id='"+id+"'");
try
{
j = i;
res2.next();
pan_gen_mod[i] = new JPanel();
pan_gen_mod[i].setLayout(null);
pan_gen_mod[i].setBounds(0,5+(i*75),200,75);

mod_gen_in[i] = new JButton();
mod_gen_in[i].setBounds(15,15,20,20);
mod_gen_in[i].setIcon(new ImageIcon("images/import1.png"));
mod_gen_in[i].addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
// TODO Auto-generated Event stub actionPerformed()

// code spécifique pour chaque bouton mod_gen_in[ ]
mod_in[j] = !mod_in[j]; // variable d'etat
if(mod_in[j] == true)
{
mod_gen_in[j].setIcon(new ImageIcon("images/import1.png"));
}
else
{
mod_gen_in[j].setIcon(new ImageIcon("images/import0.png"));
}
//fin du code spécifique

}
});

mod_gen_lbl[i] = new JLabel();
mod_gen_lbl[i].setBounds(60,15,65,65);
mod_gen_lbl[i].setIcon(new ImageIcon("images/gateways/"+res2.getString("image")));

pan_gen_mod[i].add(mod_gen_in[i], null);
pan_gen_mod[i].add(mod_gen_lbl[i], null);
}
catch ( java.sql.SQLException E)
{
System.out.println("SQLException: " + E.getMessage());
System.out.println("SQLState: " + E.getSQLState());
System.out.println("VendorError: " + E.getErrorCode());
}
}
return pan_gen_mod[i];
}
/CODE

ce que je cherche c'est comment savoir dans quel bouton je me trouve (dans l'événement)

merci,
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
8 avril 2008 à 15:38
Effectivement ça ne peut pas aller. Une création dynamique de la sorte ne marchera pas.
Ce que je te conseille de faire, c'est de créer ta propre classe de bouton, qui étends la classe JButton et qui reçoit une (ou plusieurs si besoin est) propriété en plus.
Par exemple le fameux numéro qui est propre à chaque bouton.
Dans cette classe, tu créé un constructeur avec pour paramètre ce numéro.
Dans ce constructeur tu devra associé une actionListener comme tu le fais déjà sur ton bouton (this.addActionListener...)

Que fera l'action déclaré dans la classe ? La même chose que ce que tu fais déjà sauf qu'elle ira piocher le chiffre dans les propriété de la classe (et donc des objets boutons instanciés).

Le seul hic c'est que ces classes doivent avoir accès à l'objet (ta classe) qui les gèrera (là ou tu rempli ton tableau de bouton) via une fonction accessible publiquement, ceci de manière à pouvoir déclencher des actions sur ton interface (en fonction de la valeur de la propriété (le nombre) du bouton.

Je ne sais pas si je me suis bien exprimé :s, est-ce clair ou non ?
0
le début c'est tout à fait clair, j'y ai même songé. mais ce que j'ai pas compris c'est :

----------
Le seul hic c'est que ces classes doivent avoir accès à l'objet (ta classe) qui les gèrera (là ou tu rempli ton tableau de bouton) via une fonction accessible publiquement, ceci de manière à pouvoir déclencher des actions sur ton interface (en fonction de la valeur de la propriété (le nombre) du bouton.
---------

en plus, comment est ce que je peux redéfinir l'actionListener en ajoutant le numéro du bouton dans la liste des paramètres?
0
oh merci beaucoup, vraiment c'est génial !

le fait est que je vais utiliser ce code dans un tableau -normalement- ça doit marcher, parce que la classe implémente actionPerformed.

je te remercie infiniment.


------------------------------------------
SW TEAM (c) enjoy surfing ;-)
http://shortwaves.olympe-network.com/
----------------------------------------------------------
0
reddevil Messages postés 61 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 30 août 2008 5
8 avril 2008 à 17:11
Merci vraiment kij_82 :)
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
8 avril 2008 à 17:16
Ok, si le problème est règler n'oublie pas de mettre la discussion en 'RESOLU' via l'option présente en haut de la page de discussion :)
0