Ajouter un commentaire

testeurforme

hello

voila comme prevu un exemple de code ou j'utilise un tableau avec des bordure. Le 1er exemple correspond au parametrage que j'utilise. IL ne me convient pas mais c'est la seule manière que j'ai trouvé pour avoir un semblant de bordure.

Il y a un pointsur lequel je ne me suis pas penché c'est l'impl"mentation de l'interface ITableColumnsInfo. J'ai créé la classe TableColumnsInfo mais je me demande si mon implémentation est bonne...

Pour pouvoir executer cela il faut avoir mis la bibliotheque
jfor-0.7.2rc1.jar disponible à l'adresse suivante :

http://sourceforge.net/project/showfiles.php?group_id=29441

import org.jfor.jfor.rtflib.rtfdoc.*;
import org.jfor.jfor.interfaces.ITableColumnsInfo;
import java.io.IOException;
import java.io.File;
import java.io.FileWriter;

public class TestBordure {
    private static final int MM_TO_TWIPS = (int) (1440f / 25.4f);

    public static void main(String[] arg) {
        TestBordure testBordure = new TestBordure();
        try {
            testBordure.generate();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void generate() throws IOException {
        File output = new File(new File("work"), "GenBordureTable.rtf");
        RtfFile f = new RtfFile(new FileWriter(output));
        RtfDocumentArea rda = f.startDocumentArea();
        RtfSection sect = rda.newSection();


        {
            RtfTable tbl = sect.newTable(new TableColumnsInfo());
            RtfAttributes att = new RtfAttributes();
            att.set(RtfTableRow.CELL_BORDER_BOTTOM, RtfText.BDR_BOTTOM_SINGLE);
            att.set(RtfTableRow.CELL_BORDER_RIGHT, RtfText.BDR_BOTTOM_SINGLE);

            for (int i = 0; i < 5; i++) {
                RtfTableRow r0 = tbl.newTableRow();
                r0.newTableCell(50 * MM_TO_TWIPS, att).newParagraph().newText("R" + i + " - 0");
                r0.newTableCell(50 * MM_TO_TWIPS, att).newParagraph().newText("R" + i + " - 1");
                r0.newTableCell(50 * MM_TO_TWIPS, att).newParagraph().newText("R" + i + " - 2");
            }
        }

        sect.newParagraph().newLineBreak();
        sect.newParagraph().newLineBreak();

        {
            RtfTable tbl2 = sect.newTable(new TableColumnsInfo());
            RtfAttributes att2 = new RtfAttributes();
            att2.set(RtfTableRow.CELL_BORDER_BOTTOM, RtfText.BDR_BOTTOM_SINGLE);
            att2.set(RtfTableRow.CELL_BORDER_RIGHT, RtfText.BDR_BOTTOM_SINGLE);
            att2.set(RtfTableRow.CELL_BORDER_LEFT, RtfText.BDR_BOTTOM_SINGLE);
            att2.set(RtfTableRow.CELL_BORDER_TOP, RtfText.BDR_BOTTOM_SINGLE);

            for (int i = 0; i < 5; i++) {
                RtfTableRow r0 = tbl2.newTableRow();
                r0.newTableCell(50 * MM_TO_TWIPS, att2).newParagraph().newText("R" + i + " - 0");
                r0.newTableCell(50 * MM_TO_TWIPS, att2).newParagraph().newText("R" + i + " - 1");
                r0.newTableCell(50 * MM_TO_TWIPS, att2).newParagraph().newText("R" + i + " - 2");
            }
        }

        sect.newParagraph().newLineBreak();
        sect.newParagraph().newLineBreak();

        {
            RtfTable tbl3 = sect.newTable(new TableColumnsInfo());
            RtfAttributes att3 = new RtfAttributes();
            att3.set(RtfTableRow.ROW_BORDER_BOTTOM, RtfText.BDR_BOTTOM_SINGLE);
            att3.set(RtfTableRow.ROW_BORDER_RIGHT, RtfText.BDR_BOTTOM_SINGLE);

            for (int i = 0; i < 5; i++) {
                RtfTableRow r0 = tbl3.newTableRow();
                r0.newTableCell(50 * MM_TO_TWIPS, att3).newParagraph().newText("R" + i + " - 0");
                r0.newTableCell(50 * MM_TO_TWIPS, att3).newParagraph().newText("R" + i + " - 1");
                r0.newTableCell(50 * MM_TO_TWIPS, att3).newParagraph().newText("R" + i + " - 2");
            }
        }

        sect.newParagraph().newLineBreak();
        sect.newParagraph().newLineBreak();

        {
            RtfTable tbl4 = sect.newTable(new TableColumnsInfo());
            RtfAttributes att4 = new RtfAttributes();
            att4.set(RtfTableRow.ROW_BORDER_RIGHT, RtfText.BDR_BOTTOM_SINGLE);
            att4.set(RtfTableRow.ROW_BORDER_LEFT, RtfText.BDR_BOTTOM_SINGLE);
            att4.set(RtfTableRow.ROW_BORDER_HORIZONTAL, RtfText.BDR_BOTTOM_SINGLE);
            att4.set(RtfTableRow.ROW_BORDER_VERTICAL, RtfText.BDR_BOTTOM_SINGLE);

            for (int i = 0; i < 5; i++) {
                RtfTableRow r0 = tbl4.newTableRow();
                r0.newTableCell(50 * MM_TO_TWIPS, att4).newParagraph().newText("R" + i + " - 0");
                r0.newTableCell(50 * MM_TO_TWIPS, att4).newParagraph().newText("R" + i + " - 1");
                r0.newTableCell(50 * MM_TO_TWIPS, att4).newParagraph().newText("R" + i + " - 2");
            }
        }

        sect.newParagraph().newLineBreak();
        sect.newParagraph().newLineBreak();


        f.flush();
    }

    class TableColumnsInfo implements ITableColumnsInfo {
        public float getColumnWidth() {
            return INVALID_COLUM_WIDTH;
        }

        public void selectFirstColumn() {
        }

        public int getNumberOfColumns() {
            return 0;
        }

        public int getColumnIndex() {
            return 0;
        }

        public void selectNextColumn() {
        }

        public boolean getFirstSpanningCol() {
            return false;
        }
    }

}

Si quelqu'un peut me dire pourquoi cela ne fonctionne pas, ou plutot comment faire pour avoir un tableau avec des bordures (et pas que les bordures externes, les cellules aussi doivent avoir des bordures).

Si des précisions sont nécessaires sur le code que je viens de fournir, n'hésitez pas ...

merci

bonne journée

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 BBBB   U   U  DDD   X   X   QQQ   
B B U U D D X X Q Q
BBBB U U D D X Q Q
B B U U D D X X Q QQ
BBBB UUU DDD X X QQQQ
Q