Avatar billede torving Nybegynder
14. januar 2004 - 16:15 Der er 18 kommentarer og
1 løsning

JScrollPane og JPanel

Jeg har et JPanel som indeholder forskellige lister og knapper problemet er nu at panelets height kan blive for stor til at det kan vises i den JFrame som indeholder panelet. Jeg ønsker gerne at kunne pakke panelet ind i et scrollpane som så automatisk sætter en vertikal scroller på når f.eks en liste er blevet for lang og egentlig går ud over framens størrelse...
Jeg har forsøgt men uden resultat. Kan godt pakke panelet ind i et scrollpane og få vist den scrollbar men den kan ikke justeres, virker som om den ikke er klar over at hele panelet ikke bliver vist... Nogen forslag



MVH
argo
Avatar billede mikkelbm Nybegynder
14. januar 2004 - 16:27 #1
Bare en idé...
Hvad med at pakke dine lister ind i JScrollPane.

Det ville jeg da mene var mere naturligt.

Og så skal jeg lige være helt med på hvad du mener med:

'...den kan ikke justeres, virker som om den ikke er klar over at hele panelet ikke bliver vist...'

Eller også må vi se lidt kode, for at se om du laver nogle fejl...
Avatar billede torving Nybegynder
14. januar 2004 - 17:05 #2
Min frame er defineret til at have en fast størrelse. Men det er panelerne ikke. Så dvs. det panel som indeholder de forskellige lister som alle er pakket ind i scrollpanes bliver større end den frame hvori det vises. Nu vil jeg så gerne have pakket panelet ind i et jscrollPane placeret på framens contentpane således at jeg ikke skal begrænse mine lister ydreligere i højden, men så man kan scrolle hele panelet inde i framen. Og derved kunne se alle de komponenter som panelet indeholder.

Håber det gav bedre indblik.. Sorry for min måde at beskrive det på...
Avatar billede mikkelbm Nybegynder
14. januar 2004 - 19:02 #3
Her er et lille eksempel hvor jeg har et JPanel med nogle JList'er i.
Det ligger jeg i et JScrollPane og det virker efter hensigten.

Hvis det ikke er det du leder efter, er jeg stadig ikke helt med ):

import javax.swing.*;
import java.awt.*;

public class Test extends JFrame
{
    private JList list1;
    private JList list2;
   
    private DefaultListModel listModel1 = new DefaultListModel();
    private DefaultListModel listModel2 = new DefaultListModel();
   
    public Test()
    {
        setSize(300, 300);
       
        list1 = new JList(listModel1);
        list2 = new JList(listModel2);
       
        for (int i = 0; i<50; i++)
        {
            listModel1.addElement("Test " + i);
            listModel2.addElement("Test " + i);   
        }
       
        JPanel panel = new JPanel();
        panel.setPreferredSize(new Dimension(300, 400));
        panel.add(list1);
        panel.add(list2);
       
        JScrollPane scroller = new JScrollPane(panel);
       
        this.getContentPane().add(scroller, BorderLayout.CENTER);
    }   
   
    public static void main(String[] args)
    {
        new Test().show();
    }
}
Avatar billede mikkelbm Nybegynder
14. januar 2004 - 19:22 #4
Nu har jeg godt nok sat en fast størrelse på mit JPanel, men det er blot for at fremtvinge en scrollbar.
Avatar billede mikkelbm Nybegynder
14. januar 2004 - 19:23 #5
Denne linje skal egentlig bare fjernes:

panel.setPreferredSize(new Dimension(300, 400));
Avatar billede torving Nybegynder
14. januar 2004 - 21:23 #6
Kom med et svar så skal du få dine points.. Jeg har fundet ud af det.. Men tak for din hjælp....Blev nød til at fastsætte størrelsen. Og så virkede det alligevel..
Avatar billede mikkelbm Nybegynder
14. januar 2004 - 21:26 #7
Ok.
Avatar billede dannyb Nybegynder
17. januar 2004 - 12:04 #8
Jeg har et problem/en opgave i samme boldgade:

Jeg skal have en selectboks.
Når den rulles ud skal den ikke fylde hele skærmens højde.
jeg kan sætte en size="5" på, men det er så ufikst.
Hvad gør jeg??

->Jeg har ingen forstand på java, så det skal skæres ud i pap!
  Min boks:
<head>
<script type="text/javascript">
function go1(){
if
(document.selecter1.select1.options[document.selecter1.select1.selectedIndex].value
!= "none") {
location =
document.selecter1.select1.options[document.selecter1.select1.selectedIndex].value
}
}
</script>
</head>
<body>
<form name="selecter1">
<select name="select1" size=1>
<option value=none>SIDER
<option value="side_1.hrm">Side 1
<option value=none>FLERE SIDER
<option value="side_2.htm">Side 2
</select>
<input type="button" value="Gå" onclick="go1()">
</form>
</script>
Avatar billede arne_v Ekspert
17. januar 2004 - 12:05 #9
Det ligner JavaScript og ikke Java.
Avatar billede dannyb Nybegynder
17. januar 2004 - 12:07 #10
Okay!?
Så skal jeg over i en anden gruppe, og spørge der?
Avatar billede arne_v Ekspert
17. januar 2004 - 12:08 #11
Avatar billede dannyb Nybegynder
17. januar 2004 - 12:09 #12
takker
Avatar billede mikkelbm Nybegynder
21. januar 2004 - 23:10 #13
Lukketid???
Avatar billede mikkelbm Nybegynder
14. februar 2004 - 21:59 #14
?
Avatar billede mikkelbm Nybegynder
01. marts 2004 - 10:15 #15
???
Avatar billede mikkelbm Nybegynder
18. april 2004 - 10:26 #16
????
Avatar billede peterdelphi Nybegynder
12. februar 2005 - 15:43 #17
Har du prøvet at sætte et layout på det panel??

JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(300, 400)); //ved ikke om denne linie skal udkommenteres...

panel.setLayout(new BorderLayout());
panel.add(list1, BorderLayout.NORTH);
panel.add(list2, BorderLayout.CENTER);
Avatar billede mikkelbm Nybegynder
12. februar 2005 - 17:28 #18
>> peterdelphi

Du er lige 10 måneder for sent på den :)
Avatar billede torving Nybegynder
22. marts 2005 - 14:48 #19
Damn jeg havde glemt alt om denne post.. Sorry.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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