Avatar billede dennism Nybegynder
06. november 2006 - 17:41 Der er 17 kommentarer og
1 løsning

Java: Opstilling af tabel?

Jeg skal have lavet et vindue, som nogle udtræk fra en mySQL-databasen.

Indtil videre har jeg lavet en frame med borderLayout, hvor CENTER indeholder et JPanel med GridLayout. Dette ses sådan ud:
http://www.demaweb.dk/java.jpg

Som I kan se er det ikke særlig flot. Et andet problem er, at jeg også gerne vil have at der kan stå noget tekst ovenover dette Grid (stadig i CENTER), og også noget tekst nedenunder.

Hvordan kan jeg få lavet dette, sådan det ser ordentligt ud?
Avatar billede dennism Nybegynder
06. november 2006 - 20:34 #1
Ingen der kan hjælpe her? :(
Avatar billede winners79 Nybegynder
06. november 2006 - 22:44 #2
Hvad med et JPanel i center der bruger BorderLayout... dette JPanel har så dit gridbag panel i center, og en label i south og en label i north
Avatar billede winners79 Nybegynder
06. november 2006 - 22:47 #3
eller bare brug BorderLayout på din JFrame
Avatar billede dennism Nybegynder
07. november 2006 - 07:12 #4
Jeg har i forvejen BorderLayout på min JFrame, da der skal være nogle menuikoner mm. uden om. Det var måske en ide at smide det Panel i center med borderlayout, og så i dets center at smide mit grid.

Men jeg er stadig usikker på, om gridlayout er måden man opstiller data på? Hvordan kan jeg f.eks. lave en border på de øverste på labels? Altså en border i bunden af dem.
Avatar billede winners79 Nybegynder
07. november 2006 - 14:27 #5
Hvis jeg var dig ville jeg putte mine data fra databasen ned i en JTable, den er nok lidt mere dynamisk og lettere at håndtere
Avatar billede dennism Nybegynder
07. november 2006 - 16:10 #6
JTable er min løsning ;)

Jeg har blot et problem, med at få lavet mit data-array:

Object[][] data = {};
data .= {"test", "test", "test"};

Dette virker ikke. Hvordan kan man ellers gøre det?
Da mine data skal hentes ind fra en mySQL-database er jeg nødt til at kunne tilføje én række ad gangen.
Avatar billede winners79 Nybegynder
07. november 2006 - 17:22 #7
2 dimensionelt array:)

Object[][] data = {{"test", "test", "test"},{"test", "test", "test"}};
Avatar billede dennism Nybegynder
07. november 2006 - 19:28 #8
Øhh, jeg tror du misforstod mig.

Jeg vil gerne vide hvordan jeg tilføjer en række til arrayet?
Avatar billede winners79 Nybegynder
07. november 2006 - 20:06 #9
Object[][] data = new Object[3][10];

data[0][0] = "test1";
data[1][0] = "test2";
data[2][0] = "test3";
Avatar billede dennism Nybegynder
08. november 2006 - 09:54 #10
Tak, smider du lige et svar? :)
Avatar billede dennism Nybegynder
08. november 2006 - 09:54 #11
Kan du iøvrigt fortælle mig, hvordan jeg kan lave padding el. lign på mine elementer. De bliver hurtigt ret sammenklemt.
Avatar billede winners79 Nybegynder
08. november 2006 - 13:31 #12
Normalt tilpasser den størrelen til hvor stor tabellen er

http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#width

TableColumn column = null;
for (int i = 0; i < 5; i++) {
    column = table.getColumnModel().getColumn(i);
    if (i == 2) {
        column.setPreferredWidth(100); //sport column is bigger
    } else {
        column.setPreferredWidth(50);
    }
}

Selv om der er svaret kan du bare blive ved med at stille spørgsmål;)
Avatar billede dennism Nybegynder
08. november 2006 - 15:08 #13
Undskyld, men jeg tror du misforstod mit spørgsmål.
Jeg kender godt overstående metode til at ændre størrelsen på kolonnerne. Det jeg gerne vil, er at hvis jeg f.eks. har et Panel med FlowLayout, så bliver komponenterne stillet helt op ad kanten på mit Panel. Hvis jeg f.eks. har et BorderLayout, vil jeg gerne kunne lave luft mellem den højre side af WEST og den venstre side af CENTER. Håber det er til at forstå.

Derudover har jeg også en andet væsentligt problem, som knytter sig til disse JTabel's. Hvis jeg laver en tabel som f.eks. indeholder String og int, så kan man ændre på de data der står i disse (altså de data der er i tabellen). Det kan også være meget smart, men hvordan kan jeg så sørge for, at hver gang der bliver ændret i et felt, så bliver databasen holdt ajour? Med andre ord, så leder jeg efter en metode som kan registrere, hvornår der er en ændring i et givet felt. Håber du kan hjælpe med dette!
Avatar billede winners79 Nybegynder
08. november 2006 - 15:59 #14
Du kunne putte en valueChanged listener på, der er et lille eksempel for dette her:

http://www.rgagnon.com/javadetails/java-0336.html
Avatar billede winners79 Nybegynder
09. november 2006 - 23:40 #15
Jeg har ikke glemt dig:)

prøv addGap metoden som er forklaret her:

http://java.sun.com/javase/6/docs/api/javax/swing/GroupLayout.Group.html

Tror lige det er det du mangler til din "padding"
Avatar billede dennism Nybegynder
10. november 2006 - 10:54 #16
Kan ikke rigtigt gennemskue hvordan den virker..kan du give et lille kodeeksempel?
Avatar billede dennism Nybegynder
10. november 2006 - 10:58 #17
er det muligt at lave sådan, at man ikke kan redigere i denne tabel?
Avatar billede dennism Nybegynder
10. november 2006 - 11:05 #18
Jeg forsøger at lave denne addListSelectionListener på min tabel, men det virker ikke helt. Får at vide, at ListSelectionListener ikke findes. Kan du hjælpe med det?

        table.addListSelectionListener(new ListSelectionListener() {
            public void valueChanged(ListSelectionEvent e) {
                System.out.println(e);
            }
        });
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