📄 winatree.java~94~
字号:
import java.awt.Toolkit;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class WinATree extends JFrame{
boolean packFrame = false;
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
JMenuBar menu = new JMenuBar();
JMenu file = new JMenu();
JMenu aTree = new JMenu();
JMenu bTree = new JMenu();
JMenuItem addA = new JMenuItem();
JMenuItem deleteA = new JMenuItem();
JMenuItem addB = new JMenuItem();
JMenuItem deleteB = new JMenuItem();
JMenuItem searchA = new JMenuItem();
JMenuItem searchB = new JMenuItem();
JMenuItem creatA = new JMenuItem();
JMenuItem creatB = new JMenuItem();
JMenuItem exitM = new JMenuItem();
JMenuItem deleteAl = new JMenuItem();
ATree at;
/**
* Construct and show the application.
*/
public WinATree() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
setVisible(true);
}
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(borderLayout1);
this.setJMenuBar(menu);
setSize(new Dimension(400, 300));
setTitle(" Tree");
file.setText("file") ;
aTree.setText("AVl Tree");
bTree.setText("BTree");
addA.setText("add");
addA.addMouseListener(new WinATree_addA_mouseAdapter(this));
deleteA.setText("delete");
deleteA.addMouseListener(new WinATree_deleteA_mouseAdapter(this));
addB.setText("add");
deleteB.setText("delete");
searchA.setText("search");
searchA.addMouseListener(new WinATree_searchA_mouseAdapter(this));
searchB.setText("search");
creatA.setText("creatAVlTree");
creatB.setText("creatBTree");
deleteAl.setText("deiete all");
deleteAl.addMouseListener(new WinATree_deleteAl_mouseAdapter(this));
exitM.setText("exit");
exitM.addMouseListener(new WinATree_exitM_mouseAdapter(this));
menu.add(file) ;
menu.add(aTree);
menu.add(bTree);
bTree.setVisible(false) ;
aTree.setVisible(false) ;
aTree.add(addA);
aTree.add(deleteA);
aTree.add(searchA);
aTree.add(deleteAl);
bTree.add(addB);
bTree.add(deleteB);
bTree.add(searchB);
file.add(creatA);
file.add(creatB);
file.add(exitM);
creatA.addActionListener(new CreatA_mouseAdapter ()) ;
creatB.addActionListener(new CreatB_mouseAdapter ()) ;
// at=new ATree() ;
/* at.Insert(1);
at.Insert(2);
at.Insert(3);
at.Insert(4);
at.Insert(87);at.Insert(7);at.Insert(5);*/
}
public void paint(Graphics g){
super.paint(g) ;
if(at!=null){
int h = at.High();
int l = (int)Math.pow(2,h)-1 ;
Queue qu = new Queue();
//ATNode atn[]=new ATNode[ l] ;
ATNode p = at.root,q=new ATNode() ;
if (p != null) {
boolean b[] = new boolean[l];
for (int i = 0; i < l; i++)
b[i] = true;
int x[] = new int[l];
if(h>1){
//x[l - h - 1] = 0;
for (int i = (int)Math.pow(2,h-1); i > 0; i--)
x[l - i] = 80 + x[l - i - 1];
for (int i = (int)Math.pow(2,h-1)-2; i >= 0; i--)
x[i] = (x[i * 2 + 2] + x[i * 2 + 1]) / 2;
}else x[0]=10;
qu.add(p);
int n = 0;
int y;
// for(int i=0;i<l;i++){
// y = 30 *(int)(Math.log(i+1) /Math.log(2) ) + 70;
// g.drawString("0", x[i], y);
// }
while (!qu.isEmpty() ) {
q=qu.delete() ;
y = 30 *(int)(Math.log(n+1) /Math.log(2) ) + 70;
while (!b[(n - 1) / 2]||!b[n]) {
b[n] = false;
n++;
}
g.setColor(Color.red ) ;
g.drawString(Double.toString(q.data)+" "+Double.toString(q.bf ), x[n]-5, y+5);
g.setColor(Color.darkGray ) ;
if (q.LeftChild != null&2 * n + 1< l) {
qu.add(q.LeftChild);
g.drawLine(x[n], y+5, x[2 * n + 1], y + 25);
} else
if (2 * n + 1 < l)
b[2 * n + 1] = false;
if (q.RightChild != null&2 * n + 2 < l) {
qu.add(q.RightChild);
g.drawLine(x[n], y+5, x[2 * n + 2], y + 25);
} else
if (2 * n + 2 < l)
b[2 * n + 2] = false;
n++;
}
}
}
}
/**
* Application entry point.
*
* @param args String[]
*/
public static void main(String[] args) {
new WinATree();
}
class CreatA_mouseAdapter implements ActionListener {
public void actionPerformed(ActionEvent e)
{
at=new ATree() ;
aTree.setVisible(true) ;
bTree.setVisible(false) ;
}
}
public void addA_mousePressed(MouseEvent e) {
try{ String st=JOptionPane.showInputDialog("Enter the data which you want add:") ;
double d = Double.parseDouble(st.trim());
at.Insert(d);
repaint();
}catch(Exception e1){JOptionPane.showMessageDialog(null,"bad input") ;}
}
public void deleteA_mousePressed(MouseEvent e) {
try{ String st=JOptionPane.showInputDialog("Enter the data which you want delete:") ;
double d = Double.parseDouble(st.trim());
at.Delete(d) ;
repaint();
}catch(Exception e1){repaint();JOptionPane.showMessageDialog(null,"bad input") ;}
}
public void searchA_mousePressed(MouseEvent e) {
try{ String st=JOptionPane.showInputDialog("Enter the data which you want delete:") ;
double d = Double.parseDouble(st.trim());
if(at.Search(d))
JOptionPane.showMessageDialog(null,d+" is exist") ;
else JOptionPane.showMessageDialog(null,d+" is not exist") ;
repaint();
}catch(Exception e1){repaint();JOptionPane.showMessageDialog(null,"bad input") ;}
}
public void deleteAl_mousePressed(MouseEvent e) {
at.DeleteAll() ;
repaint();
}
public void exitM_mousePressed(MouseEvent e) {
System.exit(0) ;
}
class CreatB_mouseAdapter implements ActionListener {
public void actionPerformed(ActionEvent e)
{ at=new ATree() ;
bTree.setVisible(true) ;
aTree.setVisible(false) ;
}
}
}
class WinATree_exitM_mouseAdapter extends MouseAdapter {
private WinATree adaptee;
WinATree_exitM_mouseAdapter(WinATree adaptee) {
this.adaptee = adaptee;
}
public void mousePressed(MouseEvent e) {
adaptee.exitM_mousePressed(e);
}
}
class WinATree_deleteAl_mouseAdapter extends MouseAdapter {
private WinATree adaptee;
WinATree_deleteAl_mouseAdapter(WinATree adaptee) {
this.adaptee = adaptee;
}
public void mousePressed(MouseEvent e) {
adaptee.deleteAl_mousePressed(e);
}
}
class WinATree_searchA_mouseAdapter extends MouseAdapter {
private WinATree adaptee;
WinATree_searchA_mouseAdapter(WinATree adaptee) {
this.adaptee = adaptee;
}
public void mousePressed(MouseEvent e) {
adaptee.searchA_mousePressed(e);
}
}
class WinATree_deleteA_mouseAdapter extends MouseAdapter {
private WinATree adaptee;
WinATree_deleteA_mouseAdapter(WinATree adaptee) {
this.adaptee = adaptee;
}
public void mousePressed(MouseEvent e) {
adaptee.deleteA_mousePressed(e);
}
}
class WinATree_addA_mouseAdapter extends MouseAdapter {
private WinATree adaptee;
WinATree_addA_mouseAdapter(WinATree adaptee) {
this.adaptee = adaptee;
}
public void mousePressed(MouseEvent e) {
adaptee.addA_mousePressed(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -