package BiYeSheJi;import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.border.*;import source.ArrayStack;
public class MyApplet {
public void pannel(){
 String ItemName[] = { "堆栈","排序","数组", "队列", "链表","递归", "二叉树的实现", "哈弗曼编码", "图的遍历",
 "查找",  };

JFrame f= new JFrame("数据结构算法演示系统");
JPanel b1 = new JPanel(null); 
f.setLayout(new FlowLayout()); 
f.setSize(1000, 500);
f.setVisible(true);  
    f.pack();
f.add(b1);
JTabbedPane table = new JTabbedPane();
JPanel a1 =new JPanel(null);
JPanel a2 =new JPanel(null);
JPanel a3 =new JPanel(null);
JPanel a4 =new JPanel(null);
JPanel a5 =new JPanel(null);
JPanel a6 =new JPanel(null);
JPanel a7 =new JPanel(null);
JPanel a8 =new JPanel(null);
JPanel a9 =new JPanel(null);
JPanel a10 =new JPanel(null);

b1.setLayout(new FlowLayout());
b1.setBounds(0,0,1000,150);
b1.setVisible(true);

table.setPreferredSize(new Dimension(1000, 600));

table.addTab(ItemName[0], a1);
table.addTab(ItemName[1], a2);
table.addTab(ItemName[2], a3);
table.addTab(ItemName[3], a4);
table.addTab(ItemName[4], a5);
table.addTab(ItemName[5], a6);
table.addTab(ItemName[6], a7);
table.addTab(ItemName[7], a8);
table.addTab(ItemName[8], a9);
table.addTab(ItemName[9], a10);
table.setVisible(true);
b1.add(table, FlowLayout.LEFT);
//table.setBounds(0,0,1000,600);




  JPanel one=new JPanel();
      JPanel two=new JPanel();
      JPanel three=new JPanel();
      a1.setLayout(new FlowLayout());
      a1.setVisible(true);
     
    
     JLabel lab=new JLabel("输入元素",Label.LEFT);
     final TextField tf=new TextField(6);
     final JButton bt1=new JButton("入栈");
     final JButton bt2=new JButton("出栈");
     final JButton bt3=new JButton("清除");
     final JButton bt4=new JButton("显示");
     one.setLayout(new FlowLayout());
        one.setPreferredSize(new Dimension(500, 100));
     one.setVisible(true);
     one.add(lab);
one.add(tf);
one.add(bt1);
one.add(bt2);
one.add(bt3);
one.add(bt4);





final JTextArea textarea1 = new JTextArea(200, 80);
textarea1.setEditable(false);
    JScrollPane scro2 = new JScrollPane(textarea1);
scro2.setBorder(new BevelBorder(BevelBorder.LOWERED));
two.add(scro2);
two.setBorder(new TitledBorder(null, "结果栏",
TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.TOP));
two.setLayout(new FlowLayout());
two.setVisible(true);
two.setPreferredSize(new Dimension(1000, 100));

three.setBorder(new TitledBorder(null,"堆栈",
TitledBorder.DEFAULT_JUSTIFICATION,TitledBorder.TOP));
JTextArea text = new JTextArea("显示代码区", 10, 50);
text.setEditable(false);
JScrollPane scroll = new JScrollPane(text);// 将多行文本框text加到scroll中
scroll.setBorder(new BevelBorder(BevelBorder.LOWERED));
scroll.setVisible(true);
//String  text1=new String();
    
//String text1 = readSourceCodes("/source/ArrayStack.java");
three.add(scroll, BorderLayout.CENTER);
three.add(text);
three.setLayout(new FlowLayout());
three.setVisible(true);
three.setPreferredSize(new Dimension(1000, 400));
//添加下面三句后不能显示组件,怎么回事啊
File file=new File("ArrayStack.java");
String text1 =readSourceCodes(file.getPath());
text.setText(text1);

three.add(scroll, BorderLayout.CENTER);
three.add(text);
three.setLayout(new FlowLayout());
three.setVisible(true);
three.setPreferredSize(new Dimension(1000, 400));


    a1.add(one);
    a1.add(two);
     a1.add(three);
    
    
    
     final ArrayStack stack = new ArrayStack();
bt1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
    bt2.setEnabled(true);
bt3.setEnabled(true);
String str =  (tf.getText().trim());
stack.push(str);
} });
bt2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (stack.isEmpty()) {
bt2.setEnabled(false);
bt3.setEnabled(false);
textarea1.setText("堆栈已空!");
} else {
stack.pop();
} } });
bt3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (stack.isEmpty()) {
bt2.setEnabled(false);
bt3.setEnabled(false);
textarea1.setText("堆栈已为空!");
} else {
stack.clear();
} } });
bt4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (stack.isEmpty()) {
textarea1.setText("堆栈已没有任何元素!");
} else {
String str = "结果:" + stack.toString();
textarea1.setText(str);
}
} });



    }  

final String readSourceCodes(String relativepath) {
InputStream is=getClass().getResourceAsStream(relativepath);    

StringBuffer str = new StringBuffer();

String s = null;
try {
BufferedReader in = new BufferedReader(new InputStreamReader(is));
while(null != (s=in.readLine()) ) {
str.append(s + "\n");
}
in.close();
} catch (FileNotFoundException e1) {
JOptionPane.showMessageDialog(null, "该文件不存在!");
e1.printStackTrace();
} catch(IOException e2) {
JOptionPane.showMessageDialog(null, "抱歉!打开源文件出错被您发现了!");
e2.printStackTrace();

return str.toString();
}

public static void main(String args[]){
MyApplet liu=new MyApplet();
liu.pannel();
}
     }