📄 frame1.java~297~
字号:
package treeandbtreedemo;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*; //swing组件事件响应ChangeListener
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
* @version 3.1图形界面的设计
* @version 3.2动画效果
* @version 4.2另外一种画图方式,图标表示节点。可移动(7.12)
* @version 4.4加入了字符串的判定(7.12)
*/
public class Frame1
extends JFrame
implements Runnable {
JPanel contentPane;
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenuFile = new JMenu();
JMenuItem jMenuFileExit = new JMenuItem();
JMenu jMenuHelp = new JMenu();
JMenuItem jMenuHelpAbout = new JMenuItem();
JLabel statusBar = new JLabel();
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel4 = new JPanel();
//JPanel draw = new JPanel();
BorderLayout borderLayout4 = new BorderLayout();
JPanel panel = new JPanel();
ButtonGroup buttonGroup1 = new ButtonGroup();
GridLayout gridLayout1 = new GridLayout();
FlowLayout flowLayout4 = new FlowLayout();
//画板
//DrawPanel drawTable = new DrawPanel();
//数据对象
private Table table = new Table(); //表格数据,记录了节点的坐标等信息
private Tree tree = new Tree(); //树
private BinaryTree binaryTree = new BinaryTree(); //二叉树
private Thread autoThread = new Thread(); //基本运行线程
private int index = -1;
private String now = new String(); //演示的状态,线程中要用到
private int fps = 10; //频率
private boolean travel = false;
JMenuItem jMenuOpen = new JMenuItem();
JMenuItem jMenuSave = new JMenuItem();
JMenuItem jMenuItem1 = new JMenuItem();
JPanel jPanel1 = new JPanel();
BorderLayout borderLayout2 = new BorderLayout();
JPanel jPanel12 = new JPanel();
JButton stop = new JButton();
FlowLayout flowLayout1 = new FlowLayout();
FlowLayout flowLayout5 = new FlowLayout();
JPanel jPanel14 = new JPanel();
JSlider slider = new JSlider();
JButton reset = new JButton();
JPanel jPanel2 = new JPanel();
JButton auto = new JButton();
DrawLabelPanel drawTable = new DrawLabelPanel();
FlowLayout flowLayout3 = new FlowLayout();
JPanel input = new JPanel();
JTextField text = new JTextField();
JPanel jPanel6 = new JPanel();
JRadioButton jRadioButtonTree = new JRadioButton();
FlowLayout flowLayout2 = new FlowLayout();
JRadioButton jRadioButtonBT = new JRadioButton();
JPanel jPanel3 = new JPanel();
JPanel jPanel5 = new JPanel();
JPanel jPanel7 = new JPanel();
JPanel jPanel8 = new JPanel();
JPanel jPanel9 = new JPanel();
JButton binaryTreeInOrder = new JButton();
JButton binaryTreePostOrder = new JButton();
JButton treePreOrder = new JButton();
JButton treePostOrder = new JButton();
JPanel jPanel10 = new JPanel();
JButton binaryTreePreOrder = new JButton();
//private String flag=new String("");//判断是遍历二叉树还是树
//Construct the frame
public Frame1() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
contentPane = (JPanel)this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(600, 540));
this.setTitle("Frame Title");
statusBar.setText(" ");
jMenuFile.setText("File");
jMenuFileExit.setText("Exit");
jMenuFileExit.addActionListener(new Frame1_jMenuFileExit_ActionAdapter(this));
jMenuHelp.setText("Help");
jMenuHelpAbout.setText("About");
jMenuHelpAbout.addActionListener(new Frame1_jMenuHelpAbout_ActionAdapter(this));
jPanel4.setLayout(gridLayout1);
// binaryTreeInOrder.addActionListener(new UI_binaryTreeInOrder_actionAdapter(this));
// binaryTreePostOrder.addActionListener(new
//UI_binaryTreePostOrder_actionAdapter(this));
borderLayout4.setHgap(5);
borderLayout4.setVgap(5);
panel.setLayout(borderLayout4);
panel.setToolTipText("");
//binaryTreeStart.addActionListener(new UI_binaryTreeStart_actionAdapter(this));
// binaryTreePreOrder.addActionListener(new
//UI_binaryTreePreOrder_actionAdapter(this));
//binaryTreeText.addActionListener(new UI_binaryTreetreeText_actionAdapter(this));
jPanel4.setPreferredSize(new Dimension(90, 274));
//jLabel1.setText("");
borderLayout1.setHgap(0);
borderLayout1.setVgap(5);
gridLayout1.setColumns(1);
gridLayout1.setRows(7);
gridLayout1.setVgap(0);
jMenuOpen.setText("Open");
jMenuSave.setText("Save");
jMenuItem1.setToolTipText("");
jMenuItem1.setText("Help");
jPanel1.setLayout(borderLayout2);
stop.setFont(new java.awt.Font("Dialog", 0, 15));
stop.setPreferredSize(new Dimension(73, 25));
stop.setActionCommand("pause");
stop.setText("stop");
stop.addActionListener(new Frame1_stop_actionAdapter(this));
flowLayout1.setHgap(10);
flowLayout1.setVgap(5);
flowLayout5.setHgap(18);
flowLayout5.setVgap(5);
jPanel14.setBorder(BorderFactory.createEtchedBorder());
jPanel14.setDebugGraphicsOptions(0);
jPanel14.setPreferredSize(new Dimension(470, 39));
jPanel14.setLayout(flowLayout1);
slider.setOrientation(JSlider.HORIZONTAL);
slider.setInverted(false);
slider.setMinimum(1);
slider.setMaximum(20);
slider.setValue(10);
// slider.addAncestorListener(new javax.swing.event.AncestorListener() {
// public void ancestorAdded(AncestorEvent e) {
// slider_ancestorAdded(e);
// }
// public void ancestorRemoved(AncestorEvent e) {
// }
// public void ancestorMoved(AncestorEvent e) {
// }
// });
slider.setMajorTickSpacing(10);
slider.setMinorTickSpacing(5);
slider.setPaintLabels(false);
slider.setPaintTicks(false);
slider.setPaintTrack(true);
slider.setAlignmentX((float) 0.5);
slider.setDebugGraphicsOptions(0);
slider.setDoubleBuffered(false);
slider.setPreferredSize(new Dimension(195, 24));
slider.setRequestFocusEnabled(true);
slider.setToolTipText("" + slider.getValue());
slider.setVerifyInputWhenFocusTarget(true);
slider.addChangeListener(new ChangeListener() {
//这是一个Swing组件event响应内部类
public void stateChanged(ChangeEvent e) {
fps = slider.getValue();
}
});
reset.setFont(new java.awt.Font("Dialog", 0, 15));
reset.setPreferredSize(new Dimension(73, 25));
reset.setText("reset");
reset.addActionListener(new Frame1_reset_actionAdapter(this));
reset.addActionListener(new Frame1_reset_actionAdapter(this));
jPanel2.setBorder(null);
jPanel2.setPreferredSize(new Dimension(100, 50));
jPanel2.setLayout(flowLayout5);
auto.setFont(new java.awt.Font("Dialog", 0, 15));
auto.setPreferredSize(new Dimension(73, 25));
auto.setText("auto");
auto.addActionListener(new Frame1_auto_actionAdapter(this));
auto.addActionListener(new Frame1_auto_actionAdapter(this));
drawTable.setBackground(Color.white);
drawTable.setDebugGraphicsOptions(0);
drawTable.setPreferredSize(new Dimension(300, 200));
drawTable.setLayout(null);
input.setBorder(BorderFactory.createEtchedBorder());
input.setDebugGraphicsOptions(0);
input.setPreferredSize(new Dimension(470, 39));
input.setLayout(flowLayout3);
text.setDebugGraphicsOptions(0);
text.setDoubleBuffered(false);
text.setPreferredSize(new Dimension(330, 22));
text.setSelectionEnd(15);
text.setSelectionStart(11);
text.setText("");
text.addActionListener(new Frame1_text_actionAdapter(this));
text.addActionListener(new Frame1_text_actionAdapter(this));
jPanel6.setDebugGraphicsOptions(0);
jPanel6.setPreferredSize(new Dimension(432, 49));
jPanel6.setLayout(flowLayout2);
jRadioButtonTree.setFont(new java.awt.Font("Dialog", 0, 13));
jRadioButtonTree.setText("树");
jRadioButtonTree.addActionListener(new Frame1_jRadioButtonTree_actionAdapter(this));
jRadioButtonTree.addActionListener(new
Frame1_jRadioButtonTree_actionAdapter(this));
flowLayout2.setAlignment(FlowLayout.CENTER);
flowLayout2.setHgap(20);
flowLayout2.setVgap(5);
jRadioButtonBT.setFont(new java.awt.Font("Dialog", 0, 13));
jRadioButtonBT.setText("二叉树");
jRadioButtonBT.addActionListener(new Frame1_jRadioButtonBT_actionAdapter(this));
jRadioButtonBT.addActionListener(new Frame1_jRadioButtonBT_actionAdapter(this));
jPanel3.setLayout(null);
jPanel9.setLayout(null);
jPanel8.setLayout(null);
jPanel7.setLayout(null);
jPanel5.setLayout(null);
binaryTreeInOrder.setBounds(new Rectangle(7, 0, 82, 51));
binaryTreeInOrder.setFont(new java.awt.Font("Dialog", 0, 12));
binaryTreeInOrder.setAlignmentX((float) 5.0);
binaryTreeInOrder.setActionCommand("inOrder");
binaryTreeInOrder.setText("中序遍历");
binaryTreeInOrder.addActionListener(new Frame1_binaryTreeInOrder_actionAdapter(this));
binaryTreeInOrder.addActionListener(new
Frame1_binaryTreeInOrder_actionAdapter(this));
binaryTreePostOrder.setBounds(new Rectangle(7, 0, 83, 51));
binaryTreePostOrder.setFont(new java.awt.Font("Dialog", 0, 12));
binaryTreePostOrder.setAlignmentX((float) 0.0);
binaryTreePostOrder.setActionCommand("postOrder");
binaryTreePostOrder.setText("后序遍历");
binaryTreePostOrder.addActionListener(new Frame1_binaryTreePostOrder_actionAdapter(this));
binaryTreePostOrder.addActionListener(new
Frame1_binaryTreePostOrder_actionAdapter(this));
treePreOrder.setBounds(new Rectangle(7, 0, 83, 51));
treePreOrder.setFont(new java.awt.Font("Dialog", 0, 12));
treePreOrder.setText("先根遍历");
treePreOrder.addActionListener(new Frame1_treePreOrder_actionAdapter(this));
treePreOrder.addActionListener(new Frame1_treePreOrder_actionAdapter(this));
treePostOrder.setBounds(new Rectangle(7, 0, 83, 51));
treePostOrder.setFont(new java.awt.Font("Dialog", 0, 12));
treePostOrder.setText("后根遍历");
treePostOrder.addActionListener(new Frame1_treePostOrder_actionAdapter(this));
treePostOrder.addActionListener(new Frame1_treePostOrder_actionAdapter(this));
binaryTreePreOrder.setBounds(new Rectangle(7, 5, 83, 52));
binaryTreePreOrder.setFont(new java.awt.Font("Dialog", 0, 12));
binaryTreePreOrder.setPreferredSize(new Dimension(87, 29));
binaryTreePreOrder.setActionCommand("preOrder");
binaryTreePreOrder.setText("先序遍历");
binaryTreePreOrder.addActionListener(new Frame1_binaryTreePreOrder_actionAdapter(this));
binaryTreePreOrder.addActionListener(new
Frame1_binaryTreePreOrder_actionAdapter(this));
jPanel10.setLayout(null);
jMenuFile.add(jMenuOpen);
jMenuFile.add(jMenuSave);
jMenuFile.add(jMenuFileExit);
jMenuHelp.add(jMenuItem1);
jMenuHelp.add(jMenuHelpAbout);
jMenuBar1.add(jMenuFile);
jMenuBar1.add(jMenuHelp);
this.setJMenuBar(jMenuBar1);
contentPane.add(statusBar, BorderLayout.SOUTH);
contentPane.add(panel, BorderLayout.CENTER);
jPanel4.add(jPanel3, null);
jPanel4.add(jPanel10, null);
jPanel10.add(binaryTreePreOrder, null);
jPanel4.add(jPanel9, null);
jPanel9.add(binaryTreeInOrder, null);
jPanel4.add(jPanel8, null);
jPanel8.add(binaryTreePostOrder, null);
jPanel4.add(jPanel7, null);
jPanel7.add(treePreOrder, null);
jPanel4.add(jPanel5, null);
jPanel5.add(treePostOrder, null);
panel.add(jPanel1, BorderLayout.CENTER);
jPanel1.add(jPanel12, BorderLayout.WEST);
jPanel1.add(jPanel2, BorderLayout.SOUTH);
jPanel2.add(jPanel14, null);
jPanel14.add(reset, null);
jPanel14.add(stop, null);
jPanel14.add(auto, null);
jPanel14.add(slider, null);
jPanel1.add(drawTable, BorderLayout.CENTER);
jPanel1.add(jPanel6, BorderLayout.NORTH);
jPanel6.add(input, null);
input.add(jRadioButtonTree, null);
input.add(jRadioButtonBT, null);
input.add(text, null);
panel.add(jPanel4, BorderLayout.WEST);
buttonGroup1.add(jRadioButtonTree);
buttonGroup1.add(jRadioButtonBT);
}
//File | Exit action performed
public void jMenuFileExit_actionPerformed(ActionEvent e) {
System.exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -