Impression personnalisé JTable .........

Résolu
profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 - 5 sept. 2011 à 17:37
profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 - 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

22 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
6 sept. 2011 à 12:18
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.
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
9 sept. 2011 à 10:40
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
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 sept. 2011 à 17:46
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
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
5 sept. 2011 à 18:39
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)
0

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

Posez votre question
profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 8
6 sept. 2011 à 11:47
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
0
profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 8
6 sept. 2011 à 17:59
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
0
profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 8
6 sept. 2011 à 19:35
et l'apercu avant impression
avez vous un idee
merci
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
7 sept. 2011 à 08:44
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)
0
profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 8
7 sept. 2011 à 11:53
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;
}

}

0
profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 8
7 sept. 2011 à 12:42
si vous pouvez m'indiquer comment

merci
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
7 sept. 2011 à 13:10
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
0
profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 8
7 sept. 2011 à 15:51
et pour le redimensionnement
je n'ai aucune idee

si tu peux m'indiquer

merci
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
7 sept. 2011 à 16:08
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
0
profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 8
7 sept. 2011 à 17:45
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
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
8 sept. 2011 à 10:45
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
}
0
profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 8
8 sept. 2011 à 11:51
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
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
8 sept. 2011 à 13:41
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.
0
profiter Messages postés 205 Date d'inscription mercredi 15 juin 2011 Statut Membre Dernière intervention 15 mars 2013 8
8 sept. 2011 à 14:19
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
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
8 sept. 2011 à 15:55
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.
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
8 sept. 2011 à 15:55
As tu consulté les liens que je t'ai donné ?
0
Rejoignez-nous