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

📄 pepawalk.java

📁 PEPA模型性能分析工具
💻 JAVA
字号:
package gui;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import trans.PQueue;
import trans.Peparoni;

public class PepaWalk extends JDialog implements ActionListener,ListSelectionListener
{
	private JList forward;
	private JList back;
	private DefaultListModel listforward;
	private DefaultListModel listback;
	private JTextField skip;
	private JButton go;
	private JButton quit;
	private PQueue states;
	private int[] ija;
	private int matDim;
	private JTextField curstate;
	
	public PepaWalk(JFrame parent,Peparoni pepa)
	{
		super(parent, "单步调试", true);
		states=pepa.components;
		ija=pepa.ija;
		matDim=pepa.volumn;
		Container contentPane = getContentPane();

		JPanel northern = new JPanel(); 
		JLabel label=new JLabel("当前状态:");
		curstate=new JTextField(40); 
		curstate.setEditable(false);
		northern.add(label);
		northern.add(curstate);
		
		contentPane.add(northern,BorderLayout.NORTH);
		
		JPanel central = new JPanel((LayoutManager)new GridLayout(2, 1));
		listforward=new DefaultListModel();
		listback=new DefaultListModel();
		forward=new JList(listforward);
		forward.addListSelectionListener((ListSelectionListener)this);
		back=new JList(listback);
		back.addListSelectionListener((ListSelectionListener)this);
		central.add(new JScrollPane(forward));
		central.add(new JScrollPane(back));
		contentPane.add(central,BorderLayout.CENTER);
		
		JPanel southern=new JPanel();
		JLabel label1=new JLabel("转入状态:");
		skip=new JTextField(5);
		go=new JButton("跳到");
		go.addActionListener(this);
		go.setActionCommand("Go");
		go.setToolTipText("选择要查看的状态!");
		quit=new JButton("退出");
		quit.addActionListener(this);
		quit.setActionCommand("Quit");
		quit.setToolTipText("退出单步查看!");
		southern.add(label1);
		southern.add(skip);
		southern.add(go);
		southern.add(quit);
		contentPane.add(southern,BorderLayout.SOUTH);
		
		setList(1);
		this.addWindowListener((WindowListener)new WindowAdapter() 
		{
	         public void windowClosing(WindowEvent e)
	         {
	            dispose();
	         }
	    });
		
		this.setSize(600,350);
		this.show();
	}

	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		String command=e.getActionCommand();
		if(command.equals("Go"))
		{
			String GO=skip.getText();
			Integer goState=Integer.valueOf(GO);
			setList(goState.intValue());
			
		}else if(command.equals("Quit"))
		{
			dispose();
		}
	}
	private void setList(int i)
	{
		listforward.removeAllElements();
		listback.removeAllElements();
		curstate.setText(states.find(i));
		int pos_f,pos_t;
		pos_f=ija[i];
		pos_t=ija[i+1];
		int state;
		for(int j=pos_f;j<pos_t;j++)
		{
			state=ija[j];
			listforward.addElement(states.find(state));
		}
		for(int j=matDim+2;j<ija.length;j++)
		{
			if(ija[j]==i)
			{
				int k=1;
				for(k=1;k<=matDim+1;k++)
				{
					if(ija[k]==j)
						break;
					if(ija[k]>j)
					{
						k--;
						break;
					}
				}
				listback.addElement(states.find(k));
			}
		}
	}

	public void valueChanged(ListSelectionEvent e) {
		// TODO Auto-generated method stub
		Object source = e.getSource();
		if(source==forward)
		{
			int index=forward.getSelectedIndex();
			if(index>0)
			{
				String newState=(String)listforward.get(index);
				setList(S2I(newState));
			}
		}
		else if(source==back)
		{
			int index=forward.getSelectedIndex();
			if(index>0)
			{
				String newState=(String)listback.get(index);
				setList(S2I(newState));
			}
		}
		return;
	}
	private int S2I(String s)
	{
		int i=s.indexOf(":");
		s=s.substring(0,i);
		Integer result=Integer.valueOf(s);
		return result.intValue();
	}
}

⌨️ 快捷键说明

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