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

📄 frame1.java

📁 关于R+树的java源码
💻 JAVA
字号:
/*
	COMP 630C project
	Re-implementation of R+ tree

	Group member:
	Cheng Wing Hang, Nelson
	Cheung Kwok Ho, Steven
	Ngai Ming Wai, Ryan
	Shiu Hoi Nam
	Tsui Chi Man
*/

/*
	This simple extension of the java.awt.Frame class
	contains all the elements necessary to act as the
	main window of an application.
 */

import java.awt.*;

import symantec.itools.awt.ImagePanel;
import symantec.itools.awt.shape.Rect;
public class Frame1 extends Frame
{
    static RPlus root;
    Rect rects[]=new Rect[256];
    int counter=0;
    
	public Frame1()
	{
		// This code is automatically generated by Visual Cafe when you add
		// components to the visual environment. It instantiates and initializes
		// the components. To modify the code, only use code syntax that matches
		// what Visual Cafe can generate, or Visual Cafe may be unable to back
		// parse your Java file into its visual environment.

		//{{INIT_CONTROLS
		setLayout(null);
		setVisible(false);
		setSize(insets().left + insets().right + 755,insets().top + insets().bottom + 589);
		setForeground(new Color(0));
		openFileDialog1 = new java.awt.FileDialog(this);
		openFileDialog1.setMode(FileDialog.LOAD);
		openFileDialog1.setTitle("Open");
		//$$ openFileDialog1.move(40,277);
		button1 = new java.awt.Button();
		button1.setActionCommand("button");
		button1.setLabel("Insert");
		button1.setBounds(insets().left + 696,insets().top + 408,50,26);
		button1.setBackground(new Color(12632256));
		add(button1);
		button2 = new java.awt.Button();
		button2.setActionCommand("button");
		button2.setLabel("Delete");
		button2.setBounds(insets().left + 696,insets().top + 444,50,25);
		button2.setBackground(new Color(12632256));
		add(button2);
		button3 = new java.awt.Button();
		button3.setActionCommand("button");
		button3.setLabel("Search");
		button3.setBounds(insets().left + 696,insets().top + 480,49,25);
		button3.setBackground(new Color(12632256));
		add(button3);
		button4 = new java.awt.Button();
		button4.setActionCommand("button");
		button4.setLabel("Pack");
		button4.setBounds(insets().left + 696,insets().top + 516,49,26);
		button4.setBackground(new Color(12632256));
		add(button4);
		button5 = new java.awt.Button();
		button5.setActionCommand("button");
		button5.setLabel("Exit");
		button5.setBounds(insets().left + 696,insets().top + 552,49,26);
		button5.setBackground(new Color(12632256));
		add(button5);
		textField1 = new java.awt.TextField();
		textField1.setBounds(insets().left + 612,insets().top + 408,74,26);
		add(textField1);
		textField2 = new java.awt.TextField();
		textField2.setBounds(insets().left + 612,insets().top + 444,73,25);
		add(textField2);
		textField3 = new java.awt.TextField();
		textField3.setBounds(insets().left + 612,insets().top + 480,74,25);
		add(textField3);
		textField4 = new java.awt.TextField();
		textField4.setBounds(insets().left + 612,insets().top + 516,73,25);
		add(textField4);
		textField5 = new java.awt.TextField();
		textField5.setBounds(insets().left + 612,insets().top + 552,72,25);
		add(textField5);
		label1 = new java.awt.Label("Low X");
		label1.setBounds(insets().left + 564,insets().top + 408,38,25);
		add(label1);
		label2 = new java.awt.Label("Low Y");
		label2.setBounds(insets().left + 564,insets().top + 444,36,23);
		add(label2);
		label3 = new java.awt.Label("High X");
		label3.setBounds(insets().left + 564,insets().top + 480,39,25);
		add(label3);
		label4 = new java.awt.Label("High Y");
		label4.setBounds(insets().left + 564,insets().top + 516,37,27);
		add(label4);
		label5 = new java.awt.Label("OID");
		label5.setBounds(insets().left + 564,insets().top + 552,38,25);
		add(label5);
		textArea1 = new java.awt.TextArea("",0,0,TextArea.SCROLLBARS_VERTICAL_ONLY);
		textArea1.setEditable(false);
		textArea1.setBounds(insets().left + 552,insets().top + 0,204,398);
		add(textArea1);
		panel1 = new java.awt.Panel();
		panel1.setLayout(null);
		panel1.setBounds(insets().left + 0,insets().top + 0,553,589);
		add(panel1);
		setTitle("A Basic Application");
		//}}

		//{{INIT_MENUS
		mainMenuBar = new java.awt.MenuBar();
		menu1 = new java.awt.Menu("File");
		miNew = new java.awt.MenuItem("New");
		menu1.add(miNew);
		miOpen = new java.awt.MenuItem("Open...");
		menu1.add(miOpen);
		miSave = new java.awt.MenuItem("Save");
		menu1.add(miSave);
		miSaveAs = new java.awt.MenuItem("Save As...");
		menu1.add(miSaveAs);
		menu1.addSeparator();
		miExit = new java.awt.MenuItem("Exit");
		menu1.add(miExit);
		//mainMenuBar.add(menu1);
		menu2 = new java.awt.Menu("Edit");
		miCut = new java.awt.MenuItem("Cut");
		menu2.add(miCut);
		miCopy = new java.awt.MenuItem("Copy");
		menu2.add(miCopy);
		miPaste = new java.awt.MenuItem("Paste");
		menu2.add(miPaste);
		//mainMenuBar.add(menu2);
		menu3 = new java.awt.Menu("Help");
		mainMenuBar.setHelpMenu(menu3);
		miAbout = new java.awt.MenuItem("About..");
		menu3.add(miAbout);
		//mainMenuBar.add(menu3);
		setMenuBar(mainMenuBar);
		//$$ mainMenuBar.move(4,277);
		//}}

		//{{REGISTER_LISTENERS
		SymWindow aSymWindow = new SymWindow();
		this.addWindowListener(aSymWindow);
		SymAction lSymAction = new SymAction();
		miOpen.addActionListener(lSymAction);
		miAbout.addActionListener(lSymAction);
		miExit.addActionListener(lSymAction);
		SymMouse aSymMouse = new SymMouse();
		button4.addMouseListener(aSymMouse);
		button5.addMouseListener(aSymMouse);
		button1.addMouseListener(aSymMouse);
		button2.addMouseListener(aSymMouse);
		button3.addMouseListener(aSymMouse);
		//}}
	}

	public Frame1(String title)
	{
		this();
		setTitle(title);
	}

	public synchronized void show()
	{
		move(50, 50);
		super.show();
	}

	static public void main(String args[])
	{
	    int fillfactor=3;

	    root=new RPlus(fillfactor);

		(new Frame1()).show();
	}

	public void addNotify()
	{
	    // Record the size of the window prior to calling parents addNotify.
	    Dimension d = getSize();

		super.addNotify();

		if (fComponentsAdjusted)
			return;

		// Adjust components according to the insets
		setSize(insets().left + insets().right + d.width, insets().top + insets().bottom + d.height);
		Component components[] = getComponents();
		for (int i = 0; i < components.length; i++)
		{
			Point p = components[i].getLocation();
			p.translate(insets().left, insets().top);
			components[i].setLocation(p);
		}
		fComponentsAdjusted = true;
	}

    // Used for addNotify check.
	boolean fComponentsAdjusted = false;

	//{{DECLARE_CONTROLS
	java.awt.FileDialog openFileDialog1;
	java.awt.Button button1;
	java.awt.Button button2;
	java.awt.Button button3;
	java.awt.Button button4;
	java.awt.Button button5;
	java.awt.TextField textField1;
	java.awt.TextField textField2;
	java.awt.TextField textField3;
	java.awt.TextField textField4;
	java.awt.TextField textField5;
	java.awt.Label label1;
	java.awt.Label label2;
	java.awt.Label label3;
	java.awt.Label label4;
	java.awt.Label label5;
	java.awt.TextArea textArea1;
	java.awt.Panel panel1;
	//}}

	//{{DECLARE_MENUS
	java.awt.MenuBar mainMenuBar;
	java.awt.Menu menu1;
	java.awt.MenuItem miNew;
	java.awt.MenuItem miOpen;
	java.awt.MenuItem miSave;
	java.awt.MenuItem miSaveAs;
	java.awt.MenuItem miExit;
	java.awt.Menu menu2;
	java.awt.MenuItem miCut;
	java.awt.MenuItem miCopy;
	java.awt.MenuItem miPaste;
	java.awt.Menu menu3;
	java.awt.MenuItem miAbout;
	//}}

	class SymWindow extends java.awt.event.WindowAdapter
	{
		public void windowClosing(java.awt.event.WindowEvent event)
		{
			Object object = event.getSource();
			if (object == Frame1.this)
				Frame1_WindowClosing(event);
		}
	}

	void Frame1_WindowClosing(java.awt.event.WindowEvent event)
	{
		hide();		 // hide the Frame
		dispose();	  // free the system resources
		System.exit(0); // close the application
	}

	class SymAction implements java.awt.event.ActionListener
	{
		public void actionPerformed(java.awt.event.ActionEvent event)
		{
			Object object = event.getSource();
			if (object == miOpen)
				miOpen_Action(event);
			else if (object == miAbout)
				miAbout_Action(event);
			else if (object == miExit)
				miExit_Action(event);
		}
	}

	void miAbout_Action(java.awt.event.ActionEvent event)
	{
		//{{CONNECTION
		// Action from About Create and show as modal
		(new AboutDialog(this, true)).show();
		//}}
	}

	void miExit_Action(java.awt.event.ActionEvent event)
	{
		//{{CONNECTION
		// Action from Exit Create and show as modal
		(new QuitDialog(this, true)).show();
		//}}
	}

	void miOpen_Action(java.awt.event.ActionEvent event)
	{
		//{{CONNECTION
		// Action from Open... Show the OpenFileDialog
		openFileDialog1.show();
		//}}
	}

	class SymMouse extends java.awt.event.MouseAdapter
	{
		public void mousePressed(java.awt.event.MouseEvent event)
		{
			Object object = event.getSource();
			if (object == button5)
				button5_MousePress(event);
			else if (object == button1)
				button1_MousePress(event);
			else if (object == button2)
				button2_MousePress(event);
			else if (object == button3)
				button3_MousePress(event);
			else if (object == button4)
				button4_MousePress(event);
		}
	}

	void button5_MousePress(java.awt.event.MouseEvent event)
	{
		// to do: code goes here.
		System.exit(0);
	}
	
	void button1_MousePress(java.awt.event.MouseEvent event)
	{
		// to do: code goes here.
		RECT rec;
		MBR obj;
        String text1, text2, text3, text4, text5;
        Float t1,t2,t3,t4;
        Integer t5;
        
        text1=textField1.getText();
        text2=textField2.getText();
        text3=textField3.getText();
        text4=textField4.getText();
        text5=textField5.getText();

		if ( text1.length()==0 || text2.length()==0 || text3.length()==0 || text4.length()==0 || text5.length()==0 )
		{
            textArea1.setEditable(true);
		    textArea1.appendText("Incorrect input\n");
		    textArea1.setEditable(false);
		}
		else
		{
		    t1=Float.valueOf(text1);
		    t2=Float.valueOf(text2);
		    t3=Float.valueOf(text3);
		    t4=Float.valueOf(text4);
		    t5=Integer.valueOf(text5);
		    rec=new RECT(t1.floatValue(),t2.floatValue(),t3.floatValue(),t4.floatValue());
		    obj=new MBR(rec,t5.intValue());
		    
		    root.insert(obj);
		}
	    textField1.setText("");
	    textField2.setText("");
	    textField3.setText("");
	    textField4.setText("");
	    textField5.setText("");
	    this.redraw();
	}

	void button2_MousePress(java.awt.event.MouseEvent event)
	{
		// to do: code goes here.
		RECT rec;
		MBR obj;
        String text1, text2, text3, text4, text5;
        Float t1,t2,t3,t4;
        Integer t5;
        
        text1=textField1.getText();
        text2=textField2.getText();
        text3=textField3.getText();
        text4=textField4.getText();
        text5=textField5.getText();

		if ( text1.length()!=0 || text2.length()!=0 || text3.length()!=0 || text4.length()!=0 || text5.length()==0 )
		{
            textArea1.setEditable(true);
		    textArea1.appendText("Incorrect input\n");
		    textArea1.setEditable(false);
		}
		else
		{
		    t5=Integer.valueOf(text5);
		    
		    root.delete(t5.intValue());
		}
	    textField1.setText("");
	    textField2.setText("");
	    textField3.setText("");
	    textField4.setText("");
	    textField5.setText("");
		this.redraw();
	}

	void button3_MousePress(java.awt.event.MouseEvent event)
	{
		// to do: code goes here.
		RECT rec;
		MBR obj;
		node result;
		CELL ptr;
        String text1, text2, text3, text4, text5;
        Float t1,t2,t3,t4;
        Integer t5;
        
        result=new node();
        text1=textField1.getText();
        text2=textField2.getText();
        text3=textField3.getText();
        text4=textField4.getText();
        text5=textField5.getText();

	    textField1.setText("");
	    textField2.setText("");
	    textField3.setText("");
	    textField4.setText("");
	    textField5.setText("");
	    
		if ( text1.length()==0 || text2.length()==0 || text3.length()==0 || text4.length()==0 || text5.length()!=0 )
		{
            textArea1.setEditable(true);
		    textArea1.appendText("Incorrect input\n");
		    textArea1.setEditable(false);
		    return;
		}
		else
		{
		    t1=Float.valueOf(text1);
		    t2=Float.valueOf(text2);
		    t3=Float.valueOf(text3);
		    t4=Float.valueOf(text4);
		    rec=new RECT(t1.floatValue(),t2.floatValue(),t3.floatValue(),t4.floatValue());
		    
		    result=root.search(rec);
		}

	    textArea1.append("Search result :\n");
	    ptr=new CELL();
	    ptr=result.head;
	    while (ptr!=null)
	    {
	        textArea1.append("Object "+ptr.current.oid+"\n");
	        ptr=ptr.next;
	    }
	}

	void button4_MousePress(java.awt.event.MouseEvent event)
	{
		// to do: code goes here.
		root.pack();
		this.redraw();
	}
	
        void draw_child(RECT mbr,int color)
	{
	    Float x,y,lenx,leny;
	    
        x=new Float(mbr.low[0]*4);
        lenx=new Float((mbr.high[0]-mbr.low[0])*4);
        leny=new Float((mbr.high[1]-mbr.low[1])*4);
        y=new Float(589-(mbr.low[1]*4+leny.floatValue()));
        rects[counter]=new symantec.itools.awt.shape.Rect();
        rects[counter].setBounds(x.intValue(),y.intValue(),lenx.intValue(),leny.intValue());
                rects[counter].setForeground(new Color(color*35000));
        panel1.add(rects[counter]);
        counter++;	    
	}
	
        void draw_node(RECT mbr,int color)
	{
	    Float x,y,lenx,leny;
	    
        x=new Float(mbr.low[0]*4);
        lenx=new Float((mbr.high[0]-mbr.low[0])*4);
        leny=new Float((mbr.high[1]-mbr.low[1])*4);
        y=new Float(589-(mbr.low[1]*4+leny.floatValue()));
        rects[counter]=new symantec.itools.awt.shape.Rect();
        rects[counter].setBounds(x.intValue()-2,y.intValue()-2,lenx.intValue()+4,leny.intValue()+4);
                rects[counter].setForeground(new Color(color*35000));
        panel1.add(rects[counter]);
        counter++;	    
	}
	
        void recur_draw(CELL ptr,int color)
	{
	    while (ptr!=null)
	    {
	        if (ptr.current.oid==0)
	        {
                    recur_draw(ptr.child.head,color+1);
                    draw_node(ptr.current.mbr,color);
	        }
	        else
	        {
                    draw_child(ptr.current.mbr,color);
	        }
	        ptr=ptr.next;
	    }
	}
	
	void redraw()
	{
	    Float x,y,lenx,leny;
	    int i;

        for (i=0; i<counter; i++)
        {
            panel1.remove(rects[i]);
        }

        counter=0;
        recur_draw(root.head.head,0);
        panel1.repaint();
	}
}

⌨️ 快捷键说明

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