public RobotLocalizationViewer(EstimatorInterface l) { loc = l; this.rows = loc.getNumRows(); this.cols = loc.getNumCols(); this.head = loc.getNumHead(); runFlag = initFlag = false; sXCount = sYCount = 0; tXCount = tYCount = tHCount = 0; viewer = new JFrame("RobotLocalizer"); viewer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); viewer.setResizable(false); JPanel fieldPanel = new JPanel(); Dimension dState = new Dimension(30, 30); Dimension dPos = new Dimension(90, 90); fieldPanel.setLayout(new GridLayout(rows, cols)); positions = new JPanel[rows][cols]; states = new JTextField[rows][cols][5]; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { positions[i][j] = new JPanel(); positions[i][j].setPreferredSize(dPos); positions[i][j].setLayout(new BorderLayout()); for (int h = 0; h < 5; h++) { states[i][j][h] = new JTextField(); states[i][j][h].setPreferredSize(dState); states[i][j][h].setLayout(null); states[i][j][h].setBackground(Color.white); states[i][j][h].setText(""); states[i][j][h].setHorizontalAlignment(JTextField.CENTER); states[i][j][h].setBorder(javax.swing.BorderFactory.createEmptyBorder()); } positions[i][j].setBorder(new LineBorder(Color.black)); positions[i][j].add(states[i][j][0], BorderLayout.NORTH); positions[i][j].add(states[i][j][1], BorderLayout.EAST); positions[i][j].add(states[i][j][2], BorderLayout.SOUTH); positions[i][j].add(states[i][j][3], BorderLayout.WEST); positions[i][j].add(states[i][j][4], BorderLayout.CENTER); fieldPanel.add(positions[i][j]); } } JPanel buttonPanel = new JPanel(); JButton initButton = new JButton("Init filter"); initButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { initLocViewer(); } }); JButton stepButton = new JButton("One step"); stepButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { updateOneStep(); } }); JButton runButton = new JButton("Go"); runButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { setRunFlag(true); } }); JButton stopButton = new JButton("Stop"); stopButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { setRunFlag(false); } }); JPanel modelButtonPanel = new JPanel(); JButton transButton = new JButton("Show transitions"); transButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { updateTransitionView(); } }); JButton sensorButton = new JButton("Show sensor"); sensorButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { updateSensorView(); } }); buttonPanel.add(initButton); buttonPanel.add(stepButton); buttonPanel.add(runButton); buttonPanel.add(stopButton); modelButtonPanel.setLayout(new GridLayout(2, 1)); modelButtonPanel.add(transButton); modelButtonPanel.add(sensorButton); viewer.add(fieldPanel, BorderLayout.CENTER); viewer.add(buttonPanel, BorderLayout.SOUTH); viewer.add(modelButtonPanel, BorderLayout.WEST); viewer.pack(); viewer.setVisible(true); }