?? pssimulator.java
字號:
import java.awt.BorderLayout;import java.awt.Color;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.FileInputStream;import java.io.ObjectInputStream;import java.text.DecimalFormat;import java.util.Vector;import java.util.zip.GZIPInputStream;import javax.swing.BorderFactory;import javax.swing.DebugGraphics;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JComboBox;import javax.swing.JFileChooser;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JSeparator;import javax.swing.JTextField;import javax.swing.SwingConstants;import javax.swing.WindowConstants;import javax.swing.border.TitledBorder;public class PSSimulator extends javax.swing.JFrame implements ActionListener{ private JPanel jPanel; private JButton jLoadButton; private JSeparator jSeparator1; private JComboBox jComboBox1; private JButton jStepButton; private JButton jExecuteButton; private JFileChooser fc; private JLabel jLabelSqSize; private JTextField jDelayTextField; private JLabel jDelayLabel; private JLabel jMaxBULabel; private JTextField jMaxBackUpsTextField; private JCheckBox jPolicyCheckBox; private JCheckBox jValuesCheckBox; private JButton jResetButton; private JButton jRefreshButton; private JLabel jStatusLabel; private JTextField jFileNameTextField; private JTextField jCyclesTextField; private JLabel jCyclesLabel; private JTextField sqSizeTextField; private JTextField jEpsilonTextField; private JTextField pjogTextField; private JLabel JLabelPJOG; private JLabel jLabelEpsilon; // private Algorithms alg = null;//this is commented for prioritized sweeping customization private Maze myMaze = null; private PrioritizedSweeping ps; private boolean ShowValue = true; private boolean ShowPolicy = true; private boolean Animate = true; private boolean Analyze = true; DecimalFormat df = new DecimalFormat("0.0"); private JScrollPane jScrollPane; private String mazeStatus = "Load Maze First..."; private String algorithmStatus = ""; private JCheckBox jAnimateCheckBox; private JButton jCycleButton; private JButton jEpisodeButton; private JButton jInitializeButton; private JButton jUpdateButton; public int sqSize=80; int X= 186; int Y= 100; Color GoldColor = new Color(200,100,55); private JLabel jLabelTinyThreshold; private JTextField jTinyThresholdTextField; { //Set Look & Feel try { javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch(Exception e) { e.printStackTrace(); } } /** * Auto-generated main method to display this JFrame */ public static void main(String[] args) { PSSimulator inst = new PSSimulator(); inst.setVisible(true); } public PSSimulator() { super("RL-MDP:Simulation"); initGUI(); } private void initGUI() { try { this.setSize(1000, 800); this.setExtendedState(MAXIMIZED_BOTH); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); { jPanel = new JPanel(); jPanel.setLayout(null); jPanel.setBackground(new java.awt.Color(235, 241, 238)); jPanel.setPreferredSize(new java.awt.Dimension(900, 700)); this.getContentPane().add(jPanel, BorderLayout.CENTER); } { jLoadButton = new JButton(); jPanel.add(jLoadButton); jLoadButton.setText("LoadMaze..."); jLoadButton.setBounds(25, 62, 110, 28); jLoadButton.setActionCommand("LoadMaze"); jLoadButton.addActionListener(this); } { JLabelPJOG = new JLabel(); jPanel.add(JLabelPJOG); JLabelPJOG.setText("PJOG"); JLabelPJOG.setBounds(20, 126, 70, 21); JLabelPJOG.setHorizontalAlignment(SwingConstants.RIGHT); } { pjogTextField = new JTextField(); jPanel.add(pjogTextField); pjogTextField.setText("0.3"); pjogTextField.setBounds(95, 125, 40, 20); pjogTextField.setHorizontalAlignment(SwingConstants.RIGHT); } { jMaxBULabel = new JLabel(); jPanel.add(jMaxBULabel); jMaxBULabel.setText("Max BackUps"); jMaxBULabel.setBounds(20, 147, 70, 21); jMaxBULabel.setHorizontalAlignment(SwingConstants.RIGHT); } { jMaxBackUpsTextField = new JTextField(); jPanel.add(jMaxBackUpsTextField); jMaxBackUpsTextField.setText("50"); jMaxBackUpsTextField.setBounds(95, 149, 40, 20); jMaxBackUpsTextField.setHorizontalAlignment(SwingConstants.RIGHT); } { jLabelEpsilon = new JLabel(); jPanel.add(jLabelEpsilon); jLabelEpsilon.setText("Epsilon"); jLabelEpsilon.setBounds(20, 171, 70, 21); jLabelEpsilon.setHorizontalAlignment(SwingConstants.RIGHT); } { jEpsilonTextField = new JTextField(); jPanel.add(jEpsilonTextField); jEpsilonTextField.setText("0.1"); jEpsilonTextField.setBounds(95, 174, 40, 20); jEpsilonTextField.setHorizontalAlignment(SwingConstants.RIGHT); } { jLabelTinyThreshold = new JLabel(); jPanel.add(jLabelTinyThreshold); jLabelTinyThreshold.setText("Tiny Threshold"); jLabelTinyThreshold.setBounds(20, 195, 70, 21); jLabelTinyThreshold.setHorizontalAlignment(SwingConstants.RIGHT); } { jTinyThresholdTextField = new JTextField(); jPanel.add(jTinyThresholdTextField); jTinyThresholdTextField.setText("0.01"); jTinyThresholdTextField.setBounds(95, 198, 40, 20); jTinyThresholdTextField.setHorizontalAlignment(SwingConstants.RIGHT); } { jInitializeButton = new JButton(); jPanel.add(jInitializeButton); jInitializeButton.setText("Initialize"); jInitializeButton.setBounds(25, 223, 110, 28); jInitializeButton.addActionListener(this); jInitializeButton.setActionCommand("Initialize"); } { jUpdateButton = new JButton(); jPanel.add(jUpdateButton); jUpdateButton.setText("Update"); jUpdateButton.setBounds(25, 258, 110, 28); jUpdateButton.setActionCommand("Update"); jUpdateButton.addActionListener(this); } { jStepButton = new JButton(); jPanel.add(jStepButton); jStepButton.setText("Step"); jStepButton.setBounds(25, 314, 110, 28); jStepButton.addActionListener(this); jStepButton.setActionCommand("Step"); } { jEpisodeButton = new JButton(); jPanel.add(jEpisodeButton); jEpisodeButton.setText("Episode"); jEpisodeButton.setBounds(25, 350, 110, 28); jEpisodeButton.addActionListener(this); jEpisodeButton.setActionCommand("Episode"); } { jCyclesTextField = new JTextField(); jPanel.add(jCyclesTextField); jCyclesTextField.setText("1000"); jCyclesTextField.setBounds(25, 387, 35, 26); } { jCycleButton = new JButton(); jPanel.add(jCycleButton); jCycleButton.setText("Cycles"); jCycleButton.setBounds(65, 386, 70, 28); jCycleButton.addActionListener(this); jCycleButton.setActionCommand("Cycles"); } { jLabelSqSize = new JLabel(); jPanel.add(jLabelSqSize); jLabelSqSize.setText("Square Size"); jLabelSqSize.setBounds(20, 445, 70, 21); jLabelSqSize.setHorizontalAlignment(SwingConstants.RIGHT); } { sqSizeTextField = new JTextField(); jPanel.add(sqSizeTextField); sqSizeTextField.setText("80"); sqSizeTextField.setBounds(96, 446, 40, 20); sqSizeTextField.setHorizontalAlignment(SwingConstants.RIGHT); sqSizeTextField.addActionListener(this); } { jDelayLabel = new JLabel(); jPanel.add(jDelayLabel); jDelayLabel.setText("Delay(in ms)"); jDelayLabel.setBounds(22, 470, 70, 21); jDelayLabel.setHorizontalAlignment(SwingConstants.RIGHT); } { jDelayTextField = new JTextField(); jPanel.add(jDelayTextField); jDelayTextField.setText("30"); jDelayTextField.setBounds(96, 472, 40, 20); jDelayTextField.setHorizontalAlignment(SwingConstants.RIGHT); } { jRefreshButton = new JButton(); jPanel.add(jRefreshButton); jRefreshButton.setText("Refresh"); jRefreshButton.setBounds(26, 500, 110, 28); jRefreshButton.setActionCommand("Refresh"); jRefreshButton.addActionListener(this); } { jValuesCheckBox = new JCheckBox(); jPanel.add(jValuesCheckBox); jValuesCheckBox.setText("Show Values"); jValuesCheckBox.setBounds(35, 553, 93, 17); jValuesCheckBox.setOpaque(false); jValuesCheckBox.setSelected(true); jValuesCheckBox.addActionListener(this); } { jPolicyCheckBox = new JCheckBox(); jPanel.add(jPolicyCheckBox); jPolicyCheckBox.setText("Show Policy"); jPolicyCheckBox.setBounds(35, 573, 85, 17); jPolicyCheckBox.setOpaque(false); jPolicyCheckBox.setSelected(true); jPolicyCheckBox.addActionListener(this); } { jAnimateCheckBox = new JCheckBox(); jPanel.add(jAnimateCheckBox); jAnimateCheckBox.setText("Animate"); jAnimateCheckBox.setBounds(35, 593, 85, 17); jAnimateCheckBox.setOpaque(false); jAnimateCheckBox.setSelected(true); jAnimateCheckBox.addActionListener(this); } { jSeparator1 = new JSeparator(); jPanel.add(jSeparator1); jSeparator1.setBounds(161, 2, 4, 400); jSeparator1.setBorder(BorderFactory.createTitledBorder( null, "", TitledBorder.LEADING, TitledBorder.TOP, new java.awt.Font("MS Sans Serif", 0, 11), new java.awt.Color(0, 0, 0))); } { jStatusLabel = new JLabel(); jPanel.add(jStatusLabel); jStatusLabel.setText("Load Maze First..."); jStatusLabel.setBounds(182, 14, 770, 34); jStatusLabel.setBackground(new java.awt.Color(192,192,192)); jStatusLabel.setBorder(BorderFactory.createTitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, new java.awt.Font("MS Sans Serif",0,11), new java.awt.Color(0,0,0))); jStatusLabel.setFont(new java.awt.Font("Georgia",1,12)); jStatusLabel.setDebugGraphicsOptions(DebugGraphics.NONE_OPTION); jStatusLabel.setOpaque(true); jStatusLabel.setHorizontalAlignment(SwingConstants.CENTER); jStatusLabel.setPreferredSize(new java.awt.Dimension(984, 35)); } } catch (Exception e) { e.printStackTrace(); } } public void actionPerformed(ActionEvent evt) { if (evt.getActionCommand().equals("LoadMaze")) { Utility.show("Loading maze"); //fileChooser fc = new JFileChooser("./mazes/"); int returnVal = fc.showOpenDialog(PSSimulator.this); if (returnVal == JFileChooser.APPROVE_OPTION) { try { File file = fc.getSelectedFile(); FileInputStream fis = new FileInputStream(file); GZIPInputStream gzis = new GZIPInputStream(fis); ObjectInputStream in = new ObjectInputStream(gzis); myMaze = (Maze)in.readObject(); in.close();
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -