java gui编程_第14篇-JAVA GUI编程

实例一:GUI记事本

GUI%E8%AE%B0%E4%BA%8B%E6%9C%AC.png

package cn.guis;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.FileNotFoundException;

import java.io.FileWriter;

import java.io.IOException;

import javax.swing.JEditorPane;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

/**

* 记事本

* @author JEEP-711

*

*/

@SuppressWarnings("serial")

public class GuiNotepad extends JFrame{

JEditorPane je = null;//定义成员

//构造器

public GuiNotepad(){

/**

* 绘制界面

*/

this.setLayout(null);

JLabel jb = new JLabel();

setTitle("记事本");//窗口标题

this.setBounds(615, 98,836,908);//设置窗口宽为536像素,高为408像素

je = new JEditorPane();//创建文本框对象

je.setText("\r\n");//提示

je.setFont(new java.awt.Font("Dialog",1, 20));//设置字体样式

je.setSize(836,908);//设置宽高

add(je);//添加当前对象

setResizable(false);// 设置窗体是否可以调整大小,参数为布尔值

this.add(jb);//将其加入到窗口当中

/**

* 设置窗口图标

*/

Toolkit kit = Toolkit.getDefaultToolkit();

Image image = kit.getImage("src//image//0x1f4dd.png"); //设置窗口图标路径

setIconImage(image); //换掉窗体样式

/**

* 绘制菜单

* 文件菜单

*

*/

JEditorPane jee = new JEditorPane();

JMenuBar jr = new JMenuBar();//创建菜单条对象

JMenu jm = new JMenu("文件");

//新建项

JMenuItem ji = new JMenuItem();//创建菜单项对象

ji.setText("新建");

//动作事件接口

ji.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

//jee.JEditorPane();//创建文本框对象

jee.setText("请输入内容: ");//提示

jee.setSize(836,908);//设置宽高

add(jee);//添加当前对象

}

});

this.add(ji);

/**

* 保存项

*/

JMenuItem bc = new JMenuItem("保存");//创建保存项

//动作事件接口

bc.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

try {

FileWriter fw = new FileWriter("src//记事本.txt",true);//实例化文件写入

fw.write(je.getText());//写入当前内容

fw.flush();//刷新

fw.close();//关闭流

System.out.println("成功保存");//提示

} catch (FileNotFoundException e1) {

e1.printStackTrace();

} catch (IOException e1) {

e1.printStackTrace();

} catch(NullPointerException e1){

System.out.println("您操作有误!");

}

}

});

this.add(bc);

/**

* 编辑菜单

*/

JMenu j1 = new JMenu(); //创建菜单对象

j1.setText("编辑");

JMenuItem jit = new JMenuItem();//创建菜单项对象

jit.setText("查找");

/**

* 格式菜单

*/

JMenu j2 = new JMenu(); //创建菜单格式对象

j2.setText("格式");

JMenuItem zt = new JMenuItem();//创建菜单项对象

zt.setText("字体");

/**

* 查看菜单

*/

JMenu j3 = new JMenu(); //创建菜单查看对象

j3.setText("查看");

JMenuItem ztl = new JMenuItem();//创建菜单项对象

ztl.setText("状态栏");

/**

* 帮助菜单

*/

JMenu j4 = new JMenu(); //创建菜单帮助对象

j4.setText("帮助");

JMenuItem jt = new JMenuItem();//创建菜单项对象

jt.setText("关于记事本");

/**

* 添加功能

*/

jm.add(ji);//把新建添加到菜单

jr.add(jm);//把菜单加载到菜单条

jr.add(j1);//把编辑添加到菜单条

j1.add(jit);//将查找添加到编辑

jr.add(j2);//把格式添加到菜单条

jr.add(j3);//把查看添加到菜单条

jr.add(j4);//把帮助添加到菜单条

j4.add(jt);//把关于记事本添加j4

j2.add(zt);//将字体加入到j2

j3.add(ztl);//将菜单项加入到菜单

jm.add(bc);//将保存加入到菜单

setDefaultCloseOperation(EXIT_ON_CLOSE);// 用户点击窗口关闭

this.setJMenuBar(jr);

this.setVisible(true);//设置是否窗口显示

}

//定义主方法

public static void main(String[] args){

new GuiNotepad();//调用方法

}

}

实例二:GUI用户猜数程序

GUI%E7%8C%9C%E6%95%B0%E6%B8%B8%E6%88%8F.png

package cn.gui;

import java.awt.Color;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Scanner;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextArea;

/**

* 猜数小程序

* @author JEEP-711

*

*/

@SuppressWarnings("serial")

public class Plays extends JFrame{

boolean flag = true;

Scanner info = new Scanner(System.in);

//构造方法

public Plays(){

/**

* 绘制界面

*/

this.setLayout(null);

JLabel jl = new JLabel();//实例化界面对象

setTitle("猜数游戏");//设置窗口标题

setResizable(false);//设置窗口不可调整大小

this.setBounds(560, 290,836, 510);//设置窗口大小

this.add(jl);//添加到窗口

/**

* 返回随机数文本输入框

*/

JTextArea jt = new JTextArea("游戏随机数:");//实例化文本框对象

jt.setBounds(215,105,140,50);//设置文本大小

jt.setFont(new java.awt.Font("宋体",0, 16));//设置字体样式

this.add(jt);//添加当前文本对象

jt.setBackground(new Color(231,210,181));

/**

* 用户输入数字文本框

*/

JTextArea ues = new JTextArea("请输入一个数字:");//实例化用户文本框对象

ues.setBounds(460,105,140,50);//设置文本大小

ues.setFont(new java.awt.Font("宋体",0, 15));//设置字体样式

this.add(ues);//添加当前文本对象

ues.setBackground(new Color(230,207,176));

/**

* 设置游戏开始按钮

*/

JButton jbn = new JButton("点击游戏开始");//实例化开始按钮对象

jbn.setBounds(218,205,140,50);//设置按钮位置

jbn.setFont(new java.awt.Font("Dialog",1, 15));//设置字体样式

jbn.setForeground(Color.white);//设置字体颜色

jbn.setBackground(new Color(8,163,219));//设置按钮颜色

//监听事件

jbn.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

//实例化线程

new Thread(new Runnable(){

@Override//覆写线程方法

public void run() {

//循环flag

while(flag){

int sj = (int)(Math.random()*95+5);//random*括号里的最大数减去最小数加最小数千位我认识的看风景阿斯蒂芬& & 聚少离多激发了考虑考虑我怎么知道扫你在哪啦圣诞节付款金额按乐山大佛萨顶顶 的

jt.setText(""+sj);//设置显示随机数框

try {

Thread.sleep(100);//睡眠100毫秒

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}).start();//开始线程

}});

this.add(jbn);//添加当前开始按钮

/**

* 停止以后输出结果

*/

JLabel jg = new JLabel("--公布游戏结果--");

jg.setBounds(330, 270, 200, 30);

jg.setFont(new java.awt.Font("宋体",0, 12));//设置字体样式

this.add(jg);

/**

* 设置游戏结束按钮

*/

JButton jtn = new JButton("点击结束游戏");//实例化结束按钮对象

jtn.setFont(new java.awt.Font("Dialog",1, 15));//设置字体样式

jtn.setBounds(420,205,140,50);//设置按钮位置

jtn.setForeground(Color.white);//设置字体颜色

jtn.setBackground(new Color(8,163,219));//设置按钮颜色

//监听事件

jtn.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

flag = false;//等于假就结束

//比较结果

if(ues.getText().equals(jt.getText())){

jg.setText("恭喜你猜对了,结果为:"+ues.getText());

}else{

jg.setText("你的输入不正确,"+"正确答案是:"+jt.getText());

}

}

});

this.add(jtn);//添加当前结束按钮

/**

* 设置窗口图标

*/

Toolkit kit = Toolkit.getDefaultToolkit();

Image image = kit.getImage("src//image//0x1f3ae.png"); //设置窗口图标路径

setIconImage(image); //换掉窗体样式

setDefaultCloseOperation(EXIT_ON_CLOSE);// 用户点击窗口关闭

/**

* 设置背景图片

*

*/

setSize(836, 510);//设置大小

String path = "src//image//timg.jpg";//设置背景图片的路径

ImageIcon background = new ImageIcon(path); // 背景图片

JLabel label = new JLabel(background);// 把背景图片显示在一个标签里面

label.setBounds(0, 0, this.getWidth(), this.getHeight()); // 把标签的大小位置设置为图片刚好填充整个面板

JPanel imagePanel = (JPanel) this.getContentPane(); // 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗& 格透明

imagePanel.setOpaque(false);

this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));// 把背景图片添加到分层窗格的最底层作为背景

this.setVisible(true);//设置是否窗口显示

}

//主方法

public static void main(String[] args) {

new Plays();//调用方法

}

}

实例三:GUI红绿灯程序

GUI%E7%BA%A2%E7%BB%BF%E7%81%AF.png

package cn.gui;

import java.awt.Color;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.AbstractButton;

import javax.swing.Icon;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextArea;

/**

* 交通警示灯-红 黄 绿 灯

* @author JEEP-711

*

*/

@SuppressWarnings({ "serial", "unused" })

public class WarningLight extends JFrame{

boolean flag = true;//定义成员属性,作为标记

//构造方法

public WarningLight(){

/**

* 绘制界面

*/

this.setLayout(null);

JLabel jl = new JLabel();//实例化界面对象

setTitle("交通信号灯程序");//设置标题

this.setBounds(515, 98,836,908);//设置窗口宽为836像素,高为908像素

this.add(jl);//将其加入到窗口当中

setResizable(false);// 设置窗体是否可以调整大小,参数为布尔值

setDefaultCloseOperation(EXIT_ON_CLOSE);// 用户点击窗口关闭

/**

* 设置开始按钮

*/

JButton begin = new JButton("点击开始");//实例化开始按钮

begin.setBounds(610,370,140,50);

begin.setFont(new java.awt.Font("Dialog",1, 15));//设置字体样式

begin.setForeground(Color.white);//设置字体颜色

begin.setBackground(new Color(8,163,219));//设置按钮颜色

/**

* 设置颜色

*/

// JTextArea area = new JTextArea();

// area.setBounds(200, 200, 400, 400);

// this.add(area);

/**

* 警示灯切换

*/

JLabel lb = new JLabel();//实例化对象

lb.setBounds(200,50,568,798);//设置宽高

jl.add(lb);//添加到jn里

this.add(lb);//添加当前的lb

/**

* 文字提示

*/

JLabel ts = new JLabel("交通信号提示");

ts.setBounds(586, 280, 200, 30);

ts.setFont(new java.awt.Font("黑体",1, 30));//设置字体样式

//jg.setForeground(Color.white);//设置字体颜色

add(ts);

//监听器,事件处理

begin.addActionListener(new ActionListener(){

@Override//覆写方法

public void actionPerformed(ActionEvent e) {

//匿名实例化线程

new Thread(new Runnable(){

@Override//覆写run方法

public void run() {

//循环标记

while(flag){

lb.setIcon(new ImageIcon("src//image//红灯.png"));//设置显示红灯png

lb.setSize(368,698);//设置宽高

//area.setBackground(Color.RED);

try {

ts.setText("红灯/停一停");

Thread.sleep(5200);//设置睡眠

} catch (InterruptedException e) {

e.printStackTrace();

}

lb.setIcon(new ImageIcon("src//image//黄灯.png"));//设置显示黄灯png

lb.setSize(368,698);//设置宽高

ts.setText("黄灯/等一等");

//area.setBackground(Color.YELLOW);

try {

Thread.sleep(2000);//设置睡眠

} catch (InterruptedException e) {

e.printStackTrace();

}

lb.setIcon(new ImageIcon("src//image//绿灯.png"));//设置显示绿灯png

lb.setSize(368,698);//设置宽高

ts.setText("绿灯/可通行");

// area.setBackground(Color.GREEN);

try {

Thread.sleep(5000);//设置睡眠

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}).start();//开启线程

}

});

this.add(begin);//添加当前按钮

/**

* 设置结束按钮

*/

JButton end = new JButton("点击结束");//实例化结束按钮

end.setBounds(610,432,140,50);

end.setFont(new java.awt.Font("Dialog",1, 15));//设置字体样式

end.setForeground(Color.white);//设置字体颜色

end.setBackground(new Color(8,163,219));//设置按钮颜色

//事件处理

end.addActionListener(new ActionListener(){

@Override//覆写方法

public void actionPerformed(ActionEvent e) {

flag=false;//结束进程

}

});

this.add(end);//添加当前结束按钮

/**

* 设置窗口图标

*/

Toolkit kit = Toolkit.getDefaultToolkit(); //创建窗口图标对象

Image image = kit.getImage("src//image//0x1f6a6.png"); //设置窗口图标路径

setIconImage(image); //换掉窗体样式

/**

* 设置背景图片

*

*/

setSize(839, 908);//设置大小

String path = "src//image//交通安全灯.jpg";//设置背景图片的路径

ImageIcon background = new ImageIcon(path); // 背景图片

JLabel label = new JLabel(background);// 把背景图片显示在一个标签里面

label.setBounds(0, 0, this.getWidth(), this.getHeight()); // 把标签的大小位置设置为图片刚好填充整个面板

JPanel imagePanel = (JPanel) this.getContentPane(); // 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗& 格透明

imagePanel.setOpaque(false);

this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));// 把背景图片添加到分层窗格的最底层作为背景

this.setVisible(true);//设置是否窗口显示

}

//定义主方法

public static void main(String[] args) {

new WarningLight();//调用方法

}

}

实例四:GUI单机五子棋程序

GUI%E4%BA%94%E5%AD%90%E6%A3%8B.png

package cn.gobang;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.util.ArrayList;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JComponent;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

/**

* 五子棋

* @author JEEP-711

*

*/

@SuppressWarnings("serial")

public class Gobangs extends JFrame{

/**

* 构造方法

*/

public Gobangs(){

/**

* 自定义组件

*/

this.setLayout(null);

this.setBounds(610, 140,630,630);//设置宽高

setTitle("国际五子棋");

setResizable(false);// 设置窗体是否可以调整大小,参数为布尔值

/**

* 开始按钮

*/

JButton dy = new JButton("开始对弈");//创建开始按钮

dy.setBounds(138,670,100,50);//设置位置

dy.setFont(new java.awt.Font("Dialog",1, 15));//设置字体样式

dy.setForeground(Color.white);//设置字体颜色

dy.setBackground(new Color(8,163,219));//设置按钮颜色

//监听器

dy.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

Gobangss();//调用五子棋开始方法

}

});

this.add(dy);//添加当前对弈按钮

/**

* 悔棋按钮

*/

JButton hq = new JButton("悔棋");//创建悔棋按钮

hq.setBounds(270,670,100,50);//设置位置

hq.setFont(new java.awt.Font("Dialog",1, 15));//设置字体样式

hq.setForeground(Color.white);//设置字体颜色

hq.setBackground(new Color(8,163,219));//设置按钮颜色

//监听器

hq.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

}

});

this.add(hq);//添加当前悔棋按钮

/**

* 重新开始

*/

JButton cx = new JButton("重新开始");//创建重新开始对象

cx.setBounds(410,670,100,50);//设置位置

cx.setFont(new java.awt.Font("Dialog",1, 15));//设置字体样式

cx.setForeground(Color.white);//设置字体颜色

cx.setBackground(new Color(8,163,219));//设置按钮颜色

//监听器

cx.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

//if(cx!= null){

Gobangss();//调用方法

//}

}

});

this.add(cx);//添加当前对象

/**

* 退出游戏

*/

JButton tc = new JButton("退出游戏");//创建退出按钮

tc.setBounds(545,670,100,50);//设置位置

tc.setFont(new java.awt.Font("Dialog",1, 15));//设置字体样式

tc.setForeground(Color.white);//设置字体颜色

tc.setBackground(new Color(8,163,219));//设置按钮颜色

//监听事件

tc.addActionListener(new ActionListener(){

@Override

public void actionPerformed(ActionEvent e) {

System.exit(1);//退出游戏界面

}

});

this.add(tc);//添加当前对象

/**

* 设置窗口图标

*/

Toolkit kit = Toolkit.getDefaultToolkit();

Image image = kit.getImage("src//image//0x1f3a8.png"); //设置窗口图标路径

setIconImage(image); //换掉窗体样式

/**

* 设置背景图片

*

*/

setSize(800,800);//设置大小 board 535, 536

String path = "src//image//qp.jpg";//设置背景图片的路径

ImageIcon background = new ImageIcon(path); // 背景图片

JLabel label = new JLabel(background);// 把背景图片显示在一个标签里面

label.setBounds(0, 0, this.getWidth(), this.getHeight()); // 把标签的大小位置设置为图片刚好填充整个面板

JPanel imagePanel = (JPanel) this.getContentPane(); // 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗& 格透明

imagePanel.setOpaque(false);

this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));// 把背景图片添加到分层窗格的最底层作为背景

setDefaultCloseOperation(EXIT_ON_CLOSE);// 用户点击窗口关闭

this.setVisible(true);//设置是否窗口显示

}

/**

* 创建五子棋开始方法

*/

public void Gobangss(){

Draw dr = new Draw();

//dr.setBounds(140,100,535,510);

dr.setBounds(140,100,535,510);

dr.addMouseListener(dr);

this.setBounds(610, 140,799,799);//设置宽高

this.add(dr);

}

public static void main(String[] args) {

new Gobangs();//调用方法

new Draw();//调用绘制五子棋类

}

}

/**

* 绘制五子棋盘,继承JComponet类

* @author JEEP-711

* 实现接口 MouseListener

*/

@SuppressWarnings("serial")

class Draw extends JComponent implements MouseListener{

private boolean isblack = true;//标记黑棋子先走

java.util.List

private int pcesX = 0;//当前X棋子的位置

private int pcesY = 0;//当前Y棋子的位置

private boolean isNow = false;

//覆写方法,自定义控件

public void paint(Graphics g){

super.paint(g);

this.addMouseListener(this);//添加当前,注册自己

/**

* 绘制棋盘线,绘制棋子

* 十行十列,Y轴变换,X轴不变

*/

for(int i=-1;i<10;i++){

g.drawLine(0, (i*50+50), 500, (i*50+50));//x轴

g.drawLine((i*50+50),0,(i*50+50),500);//y轴

}

/**

* 绘制棋子

* 遍历集合棋子

*/

for(Pieces p : psList){

g.setColor(p.getColor());//取得棋子颜色,黑色

g.fillOval(p.getX(), p.getY(), Pieces.PIECES_SIZE,Pieces.PIECES_SIZE);//设置黑棋子的x,y轴,棋子大小

}

iswin();//调用方

if(isNow == true){

//g.setFont(new Font("微软雅黑",Font.ITALIC,24));

g.setColor(Color.WHITE);

g.setFont(new java.awt.Font("Dialog",1, 60));//设置字体样式

g.drawString("旗开得胜!", 110, 270);

}

}

/**

* 判断输赢

* 东,西,南,北

* 东北,东南,西南,西北

*/

public void iswin(){

/**

* --北方向

*/

int nanbei = 0;

for(int nowY = pcesY-50,i=0;i<5 && nowY&=0;nowY-=50,i++){

Pieces pieces = findPieces(pcesX,nowY);

//System.out.println(pieces);

//不等于空,就有棋子

if(pieces!= null){

//当前棋子等于黑,判断颜色是否相相等

if(isblack != true){

if(pieces.getColor() == Color.BLACK){

nanbei++;

}else{

break;

}

}

//当前等于白棋,判断颜色是否相等

if(isblack != false){

if(pieces.getColor() == Color.WHITE){

nanbei++;

}else{

break;

}

}

}else{

break;

}

}if(isblack != true){

System.out.println("北方向黑棋子个数"+nanbei);

}else{

System.out.println("北方向白棋子个数"+nanbei);

}

if(nanbei&=5){

isNow = true;

if(isblack != true){

System.out.println("黑棋赢了");

}else{

System.out.println("白棋赢了");

}

}

/**

* --南方向

*/

for(int nowY = pcesY,i=0;i<5 && nowY<=500;nowY+=50,i++){

Pieces pieces = findPieces(pcesX,nowY);

//System.out.println(pieces);

//不等于空,就有棋子

if(pieces!= null){

//当前棋子等于黑,判断颜色是否相相等

if(isblack != true){

if(pieces.getColor() == Color.BLACK){

nanbei++;

}else{

break;

}

}

//当前等于白棋,判断颜色是否相等

if(isblack != false){

if(pieces.getColor() == Color.WHITE){

nanbei++;

}else{

break;

}

}

}else{

break;

}

}if(isblack != true){

System.out.println("南方向黑棋子个数"+nanbei);

}else{

System.out.println("南方向白棋子个数"+nanbei);

}

if(nanbei&=5){

isNow = true;

if(isblack != true){

System.out.println("黑棋赢了");

}else{

System.out.println("白棋赢了");

}

}

/*

*--东方向

*

*/

int dongxi = 0;

for(int nowX = pcesX,i=0;i<5 && nowX<=500;nowX+=50,i++){

Pieces pieces = findPieces(nowX,pcesY);

//System.out.println(pieces);

//不等于空,就有棋子

if(pieces!= null){

//当前棋子等于黑,判断颜色是否相相等

if(isblack != true){

if(pieces.getColor() == Color.BLACK){

dongxi++;

}else{

break;

}

}

//当前等于白棋,判断颜色是否相等

if(isblack != false){

if(pieces.getColor() == Color.WHITE){

dongxi++;

}else{

break;

}

}

}else{

break;

}

}

if(isblack != true){

System.out.println("东方向黑棋子个数"+dongxi);

}else{

System.out.println("东方向白棋子个数"+dongxi);

}

/**

* --西方向

*/

for(int nowX = pcesX-50,i=0;i<5 && nowX&=0;nowX-=50,i++){

Pieces pieces = findPieces(nowX,pcesY);

//不等于空,就有棋子

if(pieces!=null){

//当前棋子等于黑,判断颜色是否相相等

if(isblack != true){

if(pieces.getColor() == Color.BLACK){

dongxi++;

}else{

break;

}

}

//当前等于白棋,判断颜色是否相等

if(isblack != false){

if(pieces.getColor() == Color.WHITE){

dongxi++;

}else{

break;

}

}

}else{

break;

}

}

if(isblack != true){

System.out.println("西方向黑棋子个数"+dongxi);

}else{

System.out.println("西方向白棋子个数"+dongxi);

}

if(dongxi&=5){

isNow = true;

if(isblack != true){

System.out.println("黑棋赢了");

}else{

System.out.println("白棋赢了");

}

}

/**

* -*-东北方向

*/

int dongbeixinan= 0;

for(int nowX = pcesX,nowY = pcesY,i=0;nowY &=0 && nowX<=500 && i< 5;nowX+=50,nowY-=50,i++){

Pieces pieces = findPieces(nowX,nowY);

//不等于空,就有棋子

if(pieces!=null){

//当前棋子等于黑,判断颜色是否相相等

if(isblack != true){

if(pieces.getColor() == Color.BLACK){

dongbeixinan++;

}else{

break;

}

}

//当前等于白棋,判断颜色是否相等

if(isblack != false){

if(pieces.getColor() == Color.WHITE){

dongbeixinan++;

}else{

break;

}

}

}else{

break;

}

}

if(isblack != true){

System.out.println("东北方向黑棋子个数"+dongbeixinan);

}else{

System.out.println("东北方向白棋子个数"+dongbeixinan);

}

if(dongbeixinan&=5){

isNow = true;

if(isblack != true){

System.out.println("黑棋赢了");

}else{

System.out.println("白棋赢了");

}

}

/**

* --西南方向

*/

for(int nowX = pcesX-50,nowY = pcesY+50,i=0;nowY <=500 && nowX&=0 && i< 5;nowX-=50,nowY+=50,i++){

Pieces pieces = findPieces(nowX,nowY);

//不等于空,就有棋子

if(pieces!=null){

//当前棋子等于黑,判断颜色是否相相等

if(isblack != true){

if(pieces.getColor() == Color.BLACK){

dongbeixinan++;

}else{

break;

}

}

//当前等于白棋,判断颜色是否相等

if(isblack != false){

if(pieces.getColor() == Color.WHITE){

dongbeixinan++;

}else{

break;

}

}

}else{

break;

}

}if(isblack != true){

System.out.println("西南方向黑棋子个数"+dongbeixinan);

}else{

System.out.println("西南方向白棋子个数"+dongbeixinan);

}

if(dongbeixinan&=5){

isNow = true;

if(isblack != true){

System.out.println("黑棋赢了");

}else{

System.out.println("白棋赢了");

}

}

/**

* --东南方向

*/

int dongnan = 0;

for(int nowX = pcesX,nowY = pcesY,i=0;nowY <=500 && nowX<=500 && i< 5;nowX+=50,nowY+=50,i++){

Pieces pieces = findPieces(nowX,nowY);

//不等于空,就有棋子

if(pieces!=null){

//当前棋子等于黑,判断颜色是否相相等

if(isblack != true){

if(pieces.getColor() == Color.BLACK){

dongnan++;

}else{

break;

}

}

//当前等于白棋,判断颜色是否相等

if(isblack != false){

if(pieces.getColor() == Color.WHITE){

dongnan++;

}else{

break;

}

}

}else{

break;

}

}if(isblack != true){

System.out.println("东南方向黑棋子个数"+dongnan);

}else{

System.out.println("东南方向白棋子个数"+dongnan);

}

/**

* --西北方向

*/

for(int nowX = pcesX-50,nowY = pcesY-50,i=0;nowY &=0 && nowX&=0 && i< 5;nowX-=50,nowY-=50,i++){

Pieces pieces = findPieces(nowX,nowY);

//不等于空,就有棋子

if(pieces!=null){

//当前棋子等于黑,判断颜色是否相相等

if(isblack != true){

if(pieces.getColor() == Color.BLACK){

dongnan++;

}else{

break;

}

}

//当前等于白棋,判断颜色是否相等

if(isblack != false){

if(pieces.getColor() == Color.WHITE){

dongnan++;

}else{

break;

}

}

}else{

break;

}

}

if(isblack != true){

System.out.println("西北方向黑棋子个数"+dongnan);

}else{

System.out.println("西北方向白棋子个数"+dongnan);

}

if(dongnan&=5){

isNow = true;

if(isblack != true){

System.out.println("黑棋赢了");

}else{

System.out.println("白棋赢了");

}

}

}

/**

* 找点

*/

public Pieces findPieces(int x,int y){

for(Pieces p:psList){

if(p.getX() == x && p.getY() == y){

return p;//判断坐标是否相同

}

}

return null;

}

@Override

public void mouseClicked(MouseEvent e) {

int x = e.getX()-Pieces.PIECES_SIZE/2;//取得x轴坐标

int y = e.getY()-Pieces.PIECES_SIZE/2;//取得y轴坐标

//算出在哪一条线

double xianX = Math.round(x/50.0);

double xianY = Math.round(y/50.0);

//System.out.println("第几根线"+xianY+"---"+Math.round(xianY));

x = ((int)xianX)*50-20;

y = ((int)xianY)*50-20;

pcesX = x;//记录棋子X当前位置

pcesY = y;//记录棋子Y当前位置

boolean isHa = false;

//去重复棋子

for(Pieces p:psList){

if(p.getX() == x && p.getY() == y){

isHa = true;

}

}

//避免重复棋子

if(!isHa){

Pieces ps = new Pieces(x,y); //创建棋子对象,并传x,y值

/**

* 找点

*/

if(isblack == true){

//黑棋子

ps.setColor(Color.BLACK);//设置棋子颜色为黑色

isblack = false;

}else{

//白棋子

ps.setColor(Color.WHITE);//设置棋子颜色为白色

isblack = true;

}

if(isNow==false){

psList.add(ps);//把棋子保存到数组里

}

this.repaint();//让其重新调用,用户触发,重新绘制

}

//System.out.println("目前棋子数为:"+psList.size());

//System.out.println("你点击了,X轴为:"+e.getX()+",Y轴为:"+e.getY());

}

@Override

public void mousePressed(MouseEvent e) {

}

@Override

public void mouseReleased(MouseEvent e) {

}

@Override

public void mouseEntered(MouseEvent e) {

}

@Override

public void mouseExited(MouseEvent e) {

}

}

/**

* 绘制棋子类

* @author JEEP-711

*

*/

class Pieces{

private int x;//x轴点坐标属性

private int y;//y轴点坐标属性

private Color color;//棋子颜色属性

public static final int PIECES_SIZE = 40;//棋子尺寸

//取得X轴get方法

public int getX() {

return x;

}//设置x轴set方法

public void setX(int x) {

this.x = x;

}//取得y轴方法

public int getY() {

return y;

}//设置y轴方法

public void setY(int y) {

this.y = y;

}//取得棋子颜色方法

public Color getColor() {

return color;

}//设置棋子颜色方法

public void setColor(Color color) {

this.color = color;

}

//构造器

public Pieces(int x, int y, Color color) {

super();

this.x = x;

this.y = y;

this.color = color;

}

public Pieces(int x, int y) {

this.x = x;

this.y = y;

}

@Override

public String toString() {

return "Pieces [x=" + x + ", y=" + y + ", color=" + color + "]";

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值