IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Dysfonctionnement fonction print() JTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Par défaut Dysfonctionnement fonction print() JTable
    Bonjour,

    J'ai un problème d'impression d'une JTable en utilisant la fonction fait pour cela que je n'arrive pas à résoudre.

    J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    try {	
    getTblData().print(PrintMode.FIT_WIDTH,new MessageFormat("test"),null, true, tmp, true);
    }
    catch (Exception ex) {
    ex.printStackTrace();
    }
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try {	
    PrinterJob job = PrinterJob.getPrinterJob();
    job.setPrintable(getTblData().getPrintable(PrintMode.FIT_WIDTH,new MessageFormat("test"),null));					javax.print.attribute.HashPrintRequestAttributeSet tmp = new javax.print.attribute.HashPrintRequestAttributeSet();				tmp.add(javax.print.attribute.standard.OrientationRequested.LANDSCAPE);
    if(job.printDialog(tmp)) job.print(tmp);
    }
    catch (Exception ex) {
    ex.printStackTrace();
    }
    Ma fonction getTblData() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private JTable getTblData() {
    		if (tblData == null) {
    			tblData = new JTable();
    			tblData.setRowHeight(22);
    			tblData.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    		}
    		return tblData;
    	}
    Je remplis cette table avec un modèle et je lui applique un renderer... tout marche très bien à l'affichage.

    Par contre quand je veux imprimer, il m'imprime ce qu'il a envie, des fois rien, des fois les 2 premières lignes du tableau, des fois 2 lignes et demi (il s'arrête en plein milieu de la ligne), et des fois il m'imprime tout le tableau !

    Avec la deuxième fonction, j'ai même des plantages du spooler d'impression au bout de la 2 ème fois (par contre la première fois ca fonctionne très bien...

    J'ai même essayé d'implémenter l'interface Printable pour le JScrollPane qui contient la JTable mais il ne m'imprime que la partie visible du JScrollPane...

    Donc je sais pas trop quoi faire... quelqu'un pourrait me donner un petit coup de main ?

    Merci d'avance

    A bientôt

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Par défaut
    Bon bah c'est un peu mort quand même !

    A savoir que j'ai toujours ce fichu problème, rien à faire j'arrive pas à le régler...

    J'ai simplifier :

    - un JTable avec un modèle tout simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    public class TableModelGlobal extends AbstractTableModel {
    	private static final long serialVersionUID = 1L;
     
    	Vector<?> list;
    	Vector<String> date;
    	Object[][][] value;
     
    	/**
             * Constructeur par défaut
             * @param list
             * @param date
             * @param value
             */
    	public TableModelGlobal(final Vector<?> list,final Vector<String> date,Object[][][] value) {
    		this.list = list;
    		this.date =date;
    		this.value =value;
    	}
     
    	/**
             * @return le nombre de colonne
             */
    	public int getColumnCount() {
    		return 30;
    	}
     
    	/**
             * @param parm1
             * @param parm2
             * @return la valeur d'un cellule
             */
    	public Object getValueAt(final int parm1, final int parm2) {
    		String toReturn = "q";
    		return toReturn;
    	}
     
    	/**
             * @return nombre de lignes
             */
    	public int getRowCount() {
    		return 20;
    	}
     
    	/**
             * @param col index de la colonne
             * @return le nom de la colonne
             */
    	public String getColumnName(final int col) {
    		String toReturn = String.valueOf(col);
    		return toReturn;
    	}
    }
    Donc list date et value ne servent à rien dans ce modèle (je l'ai simplifié pour renvoyer que des valeurs simple) mais ce n'est pas trop le problème

    Après je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    getTblData().setModel(new TableModelGlobal(listeConducteur,date,value));
    getJspTable().setViewportView(getTblData());
    La fonction getJspTable() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private JScrollPane getJspTable() {
    		if (jspTable == null) {
    			//jspTable = new GlobalScrollPane(GlobalScrollPane.DRIVER);
    			jspTable = new JScrollPane();
    		}
    		return jspTable;
    	}
    et pour finir j'ai un bouton qui lance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    new Thread() { 
    public void run() {
    try {
    						javax.print.attribute.HashPrintRequestAttributeSet tmp = new javax.print.attribute.HashPrintRequestAttributeSet();	tmp.add(javax.print.attribute.standard.OrientationRequested.LANDSCAPE);
    								System.out.println(getTblData().print(JTable.PrintMode.FIT_WIDTH,
    new MessageFormat("e"), new MessageFormat("e"),true, tmp, false));
    }
    catch (Exception ex) { ex.printStackTrace(); }
    }
    }.start();
    La console retourne bien "true"

    Mais donc il écrit au fur et à mesure et s'arrête un peu ou il veut (au titre des colonnes, à la cellule de la lignes 15, colonne 13, ou ailleurs, c'est très aléatoire).

    Pourtant c'est un tableau TRES classique que j'ai fait la...

    Précision, ca arrive sur deux postes différents reliés à 2 imprimantes différentes...

Discussions similaires

  1. Fonction print ouvrant une nouvelle fenêtre shell
    Par nymus7 dans le forum Langage
    Réponses: 2
    Dernier message: 23/01/2008, 09h15
  2. Réponses: 6
    Dernier message: 05/09/2006, 12h42
  3. Fonction print avec les propriétés d'impression
    Par Alexandrebox dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/08/2006, 13h30
  4. [VBA-E] problème avec la fonction print#
    Par phoon dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/03/2006, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo