ruler.java

来自「用Java开发的、实现类似Visio功能的应用程序源码」· Java 代码 · 共 139 行

JAVA
139
字号
/**
 *    $Id:Ruler.java $
 *
 *    Copyright 2004 ~ 2005  JingFei International Cooperation LTD. All rights reserved. *
 */
package com.jfimagine.jfdraw.gui;
 
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.Font;
import java.awt.Color;

import java.awt.geom.AffineTransform;

import javax.swing.JComponent;
import javax.swing.Scrollable;
import javax.swing.SwingConstants;

import com.jfimagine.jfgraph.geom.Angle;
import com.jfimagine.jfgraph.shape.decorate.JFPageFormat;
import com.jfimagine.jfgraph.shape.union.JFPage;
import com.jfimagine.jfgraph.shape.base.ShapeConst;
import com.jfimagine.utils.commonutil.CommonUtil;  
import com.jfimagine.jfgraph.shape.decorate.JFRuler;


 /**
 * Ruler class. Horizontal or vertical rules for drawing measurement.
 *
 * @author     CookieMaker    
 *
 * @version $Revision: 1.1.1 $
 */ 
public class Ruler extends JComponent{
	
    /** A JFRuler object to manage ruler drawing*/
    private JFRuler m_ruler	=new JFRuler();

    /** A page reference .*/
    private JFPage m_page; 
	
     /**
      *  Constructors
      *  @param o Orientation of this ruler.
      *  @param m True if is Metric, false english.
      */	
    public Ruler(int o, boolean m) {
    	m_ruler.setOrientation(o);
    	m_ruler.setIsMetric(m);
    }

    public void setIsMetric(boolean isMetric) {
    	m_ruler.setIsMetric(isMetric);
        repaint();
    }

    public boolean isMetric() {
        return m_ruler.isMetric();
    }

    public int getOrientation() {
        return m_ruler.getOrientation();
    }

    public void setPreferredHeight(int ph) {
    	m_ruler.setHeight(ph);
    	setZoomScale(m_ruler.getZoomScale());
    }

    public void setPreferredWidth(int pw) {
    	m_ruler.setWidth(pw);
    	setZoomScale(m_ruler.getZoomScale());
    }

    public int getIncrement() {
    	return m_ruler.getIncrement();
    }

    public double getIncrementDouble() {
    	return m_ruler.getIncrementDouble();
    }

    /** get zoom scale
     *  @return the zoom scale
     */	
    public double getZoomScale(){
    	return m_ruler.getZoomScale();
    }

    /** set zoom scale
     *  @param zoomScale A new zoom scale.
     */	
    public void setZoomScale(double zoomScale){
    	m_ruler.setZoomScale(zoomScale);

    	Dimension d;
    	switch (m_ruler.getOrientation()){
    		case JFRuler.HORIZONTAL:
			int width	=(int)(m_ruler.getWidth() * zoomScale);
			d		=new Dimension(width,JFRuler.SIZE);
			setPreferredSize(d);
			setSize(d);
			break;
			    			
    		case JFRuler.VERTICAL:
			int height	=(int)(m_ruler.getHeight() * zoomScale);
			d		=new Dimension(JFRuler.SIZE,height);
			setPreferredSize(d);
			setSize(d);
			break;
    	}
    	repaint();
    }


    /** set draw page here to get scale parameters for a reference to draw a 'scaled' ruler.
     *  @param page A JFPage reference.
     */
    public void  setDrawPage(JFPage page){
    	m_page	=page;
    	if (page!=null){
    		m_ruler.setScale(page.getScaleValue(),page.getScaleUnit(),page.getScreenUnit());
    	}
    }


    protected void paintComponent(Graphics g) {
    	//sometimes a page would be modified outside, so here we reset this draw page.
    	setDrawPage(m_page);
    	//draw ruler.
    	m_ruler.draw(g,getBackground(),Color.black,true);
    }

    
    
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?