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

📄 creatwindow.java

📁 wiziqi
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package view;

import iniset.PropertySet;
import iniset.finals.SetDatas;

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

import vo.ChessPoint;
import vo.CursorsAndImg;
import vo.Enums;
import vo.sounds.Music;
import vo.sounds.Sound;
import dao.Battel;
import dilog.SysDilog;

/**
 * 生成一个窗口,并处理其中的各种按钮事件
 * 
 * @author B.Lee
 * 
 */
public class CreatWindow extends JFrame {
  private final JLabel head = new JLabel(CursorsAndImg.HEAD);

  private final JLabel boot = new JLabel(CursorsAndImg.BOOT);

  private final JLabel left = new JLabel(CursorsAndImg.LEFT);

  private final JLabel right = new JLabel(CursorsAndImg.RIGHT);

  private final JLabel toolbar = new JLabel(CursorsAndImg.TOOL_BAR);

  private final JLabel playerInf = new JLabel(CursorsAndImg.PLYER_INF);

  private final static JTextArea txtOne = new JTextArea();

  private final static JTextArea txtTwo = new JTextArea();

  private final Battel battel = new Battel(this);

  /** 存储各种信息 */
  private PropertySet propertySet = PropertySet.getPropertySet();

  /** 设置对话框 */
  private SysDilog sysDilog = null;

  /** 加入滚动栏以便显示全部数据 */
  private JScrollPane textPane = null;

  /** 用于播放背景音乐的类 */
  private Music music;
  
  /** 弹出菜单 */
  private JPopupMenu pop = null;
  
  /** 弹出菜单的子菜单 */
  private JMenuItem clear = null;

  /**
   * 构造函数
   * 
   * @param name
   *          窗口的名字
   */
  public CreatWindow(String name) {
    super(name);
    setResizable(false);
    setSize(1001, 737);
    setLayout(null);
    sysDilog = SysDilog.getSysDilog(this);
    // final SoundSet soundSet = new SoundSet();
    this.setIconImage(CursorsAndImg.FIVE.getImage());
    Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
    setLocation((scrSize.width - getSize().width) / 2,
        (scrSize.height - getSize().height) / 2);// 最佳位置

    music = new Music();

    head.setBounds(0, 0, 724, 85);
    boot.setBounds(0, 625, 724, 86);
    left.setBounds(0, 85, 92, 540);
    battel.setBounds(92, 85, 540, 540);
    right.setBounds(632, 85, 92, 540);
    toolbar.setBounds(726, 0, 268, 34);
    playerInf.setBounds(726, 35, 275, 133);

    txtOne.setBounds(726, 170, 268, 200);
    txtTwo.setBounds(726, 372, 268, 324);
    textPane = new JScrollPane(txtTwo);
    textPane.setBounds(726, 372, 268, 324);
    textPane
        .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    textPane
        .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    textPane.setWheelScrollingEnabled(true);// 响应鼠标滚轮

    txtOne.setBackground(new Color(76, 76, 76));
    txtOne.setFont(new Font("楷体", Font.BOLD, 12));
    txtOne.setForeground(Color.red);
    txtOne.setLineWrap(true); // 换 行
    txtOne.setEditable(false);// 不可编辑
    final String declare = new String("\n\t免责声明\n\n      该游戏是对腾讯QQ游戏中五"
        + "子棋的一个模拟,其中所用到的图片多数来自腾" + "讯QQ游戏中,图片的所有权归腾讯公司所有\n\n其余部分版权没有,盗版不究");
    txtOne.setText(declare);

    txtTwo.setBackground(new Color(76, 76, 76));
    txtTwo.setFont(new Font("楷体", Font.BOLD, 12));
    txtTwo.setForeground(Color.white);
    txtTwo.setLineWrap(true); // 自 动 换 行
    txtTwo.setEditable(false);// 不可编辑

    add(head);
    add(boot);
    add(left);
    add(battel);
    add(right);
    add(toolbar);
    add(playerInf);
    add(txtOne);
    add(textPane);
    
    pop = new JPopupMenu();
    clear = new JMenuItem("清除");
    pop.add(clear);

    if (propertySet.getMusic() == SetDatas.MUSIC_ON) {
      music.play();
    }

    this.setVisible(true);

    if (propertySet.getModel() == SetDatas.PEOPLE_VS_COMPUTER
        && propertySet.getFirst() == SetDatas.WHITE_FIRST) {// 如果是人与电脑对战且白棋先下则电脑下一个棋
      getBattel();
      getBattel().getchessPoint(new Point(15 / 2, 15 / 2)).setState(
          Enums.chessState.WHITE);// 电脑下棋
      getBattel().getchessPoint(new Point(15 / 2, 15 / 2)).setIcon(
          CursorsAndImg.WHITE_CHESS);
      // 加入路径
      getBattel().path.offerLast(getBattel().getchPoint()[15 / 2][15 / 2]);
      addTxtTwo("电脑下棋:     坐标(7" + ",    7" +  ");\n");
    }
    
    clear.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        setTxtTwo("");
      }
      
    });
    
    /**
     * 右键弹出菜单的事件聆听
     */
    txtTwo.addMouseListener(new MouseAdapter() {
      public void mousePressed(MouseEvent e) {
        if(e.getButton() == MouseEvent.BUTTON3) {
          System.out.println("弹出菜单");
          pop.show((Component) e.getSource(), e.getX(), e.getY());
        }
      }
    });
    
    this.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        JOptionPane.showMessageDialog(null, "谢谢使用!", "退出游戏",
            JOptionPane.WARNING_MESSAGE, CursorsAndImg.OUT);
        // soundSet.save();
        System.exit(0);
      }
    });

    /**
     * 内部类,下方按钮的实现
     */
    boot.addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent e) {
        int x = e.getX();
        int y = e.getY();
        if (x > 102 && x < 144 && y > 22 && y < 41) {// 按在了悔棋上
          if (propertySet.getRegret() == SetDatas.UN_REGRET_ABLE) {
            JOptionPane.showMessageDialog(null, "当前禁止悔棋,请更改设置");
            return;
          }

          if (getBattel().getEnd()) {// 游戏已经结束了悔棋不可用
            return;
          } else if (propertySet.getModel() == SetDatas.PEOPLE_VS_COMPUTER) {// 人机对战模式悔棋
            ChessPoint pointOfPath = new ChessPoint(Enums.chessState.NONE,
                new Point(0, 0));
            if (getBattel().path.size() > 2) {// 表示可以悔棋
              pointOfPath = getBattel().path.pollLast();
              pointOfPath.setState(Enums.chessState.NONE);
              pointOfPath.setIcon(CursorsAndImg.NONE_CHESS);
              pointOfPath = getBattel().path.pollLast();
              pointOfPath.setState(Enums.chessState.NONE);
              pointOfPath.setIcon(CursorsAndImg.NONE_CHESS);
              addTxtTwo("玩家悔棋,清除棋盘上的两颗棋..\n");
            } else {// 不可悔棋
              System.out.println("Run Here");
              JOptionPane.showMessageDialog(null, "非法悔棋方式!  请查看帮助", "出错啦",
                  JOptionPane.WARNING_MESSAGE);
            }
          } else { // 人人对战模式悔棋
            ChessPoint pointOfPath = new ChessPoint(Enums.chessState.NONE,
                new Point(0, 0));
            if (!getBattel().path.isEmpty()) {// 非空表示可以悔棋
              pointOfPath = getBattel().path.pollLast();

⌨️ 快捷键说明

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