Tips For Success

Having the best tools for document imaging is only half of the equation. Our Tech Tips are designed to provide you with valuable information to help you succeed by achieving faster results with our RasterMaster Imaging and Conversion SDKs or VirtualViewer high-speed document and image viewers. New time-saving tips are added monthly - you can receive them through Imaging News or our Tech Tips RSS feed.

Scrolling Images with Your Keyboard

This Tech Tip appeared in Imaging News December 2004.

In image viewing applications, users often want to be able to scroll an image without their hands leaving the keyboard. Here’s how to extend the RasterMaster imaging SDK scrolling functionality to allow you to scroll from the keyboard:

Your container, which does your image painting, will need to implement the Java KeyListener interface and add the KeyListener in your constructor:

public class SnowFrame extends Frame implements KeyListener

public SnowFrame()

{

addKeyListener(this);

}

You’ll also need to get handles on the scrollbars from RasterMaster since they are internally maintained. Add these class level members:

private Adjustable hsb = null;

private Adjustable vsb = null;

Finally, you’ll need to implement the three methods required by KeyListener. Although, we’ll only use one of them for this task:

public void keyTyped(KeyEvent ke){}

public void keyReleased(KeyEvent ke){}

public void keyPressed(KeyEvent ke){

if(hsb == null || vsb == null){

if(Simage.vsb != null){

vsb = Simage.vsb.getScrollbar();}

else if(Simage.hsb != null){

hsb = Simage.hsb.getScrollbar();}}

if((ke.getKeyCode() == ke.VK_UP) && vsb!=null){

vsb.setValue(vsb.getValue() - Simage.getHeight() / 20);

AdjustmentEvent e = new AdjustmentEvent(vsb,

AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED,

AdjustmentEvent.UNIT_INCREMENT, 10);

((AdjustmentListener)(Simage.vsb)).adjustmentValueChanged(e);}

 

else if((ke.getKeyCode() == ke.VK_DOWN) && vsb!=null){

vsb.setValue(vsb.getValue() + Simage.getHeight() / 20);

vsb.setValue(vsb.getValue() + 10);

AdjustmentEvent e = new AdjustmentEvent(vsb,

AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED,

AdjustmentEvent.UNIT_DECREMENT, 10);

((AdjustmentListener)(Simage.vsb)).adjustmentValueChanged(e);}

}//end method

The keyPressed method checks that the scrollbars are not null and fires the necessary adjustment events to perform scrolling. You should also update your zooming code to reset vsb and hsb to null when zoom = 0. You could also extend this functionality to horizontal scrolling as well, by handle the VK_RIGHT and VK_LEFT KeyCodes.

Learn More
In addition to our Tech Tips section, our document and image Solutions Section provides business application  and industry-specific examples.