Avatar billede riversen Nybegynder
25. september 2002 - 17:32 Der er 25 kommentarer og
2 løsninger

JTabel og JScrollPane

Jeg laver en JScrollPane som får min JTable med i konstruktøren.
Men hvis min JTable ikke kan fylde hele området får jeg en grå linie forneden...hvordan slipper jeg af med det?

Hvis jeg bruger:
tabel.setPreferredScrollableViewportSize( tabel.getPreferredSize() );

bliver min JFrame alt for stor, hvis der er for mange rækker i tabellen.

Jeg har prøvet at sætte en hvis baggrund men det er som om det ikke virker.
både på framen, getcontentpane og min jscrollpane
Avatar billede riversen Nybegynder
25. september 2002 - 17:33 #1
og et tillægsspørgsmål...hvordan får man fat i skærmopløsning og evt. plads til rådighed på skærmen
Avatar billede magoo20000 Nybegynder
25. september 2002 - 17:53 #2
Har ik lige min privat pc i nærheden, men se på Toolkit.getDefaultToolkit().getScreenSize() for skærmopløsningen.
Assign den til et Dimension-objekt.
Avatar billede magoo20000 Nybegynder
25. september 2002 - 17:53 #3
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
Avatar billede riversen Nybegynder
25. september 2002 - 17:59 #4
hvad med det egentlige spørgsmål...nogen forslag?
Avatar billede magoo20000 Nybegynder
25. september 2002 - 18:19 #5
Jeg skal lige kigge på noget gammelt kode, men jeg er ikke hjemme nu..
Hvad mener du præcis med en grå linje??
Avatar billede riversen Nybegynder
25. september 2002 - 18:30 #6
Avatar billede magoo20000 Nybegynder
25. september 2002 - 18:47 #7
Ja, det ser ikke alt for heldigt ud ;-)
Jeg har ikke svaret nu, men mener at have løst det vha en TableModel.
Avatar billede magoo20000 Nybegynder
25. september 2002 - 19:14 #8
Prøv med følgende - den er dog ikke med vertikal scrollbar, men kan du jo selv lige putte på ;-)

import javax.swing.*;
import javax.swing.table.*;
public class ScrollTable {
        public static void main(String[] args)
                {
                TableModel dataModel =
                        new AbstractTableModel() 
                        { 
                        public int getColumnCount()
                        { return 100; } 
                        public int getRowCount()
                        { return 10;}
                public Object getValueAt(int row, int col)
                { return new Integer(row*col); } 
                        }; 
                  JTable table = new JTable(dataModel); 
                  JScrollPane scrollpane =
                        new JScrollPane(table);
                  scrollpane.setHorizontalScrollBarPolicy(
                        JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
                  // table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
                  JFrame frame = new JFrame();
                  JPanel panel = new JPanel();
                  panel.add(scrollpane);
                  frame.getContentPane().add(panel);
                  frame.setSize(300,300);
                  frame.setVisible(true);
                }
        }
Avatar billede riversen Nybegynder
25. september 2002 - 19:18 #9
det er stadig grådt
Avatar billede riversen Nybegynder
25. september 2002 - 19:18 #10
gråt even
Avatar billede aslan Nybegynder
25. september 2002 - 19:34 #11
scrollPane.getViewport().setBackground(Color.white);
Avatar billede riversen Nybegynder
25. september 2002 - 19:38 #12
lige en sidste ting...sørge for en frame er maksimeret ved åben..hvordan det?

der skal nok ryge flere point af :-)
Avatar billede magoo20000 Nybegynder
25. september 2002 - 19:45 #13
Du kan jo benytte getWidth() og getHeigth() metoderne fra Dimension til at fylde skærmen ud.
Altså sætte skærmen med det de returnerer.
Avatar billede riversen Nybegynder
25. september 2002 - 19:50 #14
magoo: går ud fra du hentyder til dit svar ovenfor...ja, det har jeg leget lidt med, men det fylder hele skærmen...det er jo ikke meningen det skal gå bag toolbaren for neden eller bag ved min icq i højre side fx.
Avatar billede riversen Nybegynder
25. september 2002 - 19:51 #15
Har prøvet Frame.getMaximizedBounds() men det returnerer null

også setState( MAXIMIZED_BOTH )...heller ikke som tænkt
Avatar billede magoo20000 Nybegynder
25. september 2002 - 19:51 #16
Det ved jeg ikke om du kan - java er jo platformsufhængigt og det anhænger det vel af??

HOV!
Faldt over http://java.sun.com/docs/books/tutorial/extra/fullscreen/exclusivemode.html
Avatar billede aslan Nybegynder
25. september 2002 - 19:52 #17
Bare sæt din frame til max så skulle det køre:

        frame.setBounds(0,0,1024,768);
        frame.setResizable(false);
        frame.setVisible(true);
Avatar billede riversen Nybegynder
25. september 2002 - 19:58 #18
aslan: så ryger den bag fx icq og min processlinie for neden
Avatar billede aslan Nybegynder
25. september 2002 - 20:08 #19
Dimension fullWindow = Toolkit.getDefaultToolkit().getScreenSize();
frame.setSize( fullWindow.width, fullWindow.height );
frame.setVisible( true );
Avatar billede riversen Nybegynder
25. september 2002 - 20:09 #20
aslan: Ja, getScreenSize returnere min opløsning og ikke det ledige skærmbillede
Avatar billede riversen Nybegynder
25. september 2002 - 20:12 #21
dvs. det går ikke
Avatar billede aslan Nybegynder
25. september 2002 - 20:15 #22
Hvis du lige gad at forklare dit problem lidt mere tydeligt så kan det være at jeg kigger på det....
Avatar billede riversen Nybegynder
25. september 2002 - 20:17 #23
aslan: den Dimension du får retur indeholder jo 1280 x 1024 i mit tilfælde...altså skærmopløsningen. Hvis jeg giver min frame den størrelse bliver den for stor i forhold til hvad der er for stort. Den går jo ned bag min windows-processlinie nederst i skærmbilledet. Og min icq som jeg har trukket helt ud til højre er også foran min frame...kan du følge mig?
Avatar billede aslan Nybegynder
25. september 2002 - 20:23 #24
Det kan jeg ikke forstå .... for når jeg afprøver metoderne ryger min proceslinie og det hele om bag min frame?
Avatar billede riversen Nybegynder
25. september 2002 - 21:13 #25
Avatar billede riversen Nybegynder
25. september 2002 - 21:13 #26
du kan ikke se den går ned under processlinien men det gør den :-)

mht. icq...det skulle nok være til at se, at det er skjult bag icq

mht. platformsuafhængiheden. Når man trykker på maskimerknappen må der ske nogle ting...det burde vel også være muligt at få disse ting til at ske i konstruktoren
Avatar billede aslan Nybegynder
28. september 2002 - 14:09 #27
Jeg har opdaget at hvis du laver din JFrame om til en JPanel så kan du dække hele skærmen....
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