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

AWT/Swing Java Discussion :

insérer un Jcombox dans un JTextPane


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 242
    Par défaut insérer un Jcombox dans un JTextPane
    Bonjour,
    Voilà : je fais une petite interface en java qui va afficher des formulaires à mes clients qu'ils vont ensuite imprimer.

    Ce que j'aimerai faire c'est intégrer un Jcombox dans mon JTextPane (qui est le conteneur du formulaire en question).

    Ce serait du type:

    1.CHOIXduCLIENT.DATE.ENTREPRISE

    Des idées ?
    Merci !

  2. #2
    Membre confirmé Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 242
    Par défaut
    Bon je vais reformuler pour être plus claire :
    En fait vous allez me prendre pour une folle (si ce n'est pas déjà fait):

    Je génère des bouts de texte en html que j'ajoute à un fichier html final qui sera affiché dans le JTexTPane :

    voilà ce que ca donne :
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    public class FileAfficher extends JFrame {
    	private JTextPane texte;
    	private boolean texteModifie = false;
    	private HTMLDocument doc;
    
    	public static void main(String[] args) {
    		JFrame.setDefaultLookAndFeelDecorated(true);
    		JDialog.setDefaultLookAndFeelDecorated(true);
    		new FileAfficher();
    	}  
    
    	FileAfficher() {
    		super("File Printer");
    		setSize(new Dimension(800, 800));
    		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    		addWindowListener(new WindowAdapter() {
    			public void windowClosing(WindowEvent evt) {
    				quitter();
    			}
    		});
    
    		texte = new JTextPane();
    		texte.setContentType("text/html" );
    		HTMLEditorKit k = new HTMLEditorKit();
    
    		//L'unité de base de la structure est un Element, qui a un ensemble d'attributs. 
    		//Les éléments st de natures différentes suivant qu'on a affaire un texte HTML : html, body, p, content, etc...
    		doc = (HTMLDocument)k.createDefaultDocument();
    		texte.setEditorKit(k);
    		texte.setDocument(doc);
    		//texte.setFont(Monospaced);
    
    		/**
    		Style defaut = texte.getStyle("default");
    		Style as = texte.addStyle("stylePerso",defaut);
    
    		StyleConstants.setFontFamily(as, "Monospaced");
    		StyleConstants.setFontSize(as, 20);
    		StyleConstants.setAlignment(as, 1);
    
    		StyledDocument docStyled = texte.getStyledDocument();**/
    		
    		texte.setBackground(Color.WHITE);
    		
    
    
    		texte.addKeyListener(new KeyAdapter() {
    			public void keyTyped(KeyEvent evt) {
    				texteModifie = true;
    			}
    		});
    
    		getContentPane().add(new JScrollPane(texte));
    		setJMenuBar(barreMenus());
    		setVisible(true);
    	}
    
    private void FicheRecapi(String nomCentre,String idCentre,String nomPreleveur,String datePrelev,String heureArrivee,
    			String heureDepart,String numeroPage) throws IOException{		
    
    		//Partie concernant l'entête non variable de cette Fiche
    		/* Ouverture des flux */
    		
    		FileInputStream debutfilename =new FileInputStream("/home/fripette/workspace/FilePrinter/enteteFicheRecap.html");
    		FileOutputStream fichierFinal = new FileOutputStream("/home/fripette/workspace/FilePrinter/FinalFicheRecap.html");
    		
    		/* Lecture par segment de 0.5Mo */
    		byte buffer[]=new byte[512*1024];
    		
    		/* Ecriture du début du fichier dans le fichier final */
    		WriteHTML(debutfilename,fichierFinal,buffer,0);
    
    		/* Fermeture des flux */
    		debutfilename.close();
    
    		/**
    			for (int i=0; i < initString.length; i++) {
    			doc.insertString(doc.getLength(), initString[i],as);	
    			}**/
    
    		/*Partie concernant la partie variable de cette Fiche*/
    		
    		/* Ecriture des données variables dans un fichier qi va être relu après */
    		FileWriter milieufilename =new FileWriter("/home/fripette/workspace/FilePrinter/milieuFicheRecap.html");
    		
    		String intro="Codification des échantillons prélevés";
    		milieufilename.write(intro);
    		
    		String baliseDebut="<br><br><TABLE cols=\"3\" colspan=\"3\" width=\"75%\">";
    		milieufilename.write(baliseDebut);
    		
    		
    		String borneDebut="1.";
    		
    		String borneDEBUT=borneDebut+datePrelev+"."+idCentre+"."+numeroPage;
    		
    
    		String borneFin="";
    		String borneFIN=borneFin+datePrelev+"."+idCentre+"."+numeroPage;
    		
    		
    		String un=	"<TR><TD width=\"40%\"align=\"left\">";
    		String trois="</TD><TD width=\"10%\" align=\"center\">à</TD><TD width=\"40%\" align=\"right\">";			
    		String cinq="</TD></TR>";
    		
    		for(int repetition=0; repetition<=9;repetition++){			
    			String reslt=un+borneDEBUT+trois+borneFIN+cinq;
    			milieufilename.write(reslt);
    			}
    		
    		String baliseFin="</TABLE><br><br>";
    		
    		milieufilename.write(baliseFin);
    		milieufilename.close();
    		
    		
    		/* Ecriture de la partie variable dans le fichier final */
    		FileInputStream milieu =new FileInputStream("/home/fripette/workspace/FilePrinter/milieuFicheRecap.html");
    		byte buffer3[]=new byte[512*1024];
    		WriteHTML(milieu,fichierFinal,buffer3,0);
    		
    		
    		//Partie concernant la partie finale non variable de cette Fiche
    		FileInputStream finfilename =new FileInputStream("/home/fripette/workspace/FilePrinter/finFicheRecap.html");
    		byte buffer2[]=new byte[512*1024];
    		WriteHTML(finfilename,fichierFinal,buffer2,0);
    		
    		/* Fermeture des flux */
    		finfilename.close();
    		fichierFinal.close();
    		
    		//IMPORTANT :pour insérer une page .html dans le JTextPane texte.read(fichierFinal,doc);
    		FileInputStream ficheFinal = new FileInputStream("/home/fripette/workspace/FilePrinter/FinalFicheRecap.html");
    		
                  // au final : on relit le fichier final en .html dans lequel j'ai ajouté mes bouts de .html 
                  texte.read(ficheFinal,doc);
    		
    	}
    Ce que j'aimerai faire c'est:
    _1/ ajoutez une image dans la premiere partie non variable grâce à du code hmtl mais celui ci n'est pas pris en compte par le JTextPane :

    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    	<body>
    		<table cols="2" width="80%" >
    			<TR>
    				<TD ALIGN="LEFT" width="30%">
    				<IMG src="/home/fripette/workspace/FilePrinter/logo.jpg" style="height:100%">
    				</TD>
    				<TD ALIGN="CENTER" width="60%" bgcolor="#C0C0C0">
    				 Fiche R&eacute;capitulative des pr&eacute;l &egrave;vements</TD>
    			</TR>
     
    			<TR> 
    				<TD></TD>
    				<TD ALIGN="CENTER" width="60%" bgcolor="#C0C0C0">
    				(au moins une fiche par &eacute;tablissement contr&ocirc;l&eacute;)
    				</TD>
    			</TR>
    		</table>
    <br><br>
    Autre chose que j'aimerai faire c'est rajouté/complété ma partie variable :
    en mettant une partie de type combobox dans la variable borneDEBUT et borneFIN.
    UN exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    si ma borneDEBUT est 1.        .250308.GRA.01.
    Dans l'espace blanc j'aimerai avoir un combobox avec différents choix : exemple de codes internes : EBM;LRS1,LRS2 ....
    Tout en sachant que je n'ai pas défini de StyledDocument !!

    J'espère avoir été plus claire!
    Help !

  3. #3
    Membre confirmé Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 242
    Par défaut
    Pas d'idées ??


    De plus j'essais de mettre en forme mon formulaire mtnt: affiner la police et la taille de celle ci.
    J'ai converti mon JTextPane en JEditorPane. Il semble que celui ci m'ouvre plus de possibilités.
    Bref voilà ma définition du StyleSheet:
    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
     
     
    		texte = new JEditorPane();
    		texte.setContentType("text/html" );
    		texte.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE);
     
    		StyleSheet myStyleSheet = new StyleSheet();
    	    myStyleSheet.addRule("body {font: 20px Dialog; color: blue}");
    	    myStyleSheet.addRule("p {font: 20px Serif}");
     
    	    HTMLEditorKit k = (HTMLEditorKit)(texte.getEditorKitForContentType("text/html"));
    	    k.setStyleSheet(myStyleSheet);
    	    texte.setEditorKit(k);
     
    	    Document doc = texte.getDocument();
    	    texte.setDocument(doc);
                texte.setBackground(Color.WHITE);
     
    	    getContentPane().add(new JScrollPane(texte));
    		setJMenuBar(barreMenus());
    		setVisible(true);
    Et dans mon autre classe FicheRecap:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    StringReader ficheFinal = new StringReader("/home/fripette/workspace/FilePrinter/FinalFicheRecap.html");
     
    //Apres avoir ajouté mes bouts de html dans mon fichier finale :
     texte.setPage("/home/fripette/workspace/FilePrinter/FinalFicheRecap.html");
    J'ai essayé d'ajouté une image aussi :
    en faisant dans mon fichier en .html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <body>
    		<table cols="2" width="80%" >
    			<TR>
    				<TD ALIGN="LEFT" width="30%">
    				<img src="/home/fripette/workspace/FilePrinter/logo_biotech.jpg" style="height:100%"></img>
    				</TD>
    				<TD ALIGN="CENTER" width="60%" bgcolor="#C0C0C0">
    				 <b>Fiche R&eacute;capitulative des pr&eacute;l &egrave;vements<b></TD>
    			</TR>
    J'ai juste une icone qui apparait mais pas l'image!

    Que de péripéties !!

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    La couverture du HTML dans les JTextPane est assez... heu... heu... disons, préhistorique, et ne dépasse pas les capacités du HTML 3.2.

    Donc il est audacieux de vouloir faire une interface utilisateur moderne sur cette base.

    Sans vouloir te décourager, peut être vaudrait-il mieux que tu cherches d'autres approches ?...

    Sinon, il est parfaitement possible de mettre un JComboBox dans un JTextPane indépendamment du HTML par l'intermédiaire, par exemple, du StyleConstants.setComponent.

  5. #5
    Membre confirmé Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 242
    Par défaut
    Je comprend bien et j'ai connaissance de la "puissance" du J...Pane de Java.
    Mais je suis en train de faire un petit FilePrinter en java.
    Donc je fais des tits bouts avec les variables actualisées et puis je les ajoute au JEditor/TexTPane et là j'en suis à essayer (désespérement) d'imprimer.
    Mais j'ai du mal partout : à afficher la police désirée avec StyleSheet ...

    Quel autre moyen de faire un FilePrinter: tout en sachant que le texte que je dois afficher dois être préalablement paramétrer (à cause des variables du texte en question) .

    Une piste ?? Quand même c'est pas si difficile que ca de faire un File Printer

  6. #6
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Le paquage javax.swing.text est très laborieux à utiliser.

    Peut être pourras-tu trouver des idées à How to Print Text.

Discussions similaires

  1. Insérer tag HTML complexe dans un JTextPane
    Par doobinay dans le forum Composants
    Réponses: 3
    Dernier message: 14/10/2009, 23h57
  2. Insérer une image dans un JTextPane
    Par Silverstone dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 16/08/2007, 14h58
  3. insérer des images dans une bd postgresql
    Par ephet dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/01/2004, 09h18
  4. Scroll automatique dans un JTextPane
    Par regbegpower dans le forum Composants
    Réponses: 9
    Dernier message: 11/11/2003, 09h24
  5. [Crystal Reports 9] comment insérer une image dans Détails
    Par VVE dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 22/10/2003, 17h06

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