Impression personnalisé JTable ......... [Résolu]

profiter 211 Messages postés mercredi 15 juin 2011Date d'inscription 15 mars 2013 Dernière intervention - 5 sept. 2011 à 17:37 - Dernière réponse : profiter 211 Messages postés mercredi 15 juin 2011Date d'inscription 15 mars 2013 Dernière intervention
- 9 sept. 2011 à 12:10
rebonjour,

je veux imprimer mes JTables, mais pas toute seules
car le JTable contient les lignes de la commande alors pour l'imprimer il faut placer le JTable au centre
en haut le logo de la societe
un peu plus bas le titre le numero ....
puis le JTable
et au dessous les valeurs de qlq JTextfields a coté de qlq ecriture
et ......
et aussi permettre a l'utilisateur de modifier le decor de la feuille imprimé et ........


=> je ne suis pas bien documenté jusqu'a maintenant pour faire ca
j'espere que c'est pas assez compliqué

alors j'aimerai bien que vous m'orienter et me guider a des liens utiles et tout ce que vous jugez utiles

je compte sur vous
merci bien
Afficher la suite 

Votre réponse

22 réponses

Meilleure réponse
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 6 sept. 2011 à 12:18
3
Merci
Oui, tu peux générer une page html si ca correspond plus à tes besoins mais le principe est très différent.

La meilleure solution est celle qui correspond le plus à tes besoins.

Tu pourrais je pense assez simplement...

Il n'est pas garanti que ce soit assez simple. Si tu as des données contenues dans des JTable, il va falloir les mettre en forme et la quantité de code est assez importante. De plus, tu vas devoir utiliser une autre technologie que java pour faire des css et générer ton html, je ne sais pas si tu maitrises ces techno.

Mais bon, vu ce que tu décris, tu peux le faire en java directement et simplement.

Merci cs_Julien39 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_Julien39
Meilleure réponse
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 9 sept. 2011 à 10:40
3
Merci
Bonjour,

Je viens juste de poster cette source que tu devrais pouvoir adapter à tes besoins : http://www.javafr.com/codes/DEPLACER-REDIMENTIONNER-JPANEL_53567.aspx

Merci cs_Julien39 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_Julien39
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 5 sept. 2011 à 17:46
0
Merci
Bonjour,

C'est un peu trop vaste pour que nous puissions te répondre avec précision, essayes de faire des recherches sur internet et quand tu rencontreras des problèmes poses des questions ici.

Pour t'en sortir, le mieux est d'essayer de placer ce que tu veux imprimer dans un même JPanel et ensuite, d'imprimer ce JPanel. Tu trouveras des choses sur internet à ce sujet, j'en suis sûr.

Bon courage
Commenter la réponse de cs_Julien39
cs_GodConan 2116 Messages postés samedi 8 novembre 2003Date d'inscriptionContributeurStatut 6 octobre 2012 Dernière intervention - 5 sept. 2011 à 18:39
0
Merci
salut ;o)

ben il te suffit de faire ton print ;o) comme tu l entends...
si cette impression est lier à un composent (JFrame) tu peux meme redéfinir le printComponent(g)


GodConan ;o)
Commenter la réponse de cs_GodConan
profiter 211 Messages postés mercredi 15 juin 2011Date d'inscription 15 mars 2013 Dernière intervention - 6 sept. 2011 à 11:47
0
Merci
salut a vous tous

dans un autre endroit un ami ma proposé :

Tu pourrais je pense assez simplement générer un fichier HTML pour avoir la présentation de tes données comme tu le veux (éventuellement avec un peu de CSS)
Une fois ce fichier fait il te reste à l'imprimer et pour ça tu as print(File)


qu'est ce que vous en dites
est ce la meilleure methode( ou une d'eux )

qu'est ce que vous me conseillez avant de me lancer dans la partie technique

merci bien
Commenter la réponse de profiter
profiter 211 Messages postés mercredi 15 juin 2011Date d'inscription 15 mars 2013 Dernière intervention - 6 sept. 2011 à 17:59
0
Merci
salut

Pour t'en sortir, le mieux est d'essayer de placer ce que tu veux imprimer dans un même JPanel et ensuite, d'imprimer ce JPanel.


et si l'utilisateur veut changer de place d'un JEditorpane par exemple ou ajouter un editorpane (ecrire qlque chose dans un autre emplacement vide)
comment lui permettre de faire ca
aussi
est ce que je peux lui convertir le squelette de la page a un fichier word pour qu 'il aura le libre choix de modifier comme il veut puis consever ce squelette pou l'impression
comme exemple les bons de commandes ....

merci bien
Commenter la réponse de profiter
profiter 211 Messages postés mercredi 15 juin 2011Date d'inscription 15 mars 2013 Dernière intervention - 6 sept. 2011 à 19:35
0
Merci
et l'apercu avant impression
avez vous un idee
merci
Commenter la réponse de profiter
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 7 sept. 2011 à 08:44
0
Merci
Si l'utilisateur peut modifier manuellement la position des composant, reste sur du swing sans utiliser d'export html.

Pour les déplacements des objets Swing, tu peux t'inspirer de cette source qui propose des JPanel déplacables : http://www.javafr.com/codes/DASHBOARD-TABLEAU-BORD-AVEC-DEPLACEMENT-COMPOSANTS_53528.aspx

Pour les redimentionner, ce n'est pas bien plus compliqué. Et pour en ajouter, il te suffit de faire un add.

Pour l'aperçu et bien ca peut être ton JPanel ou bien une image que tu construit grâce à ton JPanel (tu trouveras comment faire sur internet)
Commenter la réponse de cs_Julien39
profiter 211 Messages postés mercredi 15 juin 2011Date d'inscription 15 mars 2013 Dernière intervention - 7 sept. 2011 à 11:53
0
Merci
merci pour le code c'est tres interessant ca ma changé mon idéé

j'ai essayé d'ajouter unbouton dans la frame pour ajouter des panels
mais ca pas marché voila ce que l'ai fait :

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTextArea;

import fr.julien.dashboard.vue.DashBoard;
import fr.julien.dashboard.vue.PanelTitre;

public class Lanceur {

public static void main(String[] args) {
final List<JComponent> panels = new ArrayList<JComponent>();
for(int i=0; i<8; i++) {
panels.add(new PanelTitre("Panel "+i, creerTextArea(i)));
}
final JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new GridLayout(1,0));
f.setLayout(new BorderLayout());
f.add(new DashBoard(panels));
f.setSize(650, 450);
f.setVisible(true);

JButton  b = new JButton("add panel");
f.add(b, BorderLayout.SOUTH);
b.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
panels.add(new PanelTitre("Panel ", creerTextArea(10)));
f.getContentPane().repaint();
}

});

}

private static JTextArea creerTextArea(int i){
JTextArea texte = new JTextArea("Texte du Panel numéro "+i+".");
texte.setEditable(false);
texte.setOpaque(false);
return texte;
}

}

Commenter la réponse de profiter
profiter 211 Messages postés mercredi 15 juin 2011Date d'inscription 15 mars 2013 Dernière intervention - 7 sept. 2011 à 12:42
0
Merci
si vous pouvez m'indiquer comment

merci
Commenter la réponse de profiter
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 7 sept. 2011 à 13:10
0
Merci
f.setLayout(new GridLayout(1,0));//Supprime cette ligne
f.setLayout(new BorderLayout());
//....
f.add(new DashBoard(panels, BorderLayout.CENTER));
//Ajoute BorderLayout.CENTER


Le f.setVisible(true), il faut le mettre à la fin du constructeur
Commenter la réponse de cs_Julien39
profiter 211 Messages postés mercredi 15 juin 2011Date d'inscription 15 mars 2013 Dernière intervention - 7 sept. 2011 à 15:51
0
Merci
et pour le redimensionnement
je n'ai aucune idee

si tu peux m'indiquer

merci
Commenter la réponse de profiter
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 7 sept. 2011 à 16:08
0
Merci
Essayes de faire quelques recherches sur internet, il y a beaucoup de choses sur ce sujet par exemple http://fr.w3support.net/index.php?db=so&id=1119989 ou http://stackoverflow.com/questions/1119989/making-a-jpanel-manually-resizable
Commenter la réponse de cs_Julien39
profiter 211 Messages postés mercredi 15 juin 2011Date d'inscription 15 mars 2013 Dernière intervention - 7 sept. 2011 à 17:45
0
Merci
j' ai vu les liens et autres choses mais je ne suis pas encore arrivé

voila a quoi je suis arrivé : lorsque je clique sur le PanelTitre n'importe ou ( au centre .... ) il se redimenssionne suivant le deplacement de la souris
je veux qu'il ne se deplase que lorsque je clique sur les frontieres
je compte sur toi de me rectifier le code

merci

public void mouseDragged(MouseEvent e) {
panelTitre.setLocation(
(int)(e.getX()-dashboard.getDragLocation().getX()+panelTitre.getX()),
(int)(e.getY()-dashboard.getDragLocation().getY()+panelTitre.getY())
); 

panelTitre.setSize(
(int)(e.getX()-dashboard.getDragLocation().getX()+panelTitre.getX()),
(int)(e.getY()-dashboard.getDragLocation().getY()+panelTitre.getY())
); 

dashboard.repaint();
}



je m'exuse pour ces beaucoup de questions
Commenter la réponse de profiter
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 8 sept. 2011 à 10:45
0
Merci
Il suffit que tu testes si le pointeur de la souris est dans une marge autour du bord du composant :

int marge=5;
if(e.getX()<marge || e.getX()>composant.getWidth()-marge ||
      e.getY()<marge || e.getY()>composant.getHeight()-marge){
   //Instructions effectuée dans le cas ou tu es sur le border
}
else {
   //Si tu es sur l'interieur
}
Commenter la réponse de cs_Julien39
profiter 211 Messages postés mercredi 15 juin 2011Date d'inscription 15 mars 2013 Dernière intervention - 8 sept. 2011 à 11:51
0
Merci
merci

ca na pas bien marché
elle ne se redimmenssionee que lorsque je clique sur des bordures et pas en pressant

voici le code modifié :

public void mouseDragged(MouseEvent e) {

int marge=5;
if(e.getX()<marge || e.getX()>panelTitre.getWidth()-marge ||
      e.getY()<marge || e.getY()>panelTitre.getHeight()-marge){
panelTitre.setSize(
(int)(e.getX()-dashboard.getDragLocation().getX()+panelTitre.getX()),
(int)(e.getY()-dashboard.getDragLocation().getY()+panelTitre.getY())
); 
}
else {
panelTitre.setLocation(
(int)(e.getX()-dashboard.getDragLocation().getX()+panelTitre.getX()),
(int)(e.getY()-dashboard.getDragLocation().getY()+panelTitre.getY())
); 
}


dashboard.repaint();
}



pour etre plus precit je veux que le JPanel soit redimensionnable comme si on a in JInternaleFrame
aussi lorsque je clique sur les bordures la fleche de la souris change a la fleche pour redimenssionner

est ce que tu sais ou je peux trouver le code de redimmenssioner l'internaleframe quand setresizable(true)

j'ai cherché mais j'ai pas trouvé

merci pour ton grand soutien
c'est vraiment tres gentil
Commenter la réponse de profiter
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 8 sept. 2011 à 13:41
0
Merci
Je ne comprends pas bien ce que tu veux dire. Le code a l'air correct.

Par contre, tu n'as pas de méthode setresizable(true) pour les JPanel. Tu peux changer le curseur de la souris, tu trouveras sur google comment faire, utilise un setCursor() dans les fonctions MouseEnter et mouseExited du MouseListener.
Commenter la réponse de cs_Julien39
profiter 211 Messages postés mercredi 15 juin 2011Date d'inscription 15 mars 2013 Dernière intervention - 8 sept. 2011 à 14:19
0
Merci
pas tout a fait juste
il ne redimenssionne pas au fur et au mesure que je clique sur les bordures et parfois quand je clique dans qlq bordures il ne se redimenssione pas

Par contre, tu n'as pas de méthode setresizable(true) pour les JPanel.

c'est pour cela que je veux voir le code (fait par java)qui redimenssione les iternalefrmaes en java quand setresizable= true
pour faire de meme pour le panel

ou bien
si tu as un peu de temps d'ajouter cette option de redimenssionement dans ton exemple : http://www.javafr.com/codes/DASHBOARD-TABLEAU-BORD-AVEC-DEPLACEMENT-COMPOSANTS_53528.aspx


j'espere ne pas te deranger
merci bien
Commenter la réponse de profiter
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 8 sept. 2011 à 15:55
0
Merci
non, je n'ai pas le temps d'ajouter cette fonctionnalité à mon programme. Cherches sur internet, il y a de nombreux exemples de JPanels repositionnables.
Commenter la réponse de cs_Julien39
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscription 17 mai 2018 Dernière intervention - 8 sept. 2011 à 15:55
0
Merci
As tu consulté les liens que je t'ai donné ?
Commenter la réponse de cs_Julien39

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.