Avatar billede mungojerrie Nybegynder
04. november 2004 - 08:38 Der er 11 kommentarer og
1 løsning

Lidt problemer med splitpane

Hej

Jeg vil gerne have min customerpanel klasse til at benytte en splitpane til at dele skærmbilledet. Til det formål laver jeg så to JPanels som kommer til at indeholde min klasser med felter og knapper (formpanel). Problemet er at min nederste del af min splitpane ikke bliver særlig høj. Det er min customertable som arver fra jtable og der vises kun 2 linjer og så scrollknapper. Det ændrer sig ikke ved resize. Desuden vil jeg gerne at splitpanen bliver sådan at hvis der resizes, så bliver øverste del (bodyTop) samme størrelse og al ekstra plads gives til nederste del (bodyBottom).

Any good ideas ?


public class CustomerPanel extends JPanel {

private FormPanel formPanel = new FormPanel();
private FormPanel radioPanel = new FormPanel();

//constructor
public CustomerPanel() {
    super(new GridLayout(2,0));
    tableModel = new CustomerTableModel();
    tableView = new CustomerTable(tableModel);
    JScrollPane sp = new JScrollPane();
    sp.add(tableView);
    sp.setViewportView(tableView);
    JPanel bodyTop = new JPanel(new GridLayout(0,2));
    JPanel bodyBottom = new JPanel(new BorderLayout());
    bodyTop.add(formPanel);
    bodyTop.add(radioPanel);
    bodyBottom.add(sp);
    JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, bodyTop, bodyBottom);
    add(splitPane, BorderLayout.CENTER);
}
}
Avatar billede Slettet bruger
04. november 2004 - 08:56 #1
Prøv at se på metoderne setDividerLocation(...)

den tager imod 2 forskellige parametre, en integer der sætter en fast position (i pixels) på hvor splitteren skal vises. Eller en double der sætter en procentvis position hvor splitteren skal vises...

Prøv derfor med

sp.setDividerLocation(0.5); // Burde dele 50/50...
Avatar billede Slettet bruger
04. november 2004 - 08:59 #2
>> Desuden vil jeg gerne at splitpanen bliver sådan at hvis der resizes, så bliver øverste del (bodyTop) samme størrelse og al ekstra plads gives til nederste del (bodyBottom).

Så skal du bruge:

sp.setDividerLocation(200); // så vil splitteren altid være 200 px fra top.
Avatar billede mungojerrie Nybegynder
04. november 2004 - 08:59 #3
du mener vel splitPane.setDividerLocation(0.5)  ??
Avatar billede mungojerrie Nybegynder
04. november 2004 - 09:06 #4
splitPane.setDividerLocation(130) gør tricket med at fiksere pladsen til min bodyTop, men jeg kan stadig trække i baren der deler top og bund. Kan jeg ikke låse den ?
jeg mangler også at fikse bodybottom, så min scrollpane bliver vist i hele bodybottom's område.
Avatar billede Slettet bruger
04. november 2004 - 11:46 #5
Jo, jeg mente "splitpane.setDiv.....",

Prøv at kigge på denne tråd (på Java's forums):

http://forum.java.sun.com/thread.jsp?forum=57&thread=193667

Omtaler hvordan man laver en låsbar Splitpane.
Avatar billede Slettet bruger
04. november 2004 - 13:57 #6
Jeg smider lige et svar, såfremt du kan bruge det ovenstående...
Avatar billede mungojerrie Nybegynder
04. november 2004 - 14:06 #7
ja, det kan jeg da, men jeg kunne godt bruge lidt mere hjælp :-)
kan nemlig ikke forstå hvorfor min customerTable ikke får mere plads i min splitpane. Hvis jeg ikke benytter en splitpane, ser min tabel fin ud, men ikke når den bliver smidt indeni en splitpane. Der bliver ikke sat nogen form for preferred, minimum eller maximum size på nogle af de elementer jeg benytter.
Avatar billede _carsten Nybegynder
04. november 2004 - 21:20 #8
For at låse dit splitpane, brug:    splitpane.setEnabled(false);

Nu har jeg selvfølgelig ikke set hele koden, men er sådan set ikke nogen grund til
at putte dit scrollpane i et panel, for derefter at adde det til dit splitpane, du
kan lige så godt tage den korte vej, så bør din tabel også fylde hele splitpanet ud.
    JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, bodyTop, sp);
Avatar billede mungojerrie Nybegynder
05. november 2004 - 08:41 #9
-> carten: din løsning med at skippe bodyBottom duede desværre ikke......resultatet bliver det samme, hele tablevinduet vises ikke.

Har du andre ideer ?
Avatar billede _carsten Nybegynder
05. november 2004 - 21:19 #10
Sorry - det tog lidt med at svare, har IT mæssigt været nede indtil nu.

Såfremt det ikke løser problemet, ligger "fejlen" et andet sted, måske definerer du en fast størelse på din JTabel etc.

Vender tilbage imorgen.
Avatar billede mungojerrie Nybegynder
09. november 2004 - 11:27 #11
corholio: du får pointene og så lukker jeg spg også selvom problemet ikke blev løst, jeg søger svar andetsteds
Avatar billede mungojerrie Nybegynder
10. november 2004 - 12:30 #12
problemet var bare min constructor, den skal bare kaldes med borderlayout i stedet for....
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