📄 frame1.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 + -