2022.4.16 更新:Chess类 添加代码,消除棋子边缘的锯齿

C#窗体编写的五子棋、每一步都有注释

末尾提供全部代码(去掉注释,代码其实很少,C#窗体真方便!)

第一步.窗体界面

拖控件:拖两个 panel(面板)控件,三个 button(按钮)控件,一个 label(标签)控件

设属性:为一个 panel 控件的 Dock属性选择 Fill(填满),另一个选择 right(右侧)。其他属性 如背景颜色根据喜好设置

三个按钮的Text,分别设置为 开始游戏、重新开始、退出

label用来提示游戏状态,如白子回合还是黑子回合

第二步.私有成员,窗体 Load(加载)事件,和 初始化游戏 方法

 // 窗体程序public partial class Form1 : Form{private bool start;     // 游戏是否开始private bool ChessCheck = true;     // 白子黑子回合private const int size = 15;     // 棋盘大小private int[,] CheckBoard = new int[size, size];     // 棋盘点位数组public Form1(){InitializeComponent();}// "窗口"Load事件private void Form1_Load(object sender, EventArgs e){initializeGame();                      // 调用初始化游戏this.Width = MainSize.FormWidth;       // 设置窗口宽度this.Height = MainSize.FormHeight;     // 设置窗口高度this.Location = new Point(400,75);     // 设置窗口位置}// 初始化游戏private void initializeGame(){// 棋盘点位数组 重置为0for (int i = 0; i < size; i++){for (int j = 0; j < size; j++){CheckBoard[i, j] = 0;}}start = false;                         // 未开始label1.Text = "游戏未开始";            // 提示文本改为"游戏未开始"button1.Visible = true;                // 显示'开始游戏'按钮button4.Visible = false;               // 隐藏'重新开始'按钮}

第三步.MainSize类(用来说明 窗口大小、棋盘大小等)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace day11_01
{// 成员大小类class MainSize{// 窗口大小public static int FormWidth { get { return 710; } }public static int FormHeight { get { return 640; } }// 棋盘大小public static int CBoardWidth { get { return 600; } }public static int CBoardHeight { get { return 600; } }// 棋格宽度public static int CBoardGap { get { return 40; } }// 棋子直径public static int ChessDiameter { get { return 37; } }}
}

第四步.ChessBoard棋盘类(用来 画棋盘)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;namespace day11_01
{// 棋盘类class ChessBoard{// 画棋盘方法public static void DrawCB(Graphics g)  //这里的形参,是画布对象{int GapWidth = MainSize.CBoardGap;                   // 棋格宽度int GapNum = MainSize.CBoardWidth / GapWidth - 1;    // 棋格数量Bitmap image = new Bitmap("D:\\C语言\\代码\\day11\\day11_01_image\\CheckBoard1.png"); // 棋盘位图路径g.DrawImage(image, new Point[] { new Point(0, 0), new Point(GapWidth * GapNum + 44, 0), new Point(0, GapWidth * GapNum + 44) }); // 画棋盘图片/* 这个是 没有用棋盘图片时,用的“画笔”画棋盘方法g.Clear(Color.Bisque);                               // 清除画布、并用Bisque颜色填满画布Pen pen = new Pen(Color.FromArgb(192, 166, 107));    // 实例化画笔// 画棋盘for (int i = 0; i < GapNum + 1; i++){g.DrawLine(pen, new Point(20, i * GapWidth + 20), new Point(GapWidth * GapNum + 20, i * GapWidth + 20));g.DrawLine(pen, new Point(i * GapWidth + 20, 20), new Point(i * GapWidth + 20, GapWidth * GapNum + 20));}*/}}
}

第五步.Chess棋子类(用来画鼠标点击处的棋子、且页面重新聚集时,重新加载之前的棋子)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Drawing2D;     // 使支持渐变画刷namespace day11_01
{// 棋子类class Chess{// 画棋子public static void DrawC(Panel p, bool ChessCheck, int PlacementX, int PlacementY){Graphics g = p.CreateGraphics();                // 创建面板画布// 消除棋子边缘的锯齿(后面加的,博客的图片没更新)g.SmoothingMode = SmoothingMode.HighQuality;g.InterpolationMode = InterpolationMode.HighQualityBicubic;int AccurateX = PlacementX * MainSize.CBoardGap + 20 - 17; // 精确棋子的X中心位置int AccurateY = PlacementY * MainSize.CBoardGap + 20 - 17; // 精确棋子的Y中心位置// 判断谁的回合并画棋子if (ChessCheck){// 线性渐变会平铺整个面板,根据你的位置填颜色,从上至下渐变,使棋子具有真实感g.FillEllipse(new LinearGradientBrush(new Point(20, 0), new Point(20, 40), Color.FromArgb(122, 122, 122), Color.FromArgb(0, 0, 0)), new Rectangle(new Point(AccurateX, AccurateY), new Size(MainSize.ChessDiameter, MainSize.ChessDiameter))); }else{g.FillEllipse(new LinearGradientBrush(new Point(20, 0), new Point(20, 40), Color.FromArgb(255, 255, 255), Color.FromArgb(204, 204, 204)), new Rectangle(new Point(AccurateX, AccurateY), new Size(MainSize.ChessDiameter, MainSize.ChessDiameter)));}}// 界面重新聚焦时,重新加载棋子public static void ReDrawC(Panel p,int[,] CheckBoard){Graphics g = p.CreateGraphics();                // 创建面板画布// 消除棋子边缘的锯齿g.SmoothingMode = SmoothingMode.HighQuality;g.InterpolationMode = InterpolationMode.HighQualityBicubic;// 遍历 获取棋盘数组的每行for (int i = 0; i < CheckBoard.GetLength(1); i++){// 遍历 获取棋盘数组每行的每列for (int j = 0; j < CheckBoard.GetLength(0); j++){int Judgment = CheckBoard[j, i];        // 判断数组当前行列,白子还是黑子回合,0表示没有,1表示黑子,2表示白子// 判断是否有棋子if (Judgment != 0){int AccurateX = j * MainSize.CBoardGap + 20 - 17; // 精确棋子的X中心位置int AccurateY = i * MainSize.CBoardGap + 20 - 17; // 精确棋子的Y中心位置// 判断谁的回合并画棋子if (Judgment == 1){// 线性渐变会平铺整个面板,根据你的位置填颜色,从上至下渐变,使棋子具有真实感g.FillEllipse(new LinearGradientBrush(new Point(20, 0), new Point(20, 40), Color.FromArgb(122, 122, 122), Color.FromArgb(0, 0, 0)), new Rectangle(new Point(AccurateX, AccurateY), new Size(MainSize.ChessDiameter, MainSize.ChessDiameter)));}else{g.FillEllipse(new LinearGradientBrush(new Point(20, 0), new Point(20, 40), Color.FromArgb(255, 255, 255), Color.FromArgb(204, 204, 204)), new Rectangle(new Point(AccurateX, AccurateY), new Size(MainSize.ChessDiameter, MainSize.ChessDiameter)));}}}}}}
}

第六步.两个 panel(面板)的Paint(重绘窗体时发生)事件(分别代表棋盘,和控制界面)

     // 面板"棋盘"Paint事件private void panel1_Paint(object sender, PaintEventArgs e){Graphics g = panel1.CreateGraphics();      // 创建面板画布ChessBoard.DrawCB(g);                      // 调用画棋盘方法Chess.ReDrawC(panel1, CheckBoard);         // 调用重新加载棋子方法}// 面板"控制界面"Paint事件private void panel2_Paint(object sender, PaintEventArgs e){// 设置控制界面的大小panel2.Size = new Size(MainSize.FormWidth - MainSize.CBoardWidth - 20, MainSize.FormHeight);}

第七步.三个按钮 Click(点击)事件(开始游戏、重新开始、退出)

     // 按钮"开始游戏"CLick事件private void button1_Click(object sender, EventArgs e){start = true;                              // 开始ChessCheck = true;                         // 黑子回合label1.Text = "黑子回合";                  // 提示文本改为"黑子回合"button1.Visible = false;                   // 隐藏'开始游戏'按钮button4.Visible = true;                    // 显示'重新开始'按钮panel1.Invalidate();                       // 重绘面板"棋盘"}// 按钮"重新开始"CLick事件private void button4_Click(object sender, EventArgs e){// 确认是否重新开始if (MessageBox.Show("确认要重新开始?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK){initializeGame();                      // 调用初始化游戏方法button1_Click(sender, e);              // 调用按钮"开始游戏"Click事件}}// 按钮"退出"CLick事件private void button5_Click(object sender, EventArgs e){this.Dispose();                            // 退出窗口}

第八步.面板 “棋盘” 的 MouseDown(鼠标点击)事件(在点击位置画棋子)

     // 面板"棋盘"MouseDown事件private void panel1_MouseDown(object sender, MouseEventArgs e){// 判断游戏是否开始if (start){int Judgment = 0;            // 判断数组当前行列,白子还是黑子回合,0表示没有,1表示黑子,2表示白子、用来判断胜利int PlacementX = e.X / MainSize.CBoardGap;      // 求鼠标点击的X方向的第几个点位int PlacementY = e.Y / MainSize.CBoardGap;      // 求鼠标点击的Y方向的第几个点位try{// 判断此位置是否为空if (CheckBoard[PlacementX, PlacementY] != 0){return;                                 // 此位置有棋子}// 黑子回合还是白子回合if (ChessCheck){CheckBoard[PlacementX, PlacementY] = 1; // 黑子回合Judgment = 1;                           // 切换为判断黑子label1.Text = "白子回合";               // 提示文本改为"白子回合"}else{CheckBoard[PlacementX, PlacementY] = 2; // 白子回合Judgment = 2;                           // 切换为判断白子label1.Text = "黑子回合";               // 提示文本改为"黑子回合"}Chess.DrawC(panel1, ChessCheck, PlacementX, PlacementY);  // 画棋子// 胜利判断if (WinJudgment.ChessJudgment(CheckBoard, Judgment)){// 判断黑子还是白子胜利if (Judgment == 1){MessageBox.Show("五连珠,黑胜!", "胜利提示");    // 提示黑胜}else{MessageBox.Show("五连珠,白胜!", "胜利提示");    // 提示白胜}initializeGame();                      // 调用初始化游戏}ChessCheck = !ChessCheck;                   // 换棋子}catch(Exception) { }                            // 防止鼠标点击边界,导致数组越界}else{MessageBox.Show("请先开始游戏!", "提示");      // 提示开始游戏}}

第九步.WinJudgment胜利判断类(用来判断胜利)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace day11_01
{// 胜利判断class WinJudgment{// 棋子判断public static bool ChessJudgment(int[,] CheckBoard, int Judgment){bool Win = false;         // 胜利判断// 遍历 获取棋盘数组的每行for (int i = 0; i < CheckBoard.GetLength(1); i++){// 遍历 获取棋盘数组每行的每列for (int j = 0; j < CheckBoard.GetLength(0); j++){// 判断是否有棋子if (CheckBoard[j, i] == Judgment){// 水平判断if (j < 11){if (CheckBoard[j + 1, i] == Judgment && CheckBoard[j + 2, i] == Judgment && CheckBoard[j + 3, i] == Judgment && CheckBoard[j + 4, i] == Judgment){return Win = true;}}// 垂直判断if (i < 11){if (CheckBoard[j, i + 1] == Judgment && CheckBoard[j, i + 2] == Judgment && CheckBoard[j, i + 3] == Judgment && CheckBoard[j, i + 4] == Judgment){return Win = true;}}// 右下判断if (j < 11 && i < 11){if (CheckBoard[j + 1, i + 1] == Judgment && CheckBoard[j + 2, i + 2] == Judgment && CheckBoard[j + 3, i + 3] == Judgment && CheckBoard[j + 4, i + 4] == Judgment){return Win = true;}}// 左下判断if (j > 3 && i < 11){if (CheckBoard[j - 1, i + 1] == Judgment && CheckBoard[j - 2, i + 2] == Judgment && CheckBoard[j - 3, i + 3] == Judgment && CheckBoard[j - 4, i + 4] == Judgment){return Win = true;}}}}}return Win;}}
}

运行效果


全部源码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace day11_01
{// 窗体程序public partial class Form1 : Form{private bool start;     // 游戏是否开始private bool ChessCheck = true;     // 白子黑子回合private const int size = 15;     // 棋盘大小private int[,] CheckBoard = new int[size, size];     // 棋盘点位数组public Form1(){InitializeComponent();}// "窗口"Load事件private void Form1_Load(object sender, EventArgs e){initializeGame();                      // 调用初始化游戏this.Width = MainSize.FormWidth;       // 设置窗口宽度this.Height = MainSize.FormHeight;     // 设置窗口高度this.Location = new Point(400,75);     // 设置窗口位置}// 初始化游戏private void initializeGame(){// 棋盘点位数组 重置为0for (int i = 0; i < size; i++){for (int j = 0; j < size; j++){CheckBoard[i, j] = 0;}}start = false;                         // 未开始label1.Text = "游戏未开始";            // 提示文本改为"游戏未开始"button1.Visible = true;                // 显示'开始游戏'按钮button4.Visible = false;               // 隐藏'重新开始'按钮}// 按钮"开始游戏"CLick事件private void button1_Click(object sender, EventArgs e){start = true;                              // 开始ChessCheck = true;                         // 黑子回合label1.Text = "黑子回合";                  // 提示文本改为"黑子回合"button1.Visible = false;                   // 隐藏'开始游戏'按钮button4.Visible = true;                    // 显示'重新开始'按钮panel1.Invalidate();                       // 重绘面板"棋盘"}// 按钮"重新开始"CLick事件private void button4_Click(object sender, EventArgs e){// 确认是否重新开始if (MessageBox.Show("确认要重新开始?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK){initializeGame();                      // 调用初始化游戏方法button1_Click(sender, e);              // 调用按钮"开始游戏"Click事件}}// 按钮"退出"CLick事件private void button5_Click(object sender, EventArgs e){this.Dispose();                            // 退出窗口}// 面板"棋盘"Paint事件private void panel1_Paint(object sender, PaintEventArgs e){Graphics g = panel1.CreateGraphics();      // 创建面板画布ChessBoard.DrawCB(g);                      // 调用画棋盘方法Chess.ReDrawC(panel1, CheckBoard);         // 调用重新加载棋子方法}// 面板"控制界面"Paint事件private void panel2_Paint(object sender, PaintEventArgs e){// 设置控制界面的大小panel2.Size = new Size(MainSize.FormWidth - MainSize.CBoardWidth - 20, MainSize.FormHeight);}// 面板"棋盘"MouseDown事件private void panel1_MouseDown(object sender, MouseEventArgs e){// 判断游戏是否开始if (start){int Judgment = 0;            // 判断数组当前行列,白子还是黑子回合,0表示没有,1表示黑子,2表示白子、用来判断胜利int PlacementX = e.X / MainSize.CBoardGap;      // 求鼠标点击的X方向的第几个点位int PlacementY = e.Y / MainSize.CBoardGap;      // 求鼠标点击的Y方向的第几个点位try{// 判断此位置是否为空if (CheckBoard[PlacementX, PlacementY] != 0){return;                                 // 此位置有棋子}// 黑子回合还是白子回合if (ChessCheck){CheckBoard[PlacementX, PlacementY] = 1; // 黑子回合Judgment = 1;                           // 切换为判断黑子label1.Text = "白子回合";               // 提示文本改为"白子回合"}else{CheckBoard[PlacementX, PlacementY] = 2; // 白子回合Judgment = 2;                           // 切换为判断白子label1.Text = "黑子回合";               // 提示文本改为"黑子回合"}Chess.DrawC(panel1, ChessCheck, PlacementX, PlacementY);  // 画棋子// 胜利判断if (WinJudgment.ChessJudgment(CheckBoard, Judgment)){// 判断黑子还是白子胜利if (Judgment == 1){MessageBox.Show("五连珠,黑胜!", "胜利提示");    // 提示黑胜}else{MessageBox.Show("五连珠,白胜!", "胜利提示");    // 提示白胜}initializeGame();                      // 调用初始化游戏}ChessCheck = !ChessCheck;                   // 换棋子}catch(Exception) { }                            // 防止鼠标点击边界,导致数组越界}else{MessageBox.Show("请先开始游戏!", "提示");      // 提示开始游戏}}}
}using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace day11_01
{// 成员大小类class MainSize{// 窗口大小public static int FormWidth { get { return 710; } }public static int FormHeight { get { return 640; } }// 棋盘大小public static int CBoardWidth { get { return 600; } }public static int CBoardHeight { get { return 600; } }// 棋格宽度public static int CBoardGap { get { return 40; } }// 棋子直径public static int ChessDiameter { get { return 37; } }}
}using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;namespace day11_01
{// 棋盘类class ChessBoard{// 画棋盘方法public static void DrawCB(Graphics g){int GapWidth = MainSize.CBoardGap;                   // 棋格宽度int GapNum = MainSize.CBoardWidth / GapWidth - 1;    // 棋格数量Bitmap image = new Bitmap("D:\\C语言\\代码\\day11\\day11_01_image\\CheckBoard1.png"); // 棋盘位图路径g.DrawImage(image, new Point[] { new Point(0, 0), new Point(GapWidth * GapNum + 44, 0), new Point(0, GapWidth * GapNum + 44) }); // 画棋盘图片/*Pen pen = new Pen(Color.FromArgb(192, 166, 107));    // 实例化画笔// 画棋盘for (int i = 0; i < GapNum + 1; i++){g.DrawLine(pen, new Point(20, i * GapWidth + 20), new Point(GapWidth * GapNum + 20, i * GapWidth + 20));g.DrawLine(pen, new Point(i * GapWidth + 20, 20), new Point(i * GapWidth + 20, GapWidth * GapNum + 20));}*/}}
}using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Drawing2D;namespace day11_01
{// 棋子类class Chess{// 画棋子public static void DrawC(Panel p, bool ChessCheck, int PlacementX, int PlacementY){Graphics g = p.CreateGraphics();                // 创建面板画布// 消除棋子边缘的锯齿(后面加的,博客的图片没更新)g.SmoothingMode = SmoothingMode.HighQuality;g.InterpolationMode = InterpolationMode.HighQualityBicubic;int AccurateX = PlacementX * MainSize.CBoardGap + 20 - 17; // 精确棋子的X中心位置int AccurateY = PlacementY * MainSize.CBoardGap + 20 - 17; // 精确棋子的Y中心位置// 判断谁的回合并画棋子if (ChessCheck){// 线性渐变会平铺整个面板,根据你的位置填颜色,从上至下渐变,使棋子具有真实感g.FillEllipse(new LinearGradientBrush(new Point(20, 0), new Point(20, 40), Color.FromArgb(122, 122, 122), Color.FromArgb(0, 0, 0)), new Rectangle(new Point(AccurateX, AccurateY), new Size(MainSize.ChessDiameter, MainSize.ChessDiameter)));}else{g.FillEllipse(new LinearGradientBrush(new Point(20, 0), new Point(20, 40), Color.FromArgb(255, 255, 255), Color.FromArgb(204, 204, 204)), new Rectangle(new Point(AccurateX, AccurateY), new Size(MainSize.ChessDiameter, MainSize.ChessDiameter)));}}// 界面重新聚焦时,重新加载棋子public static void ReDrawC(Panel p,int[,] CheckBoard){Graphics g = p.CreateGraphics();                // 创建面板画布// 消除棋子边缘的锯齿g.SmoothingMode = SmoothingMode.HighQuality;g.InterpolationMode = InterpolationMode.HighQualityBicubic;// 遍历 获取棋盘数组的每行for (int i = 0; i < CheckBoard.GetLength(1); i++){// 遍历 获取棋盘数组每行的每列for (int j = 0; j < CheckBoard.GetLength(0); j++){int Judgment = CheckBoard[j, i];        // 判断数组当前行列,白子还是黑子回合,0表示没有,1表示黑子,2表示白子// 判断是否有棋子if (Judgment != 0){int AccurateX = j * MainSize.CBoardGap + 20 - 17; // 精确棋子的X中心位置int AccurateY = i * MainSize.CBoardGap + 20 - 17; // 精确棋子的Y中心位置// 判断谁的回合并画棋子if (Judgment == 1){g.FillEllipse(new LinearGradientBrush(new Point(20, 0), new Point(20, 40), Color.FromArgb(122, 122, 122), Color.FromArgb(0, 0, 0)), new Rectangle(new Point(AccurateX, AccurateY), new Size(MainSize.ChessDiameter, MainSize.ChessDiameter)));}else{g.FillEllipse(new LinearGradientBrush(new Point(20, 0), new Point(20, 40), Color.FromArgb(255, 255, 255), Color.FromArgb(204, 204, 204)), new Rectangle(new Point(AccurateX, AccurateY), new Size(MainSize.ChessDiameter, MainSize.ChessDiameter)));}}}}}}
}using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace day11_01
{// 胜利判断class WinJudgment{// 棋子判断public static bool ChessJudgment(int[,] CheckBoard, int Judgment){bool Win = false;         // 胜利判断// 遍历 获取棋盘数组的每行for (int i = 0; i < CheckBoard.GetLength(1); i++){// 遍历 获取棋盘数组每行的每列for (int j = 0; j < CheckBoard.GetLength(0); j++){// 判断是否有棋子if (CheckBoard[j, i] == Judgment){// 水平判断if (j < 11){if (CheckBoard[j + 1, i] == Judgment && CheckBoard[j + 2, i] == Judgment && CheckBoard[j + 3, i] == Judgment && CheckBoard[j + 4, i] == Judgment){return Win = true;}}// 垂直判断if (i < 11){if (CheckBoard[j, i + 1] == Judgment && CheckBoard[j, i + 2] == Judgment && CheckBoard[j, i + 3] == Judgment && CheckBoard[j, i + 4] == Judgment){return Win = true;}}// 右下判断if (j < 11 && i < 11){if (CheckBoard[j + 1, i + 1] == Judgment && CheckBoard[j + 2, i + 2] == Judgment && CheckBoard[j + 3, i + 3] == Judgment && CheckBoard[j + 4, i + 4] == Judgment){return Win = true;}}// 左下判断if (j > 3 && i < 11){if (CheckBoard[j - 1, i + 1] == Judgment && CheckBoard[j - 2, i + 2] == Judgment && CheckBoard[j - 3, i + 3] == Judgment && CheckBoard[j - 4, i + 4] == Judgment){return Win = true;}}}}}return Win;}}
}
参考自:

https://blog.csdn.net/lfy905805357/article/details/81123656

.

新加了 悔棋棋盘下满 时的判断!
https://blog.csdn.net/qq_51756226/article/details/117604992

.

视频手把手教:

https://www.bilibili.com/video/BV1Kf4y1Y7ct

C#窗体程序编写 • 【五子棋】相关推荐

  1. C#窗体程序编写,猜数字游戏(几A几B)

    游戏玩法: 随机四位数,每猜一次,就会根据猜的数字给出几A几B, 其中A前面的数字表示位置正确的数的个数, 而B前的数字表示数字正确而位置不对的数的个数. 获胜条件:4A0B 如正确答案为5543, ...

  2. python 开发窗体应用程序_Python如何编写窗体程序

    Python如何编写窗体程序 python和很多软件的用法其实差不多,只是代码更为简洁,代码量没这么多. 窗体的写法也和java类似,现在举个例子:编写一个点名器,有一个按钮当被点击时,会随机产生一个 ...

  3. Java 编写航班查询系统 窗体程序 完整源码

    开发环境 开发语言为Java,开发环境Eclipse或者IDEA都可以.数据库采用:MySQL.运行主程序,或者执行打开JAR文件即可以运行本程序. 系统框架 利用JDK自带的SWING框架开发,需要 ...

  4. 使用Delphi编写自动关闭Windows信使服务窗体程序

    使用Delphi编写自动关闭Windows信使服务窗体程序 Windows信使服务是Windows为了方便尽心系统管理而设置的一项工具,初衷是很好的可以使得管理员方便的在局域网内发布消息给各个用户. ...

  5. C#中实现视频播放器窗体程序(附源码下载)

    场景 效果 实现 新建窗体程序,然后从工具箱中拖拽DataGridView控件,然后在控件右上角点击新增列,设置好每列 的Name属性和Headertext属性. 新建Video类 项目-右击-新增- ...

  6. CS中实现简单的注册验证窗体程序

    场景 效果 实现 打开VS,新建窗体程序 快捷键ctrl+alt+x打开工具箱,拖拽label.TextBox.Button,实现注册窗体布局. 在输入框TextBox后面还有对应的提示用的label ...

  7. javafx窗体程序_JavaFX真实世界应用程序:EIZO CuratOR Caliop

    javafx窗体程序 JavaFX Real-World应用程序第四号称为Caliop . 它是EIZO为医院手术室开发的CuratOR解决方案的前端. 前端在壁挂式控制台上运行,并允许操作团队查找有 ...

  8. javafx窗体程序_JavaFX实际应用程序:AISO HRC-Matic

    javafx窗体程序 " Real-World JavaFX Apps"系列中的第三个应用程序是一种重型数据输入应用程序,由称为HRC-Matic的关系数据库支持. 它由AISO在 ...

  9. java编写某计算器控制台程序_用java程序编写一个计算器

    点击查看用java程序编写一个计算器具体信息 答:给你一个参考,希望不要被百度吞了当晚餐 import java.awt.BorderLayout; import java.awt.GridLayou ...

最新文章

  1. 牵引力教育设计总监解密9大2018潮流UI设计趋向
  2. python批处理修改文件的名字
  3. 解决在使用numpy.polyfit 时出现的 raise LinAlgError(“SVD did not converge in Linear Least Squares“)错误
  4. 支持多种小程序!阿里云ARMS推出小程序监控
  5. acwing算法题--整数分解
  6. MAVEN 自定义骨架
  7. Photoshop用户必知必会的28个快捷键
  8. memento模式_Java中的Memento设计模式-示例教程
  9. Agrona的Threadsafe堆外缓冲区
  10. [zz]Maya C++ API Programming Tips
  11. Struts2标签库整理【完整】
  12. html 获取mac地址,JS获取客户端IP地址与MAC地址示例
  13. Android系统分辨率修改方法,Android:系统分辨率的修改
  14. c语言中十六进制可以直接和十进制运算吗,C语言 · 十六进制转十进制
  15. BZOJ.3097 Hash Killer 1(卡掉自然溢出法)
  16. springboot设置空参数_springboot请求参数为空
  17. DFS搜索和输出所有路径
  18. php 返回英文乱码,使用php 5时MySQL返回乱码的解决办法_php
  19. 电脑屏幕由刺眼的白色改为淡绿色
  20. 一文了解 TKG 如何使用 GPU 资源池

热门文章

  1. 海康威视监控主机如何管理大华摄像枪
  2. 【机器学习】类不平衡 class-imbalance
  3. 定时每天凌晨一点在linux系统上执行一个autobuild.sh脚本如何实现?
  4. 传iPhone 6s Plus或配2K屏 分辨率全面飙升
  5. SQLite数据库操作及ListView组件
  6. 怎么设置linux系统字体颜色,如何修改linux系统字体颜色
  7. Dreamweaver正则表达式
  8. linux一台主机部署多版本mysql_Linux---一台主机部署多版本mysql服务和mysql实例
  9. 双冒号::和单冒号:的使用
  10. finereport 单元格计算记录