⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dextractor.java

📁 Please read your package and describe it at least 40 bytes. System will automatically delete the di
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// The class that handles the main data extraction window, plus a// few helper classes//// Copyright (c) 2000, 2004 Markus Demleitner//  This program is free software; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation; either version 2 of the License, or// (at your option) any later version.//// This program is distributed in the hope that it will be useful,//  but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA//// tabsize=2import java.awt.*;import java.awt.event.*;import java.util.*;// The text fields (and the log box) to specify beginning and and// of one gauge -- may be either horizontal or vertical.class GaugeGauge extends Panel	implements TextListener{		TextField start, end;	int naturalx=0, naturaly=0;	boolean vertical;	GridBagLayout layout = new GridBagLayout();	Checkbox islog;	DExtractor parent;	static final long serialVersionUID=20060308L;	private class NumOnly extends KeyAdapter	{			public void keyPressed(KeyEvent e)		{				char c=e.getKeyChar();					if (c>=' ')				if (!((c>='0'&&c<='9')||c=='-'||c=='+'||c=='e'||c=='.'||c=='E'))					e.consume();		}	}	GaugeGauge(String variable, Color bgcolor, boolean vertical,		DExtractor parent)	{			GridBagConstraints c = new GridBagConstraints();		Label lab;		String labels[] = {"0", "1"};		int labelalign;		TextField nf;		this.vertical = vertical;		this.parent = parent;		setForeground(bgcolor);		setLayout(layout);		start = new TextField("", 8);		end = new TextField("", 8);		islog = new Checkbox("log", false);		if (vertical) {				String tmp;			tmp = labels[0];			labels[0] = labels[1];			labels[1] = tmp;			c.fill = GridBagConstraints.BOTH;			c.gridwidth = GridBagConstraints.REMAINDER;			labelalign = Label.LEFT;		}		else {				c.fill = GridBagConstraints.HORIZONTAL;			labelalign = Label.RIGHT;		}			c.weighty = 0.5;		c.weightx = 0;		lab = new Label(variable+labels[0], labelalign);		layout.setConstraints(lab, c);		add(lab);		c.weightx = 0.5;		c.weighty = 0.5;		if (vertical)			nf = end;		else			nf = start;		layout.setConstraints(nf, c);		add(nf);		nf.addKeyListener(new NumOnly());		nf.addTextListener(this);		int oldfill = c.fill;		c.fill = GridBagConstraints.NONE;		layout.setConstraints(islog, c);		add(islog);		c.fill = oldfill;		lab = new Label(variable+labels[1], labelalign);		c.weightx = 0;		c.weighty = 0.5;		layout.setConstraints(lab, c);		add(lab);		c.weightx = 0.5;		c.weighty = 0.5;		if (vertical)			nf = start;		else			nf = end;		layout.setConstraints(nf, c);		add(nf);		nf.addKeyListener(new NumOnly());		nf.addTextListener(this);	}	public double getstart()	{		return new Double(this.start.getText()).doubleValue();	}	public double getend()	{		return new Double(this.end.getText()).doubleValue();	}	public int computeUsefulSignificantDigits()	{		try {			return Math.max(4, 				(int)Math.round(-Math.log(					Math.abs(this.getend()-this.getstart())/this.getstart())/2.3				+4));		} catch (NumberFormatException e) {			return 4;		}	}	public boolean isLogAxis()	{			return islog.getState();	}	public Dimension getPreferredSize()	{		return layout.preferredLayoutSize((Container)this);	}	public Dimension getMinimumSize()	{			return getPreferredSize();	}	public void textValueChanged(TextEvent ev)	{			try {			this.parent.computeTransform();		} catch (CantComputeException e) {		}	}}// This handles the window in which most of the work gets done.// Clearly, this should be split into at least three subclasses.public class DExtractor extends Frame	implements ActionListener, ComponentListener{ 	class Steeringstuff extends Panel	{			int numbut;		Button buttons[];		static final long serialVersionUID=20060308L;		// a container for some buttons, mainly here because I believe I am		// too dumb for the awt layout managers		Steeringstuff(Button buttons_p[], int numbut_p, ActionListener l)		{				int i;			numbut = numbut_p;			buttons = buttons_p;			setLayout(new GridLayout(numbut, 1));			for (i=0; i<numbut; i++) {					add(buttons[i]);				buttons[i].addActionListener(l);			}		}	}	ImageWithPoints imzone;	ImageGetter imageGetter;	DataDeliverer dataDeliverer;	GaugeGauge hgg, vgg;	MainServices myparent;	Color hcolor, vcolor;	boolean recogniserRunning = false;	boolean statusLocked = false;	Vector<Component> criticalComponents = new Vector<Component>();	Vector<MenuItem> criticalMenuItems = new Vector<MenuItem>();	TextArea results;	Steeringstuff apanel;	MagGlass magGlass;	ScrollPane scrollp = new ScrollPane(ScrollPane.SCROLLBARS_ALWAYS);	Panel helppanel = new Panel();	Label rulerLabel;	TextField fnamefield;	MenuItem stopRecogniserItem;	RecogniserSettings recSettings=new RecogniserSettings();	Rectangle bbox;	String datasetName;	String targetFName;	int scale=3;	static final long serialVersionUID = 20060308L;	AffineTrafo transformation = null;		// Todo: give DExtractor a seperate config class.	// sourcebib, sourcepage, xAxisColor and yAxisColor should be	// in there, I guess.  Possibly quite a few more...	DExtractor(MainServices parent, Rectangle bbox, String sourcebib,		String sourcepage, ImageGetter imageGetter,		DataDeliverer dataDeliverer, Color xAxisColor, Color yAxisColor,		int defaultScale)	{		this.datasetName = "# Graph from "+sourcebib+", page "+sourcepage;		this.targetFName = sourcebib+"."+sourcepage;		this.imageGetter = imageGetter;		this.myparent = parent;		this.bbox = bbox;		this.dataDeliverer = dataDeliverer;		this.hcolor = xAxisColor;		this.vcolor = yAxisColor;		this.scale = defaultScale;		this.addComponentListener(this);		addWindowListener(new WindowAdapter() { 			public void windowClosing(WindowEvent event) 			{ 				closeWin();      }    });		makeDialog();		makeMenu();		this.imzone.setImage(imageGetter.getImage(this.scale, bbox));	}	DExtractor(MainServices parent, Rectangle bbox, String sourcebib,		String sourcepage, ImageGetter imageGetter,		DataDeliverer dataDeliverer, Color xAxisColor, Color yAxisColor)	{		this(parent, bbox, sourcebib, sourcepage, imageGetter,			dataDeliverer, xAxisColor, yAxisColor, 3);	}	DExtractor(MainServices parent, Rectangle bbox, String sourcebib,		String sourcepage, ImageGetter imageGetter,		DataDeliverer dataDeliverer)	{		this(parent, bbox, sourcebib, sourcepage, imageGetter,			dataDeliverer, new Color(255, 0, 0), new Color(0, 0, 255), 3);	}	protected void makeMenu()	{			MenuBar mb;		MenuItem m;		mb = new MenuBar();		setMenuBar(mb);		Menu fileMenu = new Menu("File");		mb.add(fileMenu);		m = new MenuItem("Show Data");		fileMenu.add(m);		this.criticalMenuItems.addElement(m);		m = new MenuItem("Send Data");		fileMenu.add(m);		this.criticalMenuItems.addElement(m);		m = new MenuItem("Save Data");		fileMenu.add(m);		this.criticalMenuItems.addElement(m);		fileMenu.addSeparator();		m = new MenuItem("Close");		m.setShortcut(new MenuShortcut(KeyEvent.VK_W, false));		m.setActionCommand("Close");		fileMenu.add(m);		fileMenu.addActionListener(this);		Menu zoomMenu = new Menu("Zoom");		mb.add(zoomMenu);		m = new MenuItem("600 dpi");		zoomMenu.add(m);		this.criticalMenuItems.addElement(m);		m = new MenuItem("300 dpi");		zoomMenu.add(m);		this.criticalMenuItems.addElement(m);		m = new MenuItem("200 dpi");		zoomMenu.add(m);		this.criticalMenuItems.addElement(m);		m = new MenuItem("100 dpi");		zoomMenu.add(m);		this.criticalMenuItems.addElement(m);		m = new MenuItem("75 dpi");		zoomMenu.add(m);		this.criticalMenuItems.addElement(m);		zoomMenu.addActionListener(this);		Menu recMenu = new Menu("Recognize");		mb.add(recMenu);		m = new MenuItem("Trace a Line");		m.setShortcut(new MenuShortcut(KeyEvent.VK_T, false));		m.setActionCommand("Trace a Line");		recMenu.add(m);		this.criticalMenuItems.addElement(m);		m = new MenuItem("Find Points");		m.setShortcut(new MenuShortcut(KeyEvent.VK_B, false));		m.setActionCommand("Find Points");		recMenu.add(m);		this.criticalMenuItems.addElement(m);		m = new MenuItem("Automatic Axes");		m.setShortcut(new MenuShortcut(KeyEvent.VK_A, false));		m.setActionCommand("Automatic Axes");		recMenu.add(m);		this.criticalMenuItems.addElement(m);		recMenu.addSeparator();		m = new MenuItem("Recognizer Settings");		m.setShortcut(new MenuShortcut(KeyEvent.VK_S, false));		m.setActionCommand("Recognizer Settings");		recMenu.add(m);		stopRecogniserItem = new MenuItem("Stop Recognizer");		recMenu.add(stopRecogniserItem);		stopRecogniserItem.setEnabled(false);		recMenu.addSeparator();		recMenu.add(new MenuItem("Delete all Points"));		recMenu.addActionListener(this);		Menu helpMenu = new Menu("Help");		mb.setHelpMenu(helpMenu);		helpMenu.add(new MenuItem("About Dexter"));		helpMenu.add(new MenuItem("Help"));		helpMenu.addActionListener(this);	}			protected void makeDialog()	{			GridBagLayout layout = new GridBagLayout();		GridBagConstraints c = new GridBagConstraints();		Button actbuts[] = {				new Button("Help"),			new Button("Show Data"),			new Button("Send Data"),			new Button("Save Data"),			new Button("Close"),		};		this.criticalComponents.addElement(actbuts[1]);		this.criticalComponents.addElement(actbuts[2]);		this.criticalComponents.addElement(actbuts[3]);		Label lab;		Panel zwp;

⌨️ 快捷键说明

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