Avatar billede pejtiry Nybegynder
04. december 2002 - 09:39 Der er 5 kommentarer og
1 løsning

Scrollbars i JScrollPane

Jeg forsøger at lægge elementer (knapper) i et JScrollPane. Jeg lægger dem i bundter af 5. Til det brug har jeg anbragt dem i JPanel's. Når alle knapper ikke kan ses, vil jeg have scrollbars. Men uanset om det indlagte, bliver tilføjet som: jScrollPane1.add(JButton knap) eller jScrollPane1.setViewportView kommer der ingen scrollbars. Hvis jeg bruger setViewportView, kan jeg kun se en række (et view af gangen), hvis jeg bruger add, kan jeg kun se knapperne når jeg har ført musen over dem. Altså bruger jeg ikke JScrollPane korrekt. Nogen der kan hjælpe?
Avatar billede pejtiry Nybegynder
04. december 2002 - 09:42 #1
Sorry

"bliver tilføjet som: jScrollPane1.add(JButton knap)"

Skulle have været jScrollPane1.add(currentPanel);// private JPanel currentPanel
Avatar billede carstenknudsen Nybegynder
04. december 2002 - 09:56 #2
Du skal ikke add'e knapperne til JScrollPane'n, men
til dit store JPanel eller hvad du nu har der
indeholder alle knapperne. Dernæst skal du proppe
det JPanel i JScrollPane'n. Endelig skal JScrollPane'n
smides ind hvor den nu skal ind.
Nogenlunde som her:
JPanel p = new JPanel(Box.createVerticalBox());
p.add(new JButton("1"));
p.add(new JButton("2"));
p.add(new JButton("3"));
JScrollPane pane = new JScrollPane( p );
JFrame f = ..;
f.add( pane );
Avatar billede carstenknudsen Nybegynder
04. december 2002 - 09:58 #3
Oops, du har korrigeret dit spørgsmål.
Avatar billede pejtiry Nybegynder
04. december 2002 - 10:22 #4
Rettelsen skal ikke forstås som at problemet er løst. Det var bare en præcisering.
Jeg får stadig ingen scrollbars.
Jeg ønsker at tilføje rækker af knapper. Knapperne er til at gætte med, når man trykker får man en multibel choice frame at se. Når man har foretaget et gæt bliver knappens titel opdateret med valget og svarets point opgives (skal være en frame ved siden af, men dertil er jeg ikke kommet endnu). Nu tilføjes en ny linie knapper, samtidigt med at den gamle line deaktiveres, men stadig skal være synlig, da valgene jo er påført knapperne. Dette gentages indtil der er gættet rigtigt, i den rette kombination på de 5 knapper. Jeg kan ikke få plads til alle rækker, bl.a. fordi jeg ikke ved hvor mange gæt der skal til. Jeg ønsker derfor at kunne spole op eller ned i de foregående svar, når der ikke er plads til flere rækker.
Avatar billede carstenknudsen Nybegynder
04. december 2002 - 10:31 #5
Prøv denne kode, den bruger godt nok ikke JPanels
men i stedet Box. Hjælper det?
import javax.swing.*;
public class Knapper {
    public static void main( String[] args ) {
    java.util.Random random = new java.util.Random();
    JFrame f = new JFrame();
    JPanel panel = new JPanel();
    Box box = Box.createVerticalBox();
    for (int i = 0; i < 5; i++) {
        Box b = Box.createVerticalBox();
        for (int j = 0; j < 5; j++) {
        b.add( new JButton(""+random.nextInt()) );
        }
        box.add( b );
    }
    f.getContentPane().add(new JScrollPane(box));
    f.setSize(100,300);
    f.show();
    }
}
Avatar billede pejtiry Nybegynder
04. december 2002 - 22:20 #6
Ok, det er prøvet. Det virker sådan set, men det mærkelige er at hvis jeg sætter en knap til at aktivere samme kode, får ScrolPane ikke noget indhold:
        // dette virker
        public topFrame() {
        initComponents ();
        pack ();
        java.util.Random random = new java.util.Random();     
        Box b = Box.createHorizontalBox();
        for (int j = 0; j < 5; j++) {
        b.add( new JButton(""+random.nextInt()) );
        }
        box.add( b );
        getContentPane().add(s);
        s.setBounds(10,25,100,150);
        this.setSize(300,300);

// dette virker ikke
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        java.util.Random random = new java.util.Random();     
        Box b = Box.createHorizontalBox();
        for (int j = 0; j < 5; j++) {
        b.add( new JButton(""+random.nextInt()) );
        }
        box.add( b );
        getContentPane().add(s);
        s.setBounds(10,25,100,150);
        this.setSize(300,300);
}

Og da jeg har brug for at ændre indholdet når der trykkes (submittes) har jeg et problem.
Jeg bruger absolut layout, men jeg ved ikke om det har betydning. Jeg synes heller ikke jeg kunne få indholdet dynamisk opdateret i et andet layout.
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