Java Tutorial/Swing/JViewport

Материал из Java эксперт
Перейти к: навигация, поиск

Customizing a JViewport Look and Feel

Property StringObject TypeViewport.backgroundColorViewport.fontFontViewport.foregroundColorViewportUIString


Keyboard Movement Control in a JViewport

   <source lang="java">

import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Point; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ActionMap; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.InputMap; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JViewport; import javax.swing.KeyStroke; public class MoveViewSample {

 public static final int INCREASE = 0; // direction
 public static final int DECREASE = 1; // direction
 public static final int X_AXIS = 0; // axis
 public static final int Y_AXIS = 1; // axis
 public static final int UNIT = 0; // type
 public static final int BLOCK = 1; // type
 static class MoveAction extends AbstractAction {
   JViewport viewport;
   int direction;
   int axis;
   int type;
   public MoveAction(JViewport viewport, int direction, int axis, int type) {
     if (viewport == null) {
       throw new IllegalArgumentException("null viewport not permitted");
     }
     this.viewport = viewport;
     this.direction = direction;
     this.axis = axis;
     this.type = type;
   }
   public void actionPerformed(ActionEvent actionEvent) {
     Dimension extentSize = viewport.getExtentSize();
     int horizontalMoveSize = 0;
     int verticalMoveSize = 0;
     if (axis == X_AXIS) {
       if (type == UNIT) {
         horizontalMoveSize = 1;
       } else { // type == BLOCK
         horizontalMoveSize = extentSize.width;
       }
     } else { // axis == Y_AXIS
       if (type == UNIT) {
         verticalMoveSize = 1;
       } else { // type == BLOCK
         verticalMoveSize = extentSize.height;
       }
     }
     if (direction == DECREASE) {
       horizontalMoveSize = -horizontalMoveSize;
       verticalMoveSize = -verticalMoveSize;
     }
     // Translate origin by some amount
     Point origin = viewport.getViewPosition();
     origin.x += horizontalMoveSize;
     origin.y += verticalMoveSize;
     // Set new viewing origin
     viewport.setViewPosition(origin);
   }
 }
 public static void main(String args[]) {
   JFrame frame = new JFrame("JViewport Sample");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   Icon icon = new ImageIcon("yourFile.gif");
   JLabel dogLabel = new JLabel(icon);
   JViewport viewport = new JViewport();
   viewport.setView(dogLabel);
   InputMap inputMap = viewport.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
   ActionMap actionMap = viewport.getActionMap();
   Action upKeyAction = new MoveAction(viewport, DECREASE, Y_AXIS, UNIT);
   KeyStroke upKey = KeyStroke.getKeyStroke("UP");
   inputMap.put(upKey, "up");
   actionMap.put("up", upKeyAction);
   Action downKeyAction = new MoveAction(viewport, INCREASE, Y_AXIS, UNIT);
   KeyStroke downKey = KeyStroke.getKeyStroke("DOWN");
   inputMap.put(downKey, "down");
   actionMap.put("down", downKeyAction);
   Action leftKeyAction = new MoveAction(viewport, DECREASE, X_AXIS, UNIT);
   KeyStroke leftKey = KeyStroke.getKeyStroke("LEFT");
   inputMap.put(leftKey, "left");
   actionMap.put("left", leftKeyAction);
   Action rightKeyAction = new MoveAction(viewport, INCREASE, X_AXIS, UNIT);
   KeyStroke rightKey = KeyStroke.getKeyStroke("RIGHT");
   inputMap.put(rightKey, "right");
   actionMap.put("right", rightKeyAction);
   Action pgUpKeyAction = new MoveAction(viewport, DECREASE, Y_AXIS, BLOCK);
   KeyStroke pgUpKey = KeyStroke.getKeyStroke("PAGE_UP");
   inputMap.put(pgUpKey, "pgUp");
   actionMap.put("pgUp", pgUpKeyAction);
   Action pgDnKeyAction = new MoveAction(viewport, INCREASE, Y_AXIS, BLOCK);
   KeyStroke pgDnKey = KeyStroke.getKeyStroke("PAGE_DOWN");
   inputMap.put(pgDnKey, "pgDn");
   actionMap.put("pgDn", pgDnKeyAction);
   Action shiftPgUpKeyAction = new MoveAction(viewport, DECREASE, X_AXIS, BLOCK);
   KeyStroke shiftPgUpKey = KeyStroke.getKeyStroke("shift PAGE_UP");
   inputMap.put(shiftPgUpKey, "shiftPgUp");
   actionMap.put("shiftPgUp", shiftPgUpKeyAction);
   Action shiftPgDnKeyAction = new MoveAction(viewport, INCREASE, X_AXIS, BLOCK);
   KeyStroke shiftPgDnKey = KeyStroke.getKeyStroke("shift PAGE_DOWN");
   inputMap.put(shiftPgDnKey, "shiftPgDn");
   actionMap.put("shiftPgDn", shiftPgDnKeyAction);
   frame.add(viewport, BorderLayout.CENTER);
   frame.setSize(300, 200);
   frame.setVisible(true);
 }

}</source>