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

📄 mainframe.java

📁 八数码拼图程序源码,可以实现初始8个数码顺序到目标8个数码顺序的自动拼图
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    jOptionPanel.add(jDSRadioButton,
                     new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0
                                            , GridBagConstraints.NORTHWEST,
                                            GridBagConstraints.HORIZONTAL,
                                            new Insets(4, 4, 4, 4), 0, 0));
    jOptionPanel.add(jDeepPanel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
        , GridBagConstraints.CENTER, GridBagConstraints.NONE,
        new Insets(0, 0, 0, 0), 0, 0));

    jDataPanel.add(jOptionPanel, BorderLayout.SOUTH);
    jScrollPane1.getVerticalScrollBar().setUnitIncrement(10);
    listModel = new ListModel(this);
    jList1.setModel(listModel);
    jList1.setVisibleRowCount(10);
    jList1.setFixedCellWidth(100);
    buttonGroup1.add(jBreadthRadioButton);
    buttonGroup1.add(jBSRadioButton);
    buttonGroup1.add(jDSRadioButton);
    buttonGroup1.add(jDepthRadioButton);

    jPanel4.setLayout(new BoxLayout(jPanel4, BoxLayout.Y_AXIS));
    jPanel4.add(jList1);
    jPanel4.add(jScrollPane1);
    jScrollPane1.getViewport().setView(jList1); ///特别注意,本语句只能在上面的语句后才能执行
    jButtonPanel.setLayout(new FlowLayout());
    jButtonPanel.add(jButtonRun);
    jButtonPanel.add(jButtonDisplay);
    jDataPanel.add(jPanel4, java.awt.BorderLayout.CENTER);
    jDataPanel.add(jButtonPanel, java.awt.BorderLayout.NORTH);
  }

  void this_windowOpened(WindowEvent e) {
    jDrawStartPanel.addCodes(new int[][] { {1, 2, 3}, {4, 5, 6}, {7, 8, 0}
    });
    jDrawTargetPanel.addCodes(new int[][] { {1, 2, 3}, {4, 5, 6}, {7, 8, 0}
    });
    jDrawDisplayPanel.addCodes(new int[][] { {1, 2, 3}, {4, 5, 6}, {7, 8, 0}
    });
  }

  void this_windowActivated(WindowEvent e) {
    if (!isOpened) {
      isOpened = true;
      this_windowOpened(e);
    }
  }

  void jMenuFileExit_actionPerformed(ActionEvent e) {
    System.exit(0);
  }

  void jMenuAboutItem_actionPerformed(ActionEvent e) {
    MainFrame_AboutBox dlg = new MainFrame_AboutBox(this);
    Dimension dlgSize = dlg.getPreferredSize();
    Dimension frmSize = getSize();
    Point loc = getLocation();
    dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,
                    (frmSize.height - dlgSize.height) / 2 + loc.y);
    dlg.setModal(true);
    dlg.show();
  }

  public void jButtonRun_actionPerformed(ActionEvent actionEvent) {
    Node start, end;
    start = new Node(jDrawStartPanel.getData());
    end = new Node(jDrawTargetPanel.getData());
    if(end.getParity()!=start.getParity()){
      messageBox("无法从起始状态到达目标状态");
      return;
    }
    seeker.setNodes(start, end);
    long t_start = System.currentTimeMillis();
    seeker.seek();
    listModel.addArray(seeker.getOptim());
    long t_end = System.currentTimeMillis();
    messageBox("耗时" + (t_end - t_start) + "毫秒");

  }

  public void jButtonDisplay_actionPerformed(ActionEvent actionEvent) {

    timer = new Thread(this);
    timer.start();
  }

  public void jList1_valueChanged(ListSelectionEvent listSelectionEvent) {
    jDrawDisplayPanel.addCodes( ( (ListModel) jList1.getModel()).getDataAt(
        jList1.getSelectedIndex()));
    jDrawDisplayPanel.repaint();
  }

  public void jSpinner1_valueChanged(ChangeEvent changeEvent) {
    seeker.setMaxDepth(spinnerNumberModel.getIntValue());
  }

  public void jRadioButton_actionPerformed(ActionEvent actionEvent) {
    JRadioButton rb = (JRadioButton) actionEvent.getSource();
    if (rb.equals(jBreadthRadioButton)) {
      seeker.setType(1);
    }
    else if (rb.equals(jBSRadioButton)) {
      seeker.setType(2);
    }
    else if(rb.equals(jDepthRadioButton)){
      seeker.setType(3);
    }
    else{
      seeker.setType(4);
    }
  }

  void messageBox(String message) {
    MessageDialog dlg = new MessageDialog(this, message, true);
    Dimension dlgSize = dlg.getPreferredSize();
    Dimension frmSize = getSize();
    Point loc = getLocation();
    dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,
                    (frmSize.height - dlgSize.height) / 2 + loc.y);
    dlg.show();
  }

  public void run() {
    try {
      int len = jList1.getModel().getSize();
      for (int i = 0; i < len; i++) {
        jList1.setSelectedIndex(i);
        timer.sleep(500);
      }
    }
    catch (Exception e) {}
  }
}

class MainFrame_jRadioButton_actionAdapter
    implements ActionListener {
  private MainFrame adaptee;
  MainFrame_jRadioButton_actionAdapter(MainFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent actionEvent) {
    adaptee.jRadioButton_actionPerformed(actionEvent);
  }
}

class MainFrame_jList1_listSelectionAdapter
    implements ListSelectionListener {
  private MainFrame adaptee;
  MainFrame_jList1_listSelectionAdapter(MainFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void valueChanged(ListSelectionEvent listSelectionEvent) {
    if (!listSelectionEvent.getValueIsAdjusting()) {
      adaptee.jList1_valueChanged(listSelectionEvent);
    }
  }
}

class MainFrame_jSpinner1_ChangedAdapter
    implements ChangeListener {
  private MainFrame adaptee;
  MainFrame_jSpinner1_ChangedAdapter(MainFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void stateChanged(ChangeEvent e) {
    adaptee.jSpinner1_valueChanged(e);
  }
}

class MainFrame_jButtonRun_actionAdapter
    implements ActionListener {
  private MainFrame adaptee;
  MainFrame_jButtonRun_actionAdapter(MainFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent actionEvent) {
    adaptee.jButtonRun_actionPerformed(actionEvent);
  }
}

class MainFrame_jButtonDisplay_actionAdapter
    implements ActionListener {
  private MainFrame adaptee;
  MainFrame_jButtonDisplay_actionAdapter(MainFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent actionEvent) {
    adaptee.jButtonDisplay_actionPerformed(actionEvent);
  }
}

class MainFrame_this_windowAdapter
    extends java.awt.event.WindowAdapter {
  MainFrame adaptee;

  MainFrame_this_windowAdapter(MainFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void windowActivated(WindowEvent e) {
    adaptee.this_windowActivated(e);
  }

  public void windowOpened(WindowEvent e) {
    adaptee.this_windowOpened(e);
  }
}

⌨️ 快捷键说明

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