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 + -
显示快捷键?