五子棋1.0
一、学习代码:
package com.qq;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
public class FI extends JFrame {
int width=Toolkit.getDefaultToolkit().getScreenSize().width;
int height=Toolkit.getDefaultToolkit().getScreenSize().height;
int[][] allChess=new int[15][15];
boolean isblack=true;
boolean canPlay=true;
String message="黑方先行";
String blackMessage="无限制";
String whiteMessage="无限制";
public FI(){
this.setTitle("五子棋1.0");
this.setSize(500,500);
this.setLocation((width-500)/2,(height-500)/2);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setVisible(true);
this.repaint();/*如果该组件为轻量级组件,则优先调用该组件,否则,将调用此组件的更新方法*/
}
public void paint(Graphics g){
BufferedImage buf=new BufferedImage(500,500,BufferedImage.TYPE_INT_RGB);//宽、高、设置不透明
Graphics g1=buf.createGraphics();//给图片设置坐标
g1.setColor(new Color(0,169,158));
g1.fill3DRect(43,60,375,375,true);//将颜色填满图片
for(int i=0;i<=15;i++){
g1.setColor(Color.WHITE);
g1.drawLine(43,60+i*25,375+43,60+i*25);
g1.drawLine(43+i*25,60,43+i*25,375+60);
}
g1.setFont(new Font("黑体",Font.BOLD,200));//设置字体
g1.drawString("游戏信息:"+message,50,50);
g1.drawRect(30,440,180,40);//绘制路径
g1.drawRect(250,440,180,40);
g1.setFont(new Font("宋体",0,12));
g1.drawString("黑方时间:"+blackMessage,40,465);
g1.drawString("白方时间:"+whiteMessage,260,465);
g1.drawRect(430,66,55,20);
g1.drawString("重新开始",432,80);
g1.drawRect(430,106,55,20);
g1.drawString("游戏设置",432,120);
g1.drawRect(430,146,55,20);
g1.drawString("游戏说明",432,160);
g1.drawRect(430,186,55,20);
g1.drawString("退出游戏",432,200);
g1.drawRect(430,246,55,20);
g1.drawString("悔棋",442,260);
g1.drawRect(430,286,55,20);
g1.drawString("认输",442,300);
g.drawImage(buf,0,0,this);
}
public static void main(String[] args){
new FI();
}
}
二、知识学习:
抽象窗口工具集
当利用AWT编写**图形用户界面时,实际上时在利用本地操作系统所提供的图形库。由于不同操作系统的图形库所提供的样式与功能不同,所以AWT所提供的图形功能是各种操作系统所提供的图形功能的交集**。
Component组件
基本组件:
组件名 | 功能 |
---|---|
Button | 按钮 |
Canvas | 用于绘画的画布 |
Checkbox | 复选框组件 |
CheckboxGroup | 用于将多个Checkbox 组件组合成一组, 一组 Checkbox 组件将只有一个可以 被选中 , 即全部变成单选框组件 |
Choice | 下拉选择框 |
Frame | 窗口 , 在 GUI 程序里通过该类创建窗口 |
Label | 标签类,用于放置提示性文本 |
List | JU表框组件,可以添加多项条目 |
Panel | 不能单独存在基本容器类,必须放到其他容器中 |
Scrollbar | 滑动条组件。如果需要用户输入位于某个范围的值 , 就可以使用滑动条组件 ,比如调 色板中设置 RGB 的三个值所用的滑动条。当创建一个滑动条时,必须指定它的方向、初始值、 滑块的大小、最小值和最大值。 |
ScrollPane | 带水平及垂直滚动条的容器组件 |
TextArea | 多行文本域 |
TextField | 单行文本框 |
Toolkit可以获得本机系统的屏幕的参数。具有把行图形数据转换为可显示的图像、返回字体信息、得出显示尺寸和分辨率以及获得系统属性信息的方法。
Graphics图像坐标系。坐标位于像素之间,描绘轮廓(四周边界)的操作,Graphics .drawRect(2,2,4,4),用一支画笔沿着坐标路径移动,由于画笔的尺寸通常为一个像素的高和一个像素的宽,使得实际绘制出的矩形的宽和高比设置多一个像素。eg:从(2,2)开始,向右4 (6,2),向下4 (6,6),向左4 (2,6),向上4 (2,2)。**Graphics.fillRect ()**填充形状。
Image是一个抽象类,BufferedImage是其实现类,是一个带缓冲区图像类,主要作用是将一幅图片加载到内存中(BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便地操作这个图片),提供获得绘图对象、图像缩放、选择图像平滑度等功能,通常用来做图片大小变换、图片变灰BufferdImage.TYPE_BYTE_GRAY、设置不透明BufferdImage.TYPE_INT_RGB、设置透明BufferdImage.TYPE_INT_ARGB等
-
import javax.swing.JFrame;
swing是图形可视包,导入这个包后才能进行GUI图形化软件的开发。Swing 的三个基本构造块:标签、按钮和文本字段;但是需要个地方安放它们。
JFrame是一个顶层的框架类,好比一个窗户的框子。也是一个容器类。这个框子可以嵌入几个玻璃窗。允许把其他组件添加到它里面,把它们组织起来,并把它们呈现出来。为了最大程度地简化组件,在独立于操作系统的 Swing 组件与实际运行这些组件的操作系统之间,JFrame 起着桥梁的作用。JFrame 在本机操作系统中是以窗口的形式注册的,这么做之后,就可以得到许多熟悉的操作系统窗口的特性:最小化/最大化、改变大小、移动。
设置窗口:
public FI(){ this.setTitle("五子棋1.0"); this.setSize(500,500); this.setLocation((width-500)/2,(height-500)/2); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(false); this.setVisible(true); this.repaint();/*如果该组件为轻量级组件,则优先调用该组件,否则,将调用此组件的更新方法*/ }