04. november 2004 - 08:38Der 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); } }
For første gang: Computerworld præsenterer stærkt program for Platform X
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...
Synes godt om
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.
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.
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.
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);
problemet var bare min constructor, den skal bare kaldes med borderlayout i stedet for....
Synes godt om
Ny brugerNybegynder
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.