Java-Swing 小例子

1:对话框

package frame;

import java.awt.BorderLayout;
import java.awt.HeadlessException;

import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

public class test extends JDialog{
    public test() {

           this.setTitle("About");                                                    //窗体标题显示
                   this.setSize(320, 200);                                                //窗体的大小

               JLabel about = new JLabel("关于:JAVA的一个窗口 :) ");             //对话框内容
                about.setHorizontalAlignment(SwingConstants.CENTER);     //内容显示在窗口的中央
               this.getContentPane().add(about, BorderLayout.CENTER);
          }

          public static void main(String[] args) throws HeadlessException {
              test kk = new  test() ;
                 kk.setVisible(true);                                                                             //原来的show()显示已过时
                 kk.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);       

         }

}

2:双人对战五子棋

package frame;

import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JFrame;

public class MainFrame extends JFrame{
    public static void main(String[] args) {
        MainPanel panel = new MainPanel();
        MainFrame frame = new MainFrame("五子棋");
        frame.setSize(680,680);
        panel.setBackground(Color.GRAY);
        frame.add(panel,BorderLayout.CENTER);
        panel.addMouseListener(panel);
        frame.setVisible(true);
    }
    public MainFrame(){
        super();
    }
    public MainFrame(String str){
        super(str);
    }
}
package frame;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JOptionPane;

public class MainPanel extends Panel implements MouseListener{
    private static final int COLUMN = 16;//列数
    private static final int ROW = 16;//行数
    private static final int GAP = 40;//间距
    private static boolean isBlack = true;
    private static int click_X;
    private static int click_Y;
    private char[][] allChess= new char[ROW][COLUMN];
    public MainPanel(){
        super();
        for(int i=0;i<allChess.length;i++){
            for(int j=0;j<allChess[i].length;j++){
                allChess[i][j]='*';
            }
        }
    }
    public void paint(Graphics g){
        for(int i=0;i<ROW;i++){//划横线
            g.setColor(Color.BLACK);
            g.drawLine(20, 20+i*GAP, 640-20, 20+i*GAP);
        }
        for(int i=0;i<COLUMN;i++){//划纵线
            g.setColor(Color.BLACK);
            g.drawLine(20+i*GAP, 20, 20+i*GAP, 640-20);
        }
        for(int i=0;i<allChess.length;i++){
            for(int j=0;j<allChess[i].length;j++){
                if(allChess[i][j]=='~'){
                    g.setColor(Color.WHITE);
                    g.fillOval(5+i*40, 5+j*40, 30, 30);
                    g.drawOval(5+i*40, 5+j*40, 30, 30);
                }
                if(allChess[i][j]=='!'){
                    g.setColor(Color.BLACK);
                    g.fillOval(5+i*40, 5+j*40, 30, 30);
                    g.drawOval(5+i*40, 5+j*40, 30, 30);
                }
            }
        }
    }
    public boolean isWin(int x,int y,boolean isColor){//判断是否为5个相同的棋子,是返回true,否返回false
        char ch=allChess[x][y];
        /*  横向判断    */
        int RLastX = x;
        while(RLastX>=0 && allChess[RLastX][y]==ch){//横向判断是否到达5个相同的棋子
            RLastX --;
        }
        int RNum = 0;//统计横向相同的棋子数
        RLastX ++; 
        while(RLastX<allChess.length && allChess[RLastX][y]==ch){//横向判断是否到达5个相同的棋子
            RNum ++;
            RLastX ++;
        }
        /* 纵向判断   */
        int LLastY = y;
        while(LLastY>=0 && allChess[x][LLastY]==ch){//纵向判断是否到达5个相同的棋子
            LLastY --;
        }
        int LNum = 0;//统计纵向相同的棋子数
        LLastY ++;
        while(LLastY<allChess[x].length && allChess[x][LLastY]==ch){//纵向判断是否到达5个相同的棋子
            LLastY ++;
            LNum ++;
        }
        /* 左下右上判断  */
        int LDLastX = x;
        int RULastY = y;
        while(LDLastX>=0 && RULastY<allChess.length && allChess[LDLastX][RULastY]==ch){
            LDLastX --;
            RULastY ++;
        }
        int LDNum = 0;
        LDLastX ++;
        RULastY --;
        while(LDLastX<allChess.length && RULastY>=0 && allChess[LDLastX][RULastY]==ch){
            LDNum ++;
            LDLastX ++;
            RULastY --;
        }
        /* 左上右下判断  */
        int RULastX = x;
        int LDLastY = y;
        while(RULastX>=0 && LDLastY>=0 && allChess[RULastX][LDLastY]==ch){
            RULastX --;
            LDLastY --;
        }
        int RUNum = 0;
        RULastX ++;
        LDLastY ++;
        while(RULastX>=0 && LDLastY<allChess.length && allChess[RULastX][LDLastY]==ch){
            RULastX ++;
            LDLastY ++;
            RUNum ++;
        }
        if(RNum>=5||LNum>=5||RUNum>=5||LDNum>=5){                                            
            return true;
        }
        return false;
    } 

    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
        //System.out.println(e.getX());
        //e.getY();
    }   
    public void mousePressed(MouseEvent e) {//鼠标点击事件处理过程
        // TODO Auto-generated method stub
        int click_x = e.getX();
        int click_y = e.getY();
        int chess_x = Math.round((float)(click_x-20)/GAP);
        int chess_y = Math.round((float)(click_y-20)/GAP);
        click_X = chess_x;
        click_Y = chess_y;
        if(isBlack==true&&allChess[chess_x][chess_y]=='*'){
            allChess[chess_x][chess_y] = '!';
            isBlack = false;
        }
        if(isBlack==false&&allChess[chess_x][chess_y]=='*'){
            allChess[chess_x][chess_y] = '~';
            isBlack = true;
        }

        System.out.println(e.getX());
        System.out.println(e.getY());
        repaint();
        for(int j=0;j<16;j++){
            for(int i=0;i<16;i++){
                System.out.print(allChess[i][j]+" ");
            }
            System.out.println();
        }
        System.out.println();
        if(isWin(chess_x,chess_y,isBlack)){
            System.out.println("你赢了");
        }
        if(isWin(chess_x,chess_y,isBlack)){
            if(isBlack){
                JOptionPane.showMessageDialog(null,"白子赢了");
            }else{
                JOptionPane.showMessageDialog(null,"黑子赢了");
            }
             System.exit(0);
        }
    }
    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub

    }
    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub

    }
    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub

    }
    public void setAllChess(char[][] allChess) {
        this.allChess = allChess;
    }
    public char[][] getAllChess() {
        return allChess;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值