as your scenario is for the text scroll bar
we will have to create a new code for the jpg image
I think
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class MyWorld here. * * @author (your name) * @version (a version number or a date) */ public class ScrollBarV01 extends World { int scroll = 0; int loY, hiY, range; int pixelHeight, maxScroll; Actor page, handle; public ScrollBarV01() { super(900, 600, 1, false); GreenfootImage image = new GreenfootImage("galaxy-stars02.jpg"); pixelHeight = image.getHeight(); GreenfootImage pane = new GreenfootImage(900, pixelHeight); maxScroll = (pane.getHeight()-600)/pixelHeight; if (maxScroll < 0) maxScroll = 0; page = new Actor() {}; page.setImage(pane); addObject(page, 450, Math.min(pane.getHeight()/2, 300+page.getImage().getHeight()/2)); int handleHeight = 600*600/pane.getHeight(); if (handleHeight >= 600) return; GreenfootImage hImg = new GreenfootImage(16, handleHeight); hImg.setColor(Color.GRAY); hImg.fill(); loY = hImg.getHeight()/2; hiY = 600-hImg.getHeight()/2; range = hiY-loY; GreenfootImage sbImg = new GreenfootImage(20, 600); sbImg.setColor(Color.LIGHT_GRAY); sbImg.fill(); sbImg.setColor(Color.DARK_GRAY); sbImg.drawRect(2, 2, 16, 596); getBackground().drawImage(sbImg, 879, 0); handle = new Actor() { public void act() { if (Greenfoot.mouseDragged(this)) setLocation(getX(), Greenfoot.getMouseInfo().getY()); if (Greenfoot.isKeyDown("up")) setLocation(getX(), getY()-1); if (Greenfoot.isKeyDown("down")) setLocation(getX(), getY()+1); if (getY() < loY) setLocation(getX(), loY); if (getY() > hiY) setLocation(getX(), hiY); int ds = maxScroll*(getY()-loY)/range-scroll; page.setLocation(page.getX(), page.getY()-ds*pixelHeight); scroll += ds; } }; handle.setImage(hImg); addObject(handle, 890, loY); } }
public ScrollBarV01() { super(900, 600, 1, false); GreenfootImage pane= new GreenfootImage("galaxy-stars02.jpg"); maxScroll = (pane.getHeight()-600); if (maxScroll < 0) maxScroll = 0; page = new Actor() {}; page.setImage(pane); addObject(page, 450, Math.min(pane.getHeight()/2, 300+page.getImage().getHeight()/2)); int handleHeight = 600*600/pane.getHeight(); if (handleHeight >= 600) return; GreenfootImage hImg = new GreenfootImage(16, handleHeight); hImg.setColor(Color.GRAY); hImg.fill(); loY = hImg.getHeight()/2; hiY = 600-hImg.getHeight()/2; range = hiY-loY; GreenfootImage sbImg = new GreenfootImage(20, 600); sbImg.setColor(Color.LIGHT_GRAY); sbImg.fill(); sbImg.setColor(Color.DARK_GRAY); sbImg.drawRect(2, 2, 16, 596); getBackground().drawImage(sbImg, 879, 0); handle = new Actor() { public void act() { if (Greenfoot.mouseDragged(this)) setLocation(getX(), Greenfoot.getMouseInfo().getY()); if (Greenfoot.isKeyDown("up")) setLocation(getX(), getY()-1); if (Greenfoot.isKeyDown("down")) setLocation(getX(), getY()+1); if (getY() < loY) setLocation(getX(), loY); if (getY() > hiY) setLocation(getX(), hiY); int ds = maxScroll*(getY()-loY)/range-scroll; page.setLocation(page.getX(), page.getY()-ds); scroll += ds; } }; handle.setImage(hImg); addObject(handle, 890, loY); }