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