[Java] JTable columnwidth bij printen

Pagina: 1
Acties:

  • plofkip
  • Registratie: Oktober 2002
  • Laatst online: 12-02 11:39
Hey proggers!

Ik ben even bezig in Java en daarin moet ik een overzicht kunnen afdrukken (printen, met een printer dus). Het printen gaat prima, ik heb de JTable omgezet naar een graphic zodat deze met paincomponent getekend kan worden en afgedrukt kan worden! Maar nu wil ik de width van een kolom aanpassen en dat werkt niet :-X
Dit is de code:
Java:
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
static void drawPage(Graphics2D g2)
    {
        JPanelKlasse p = new JPanelKlasse();
        String[] kolomNamen =
                {
                "Nr", "Student", "Opl. fase", "Handtekening", "Resultaat"}; // Kolomnamen instellen, bepaald ook het aantal kolommen
                 int[] afmetingen =
                {
                100, 200, 200, 200, 200}; // Afmetingen van de kolommen instellen

                 Table tabel = new Table(new TableModel(kolomNamen), afmetingen); // Stop een nieuwe Table in een var
                 tabel.setSize(300, 300);
                 tabel.setLocation(100, 100);
                 Vector blaat = new Vector();

                 Blaatje object = new Blaatje("Hallo", "Hallo1");
                 blaat.add(object);
                 tabel.addRij(blaat);

        Object[][] data =
                {
                {"1", "Jan Smit",
                "Snowboarding", new Integer(5), new Boolean(false)},
                {"2", "Laura Bok",
                "Roeien", new Integer(3), new Boolean(true)},
                {"3", "Leo vd Ploeg",
                "Naaien", new Integer(2), new Boolean(false)},
                {"4", "Sjakie Boon",
                "Volleybal", new Integer(20), new Boolean(true)},
                {"5", "Bart Vos",
                "Pool", new Integer(10), new Boolean(false)}
        };

        String[] kolomkoppen =
                {"1", "2", "3", "4", "5"};
    
        final JTable table = new JTable(data, kolomkoppen);
        table.setSize(600, 300);
        // Disable auto resizing
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    
        // Set the first visible column to 100 pixels wide
        int vColIndex = 1;
        TableColumn col = table.getColumnModel().getColumn(vColIndex);
        int width = 300;
        col.setPreferredWidth(width);
    
        BufferedImage bi = new BufferedImage(table.getWidth(), table.getHeight(), BufferedImage.TYPE_INT_RGB);
        Graphics2D g2D = (Graphics2D) bi.getGraphics();
        table.paint(g2D);
        g2.drawImage(bi, 75, 180, 500, 300, p);
}


Begrijpt iemand waarom dit niet werkt? Weet ook iemand waarom de header van de JTable niet wordt afgedrukt?

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 12-02 12:06
Zijdelingse opmerking: sinds 1.5 beschikt JTable over een convience methode die print() heet. Moet jij eens raden waar die voor dient ;)

  • plofkip
  • Registratie: Oktober 2002
  • Laatst online: 12-02 11:39
FallenAngel666 schreef op woensdag 18 oktober 2006 @ 23:38:
Zijdelingse opmerking: sinds 1.5 beschikt JTable over een convience methode die print() heet. Moet jij eens raden waar die voor dient ;)
Ik heb het gelezen ja! Maar ik moet meer dan een table afdrukken, kan dat ook via die manier? Heb wel iets gelezen over een header en een footer?

[edit]
Ik heb die print() functie uitgeprobeerd en dat ziet er opzich wel netjes uit, maar ik krijg geen kolomnamen erboven :? en ik kan de kolom breedte wéér niet instellen :?

[ Voor 18% gewijzigd door plofkip op 19-10-2006 08:54 . Reden: Toevoeging ]


  • kasper_vk
  • Registratie: Augustus 2002
  • Laatst online: 08-04-2025
In jouw code in je TS zie ik op regel 12 staan
Java:
1
Table tabel = new Table(new TableModel(kolomNamen), afmetingen); // Stop een nieuwe Table in een var 

Maar ik had hier verwacht
JTable tabel = new JTable( ....

De JTable class dus, niet Table; Wat is die Table voor class?
Wellicht dat die Table-class op dit gebied anders functioneert dan JTable of (indien je hem zelf geschreven hebt) wellicht zit daar een bugje in waardoor de kolombreedtes niet gezet worden.

The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'


  • plofkip
  • Registratie: Oktober 2002
  • Laatst online: 12-02 11:39
Gebruik nu JTable (Table was idd een eigen klasse, maar daar zat de fout niet in) en heb het eindelijk voor elkaar gekregen, die kolombreedtes doet hij pas als je hem ook daadwerkelijk op een frame plaatst en dus visible true en dan gelijk weer op false zet... Heb het nu voor elkaar :)

[ Voor 12% gewijzigd door plofkip op 19-10-2006 15:27 ]