04. december 2002 - 09:39Der 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?
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 );
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.
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(); } }
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.
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.