Archief - [Java] Swing: JPanel in JScrollPane

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

X1RON

Legacy Member
Hallo allemaal!
Ik zoek naar een manier om een JPanel in een JScrollPane te stoppen, en vervolgens via een JPaintComponent op de JPanel te tekenen.

Voorlopig heb ik de volgende code gebruikt om de JPanel (view) in de JScrollPane (scrollen) te stoppen:

Code:
JScrollPane scrollen = new JScrollPane(view, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollen.setPreferredSize(new Dimension(40, 200));
scrollen.getViewport().setOpaque(true);
add(scrollen, BorderLayout.SOUTH);

Wanneer ik echter een view.repaint() doe in mijn JPaintComponent wordt er getekend onder die JScrollPane, dus ik ga ervan uit dat de JPanel "view" niet in de scrollpane zit.

Is er iemand die kan zeggen wat ik mis doe? :)

MilM

Legacy Member
Wat is JPaintComponent?

Wat bedoel je met tekenen?
Bedoel je bijvoorbeeld het tekenen van een cirkel via Graphics?
Of bedoel je gewoon de componenten zelf zoals een JButton?

X1RON

Legacy Member
Ik bedoel het tekenen van cirkels etc via Graphics, MilM.
En ja NeverwinterX, het gaat om die methode. Ik snap alleen niet wat je bedoelt met het overriden.. het is mijn bedoeling om te tekenen op de JPanel of JScrollPanel, zodat deze groter kan zijn dan het hoofdpaneel kan zijn.

Kheb eventjes een schetsje gemaakt zodat het duidelijker is:
http://imgur.com/fwYdl.png

NeverwinterX

Legacy Member
X1RON zei:
Ik bedoel het tekenen van cirkels etc via Graphics, MilM.
En ja NeverwinterX, het gaat om die methode. Ik snap alleen niet wat je bedoelt met het overriden.. het is mijn bedoeling om te tekenen op de JPanel of JScrollPanel, zodat deze groter kan zijn dan het hoofdpaneel kan zijn.

Kheb eventjes een schetsje gemaakt zodat het duidelijker is:
http://imgur.com/fwYdl.png

Dergelijke dingen worden meestal zo gedaan: Lesson: Performing Custom Painting (The Java™ Tutorials > Creating a GUI With JFC/Swing)

Even het cruciale uit die tutorial aanhalen:
Code:
class MyPanel extends JPanel {

   ...somestuff...

    public void paintComponent(Graphics g) {
        super.paintComponent(g);       

        // Draw Text
        g.drawString("This is my custom Panel!",10,20);
    }  
}
Je extend dus de JPanel klasse en override de paintComponent methode, roept de oorspronkelijke super op en vervolgens teken je je eigen dingen zoals cirkels met behulp van de graphics g (zoals de drawString)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan