コード例 #1
0
  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);
  }