Avatar billede jakobbak Nybegynder
05. april 2004 - 19:00 Der er 19 kommentarer og
1 løsning

row header på jTable

Er der nogen der kan fortælle mig hvordan man simpelt laver en row header på et jTable?
Avatar billede trp79 Nybegynder
05. april 2004 - 19:47 #1
Prøv engang at kigge på http://www.docjava.dk
--> Grafiske Brugergrænseflader --> Tabeller
Avatar billede jakobbak Nybegynder
05. april 2004 - 19:53 #2
God side, men ikke noget jeg umiddelbart kan bruge til noget, der er ingen eksempler på en row header.
Avatar billede trp79 Nybegynder
05. april 2004 - 20:21 #3
Så er jeg ikke med på hvad du mener med row headers ?
Avatar billede jakobbak Nybegynder
05. april 2004 - 20:23 #4
ved hver kolonne er der en overskriftscelle (default grå), sådan en celle vil jeg også gerne have ud for hver række.
Avatar billede _carsten Nybegynder
05. april 2004 - 20:46 #5
>jakobbak  For mig at se er din sidste kommentar ren volapyk.

Er det en header til rækken, noget a la regnearksstil, altså rækkenummerering ?
Avatar billede jakobbak Nybegynder
05. april 2004 - 20:49 #6
>_carsten jeg ved ikke lige hvad der skete ved min sidste kommentar, men ja det er en header ligesom i regneark, bare med tidspunkter (8:00, 8:15, osv.) i stedet for nummerering.
Avatar billede _carsten Nybegynder
05. april 2004 - 20:53 #7
Hmm - har aldrig prøvet at lave en, men kan man lave en columnHeaderRenderer skulle det andet vel også være muligt, spørgsmålet er bare om jeg kan.

Jeg prøver dog alligevel - vender tilbage.
Avatar billede jakobbak Nybegynder
05. april 2004 - 20:56 #8
mon ikke du kan, du har jo svaret fuldt ud på mange af mine spørgsmål ;-)
Jeg har selv set på det i flere timer og kan ikke se løsningen umiddelbart, det burde jo være nemt.
Avatar billede _carsten Nybegynder
05. april 2004 - 22:22 #9
Som jeg læser mulighederne i JScrollPane er det at putte en komponent ind der
hvor rækkenr./tid skal være og det kunne næsten være hvad som helst der har et
tabel lignende layout (Jlist, JComboBox), men det må absolut være nemmest at
gøre det med en tabel - altså 2 tabeller ind i JScrollPanet én til rækkenr./tid
og én til data. Her er hvad jeg er nået frem til, at synkronisere de to tabeller
ville jeg umiddelbart mene er en detalje, men for at sige det lige ud - jeg gider
ikke mere i aften.

Der kan være andre løsninger, jeg kan bare ikke se hvad og hvordan!

import javax.swing.*;
import javax.swing.table.*;

public class TestTableRowHeader extends javax.swing.JFrame {

    public TestTableRowHeader() {
        initComponents();
       
        rowHeader = new JTable();
       
        rowHeader.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {"8:00"},
                {"8:15"},
                {"8:30"},
                {"8:45"}
            },
            new String [] {
                "Tid"
            }
        ));
        rowHeader.setPreferredScrollableViewportSize(new java.awt.Dimension(50,100));
        scroll.setRowHeaderView(rowHeader);
    }
   

    private void initComponents() {
        scroll = new javax.swing.JScrollPane();
        table = new javax.swing.JTable();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        table.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        scroll.setViewportView(table);

        getContentPane().add(scroll, java.awt.BorderLayout.CENTER);

        pack();
    }
   
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }

    public static void main(String args[]) {
        new TestTableRowHeader().show();
    }
   
    private JScrollPane scroll;
    private JTable table;
    private JTable rowHeader;
}
Avatar billede _carsten Nybegynder
05. april 2004 - 22:51 #10
Fik lige løst problemet med at få vist "Tid" i øverste venstre hjørne


import javax.swing.*;
import javax.swing.table.*;

public class TestTableRowHeader extends javax.swing.JFrame {

    public TestTableRowHeader() {
        initComponents();
       
        rowHeader = new JTable();
       
        rowHeader.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {"8:00"},
                {"8:15"},
                {"8:30"},
                {"8:45"}
            },
            new String [] {
                "Tid"
            }
        ));
        rowHeader.setPreferredScrollableViewportSize(new java.awt.Dimension(50,100));
        scroll.setRowHeaderView(rowHeader);
        JTableHeader header = rowHeader.getTableHeader();
        header.setReorderingAllowed(false);
        header.setResizingAllowed(false);

        scroll.setCorner(JScrollPane.UPPER_LEFT_CORNER, header);
    }
   

    private void initComponents() {
        scroll = new javax.swing.JScrollPane();
        table = new javax.swing.JTable();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        table.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        scroll.setViewportView(table);

        getContentPane().add(scroll, java.awt.BorderLayout.CENTER);

        pack();
    }
   
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }

    public static void main(String args[]) {
        new TestTableRowHeader().show();
    }
   
    private JScrollPane scroll;
    private JTable table;
    private JTable rowHeader;
}
Avatar billede _carsten Nybegynder
05. april 2004 - 23:46 #11
Jeg kunne altså bare ikke stoppe, at synkronisere de to tabeller er "a piece of cake"

Afslut min konstruktør med denne linie.
rowHeader.setSelectionModel(table.getSelectionModel());
Avatar billede jakobbak Nybegynder
06. april 2004 - 08:20 #12
tak, for svarene! Jeg har ikke prøvet det endnu, men du fortjener klart point for din indsats.
Avatar billede trp79 Nybegynder
06. april 2004 - 09:14 #13
Nu er jeg godt nok ikke superskarp hvad angår tabeller, men svare carsten eks. ikke til det, der findes på docjava.dk --> grafiske brugergrænseflader --> tabeller --> eksempel: Reservation af Auditoriet (figur 6) ?
Avatar billede _carsten Nybegynder
06. april 2004 - 09:35 #14
> trp79
Kan du smide et direkte link, min elendige fladskærm kan ikke klare så høj en opløsning at jeg se 'tabeller'
Avatar billede trp79 Nybegynder
06. april 2004 - 09:43 #15
Jo selvfølgelig www.docjava.dk/gui/widgets/jtable/jtable.htm
Det er bare af ren nysgerrighed :)
Avatar billede _carsten Nybegynder
06. april 2004 - 09:47 #16
Ha - fandt i øvrigt ud af at man kan ændre menuen så den passer til en anden skærmopløsning

Men det er der med at LÆSE havd folk skriver - Tak trp79
Avatar billede trp79 Nybegynder
06. april 2004 - 09:50 #17
hehe det var så lidt.
Avatar billede trp79 Nybegynder
06. april 2004 - 09:51 #18
troede faktisk du kørte i en mindre opløsning end alternativet på siden. Det kunne jo godt ske der stadig sad nogle, som kørte med 800 x 600 eller mindre ;)
Avatar billede _carsten Nybegynder
06. april 2004 - 10:12 #19
Nej, det gør jeg dog ikke, men på mit arbejde kan jeg desværre ikke komme højere end 1024 x 768

M.h.t. docjava's figur 6, så er det ikke det samme som mit eksempel, han bruger tabellens første kolonne til at vise 'Lektion', hvor jeg laver en kolonne udenfor selve tabellen, layout mæssigt ser de ens ud, men der er meget forskel.

Kolonnen 'Lektion' kan du flytte hvorhen du vil, det kan ikke lade sig gøre i mit eksempel, der er det kun muligt at flytte 'Title ?' kolonnerne
Avatar billede trp79 Nybegynder
06. april 2004 - 10:21 #20
Okay, så er jeg med. Mange tak for svaret.

Mvh
Torben
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester