欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)現(xiàn)五子棋游戲單機(jī)版(1.0)

 更新時(shí)間:2022年04月25日 16:11:25   作者:寶貝垚  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)五子棋游戲單機(jī)版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Java實(shí)現(xiàn)五子棋游戲單機(jī)版的具體代碼,供大家參考,具體內(nèi)容如下

簡介

這個(gè)程序?qū)崿F(xiàn)了單機(jī)版五子棋,目前無法聯(lián)機(jī),只能自己跟自己下。
棋盤是20*20的。
主要功能:下棋、認(rèn)輸、悔棋、重新開始、退出等功能

PS:目前設(shè)置只有顯示游戲規(guī)則。

截圖

完整代碼

package Gobang;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
//import java.applet.*;
//import java.net.*;
//import java.io.*;
//import javax.imageio.*;
public class Frame ?extends JFrame implements MouseListener,ActionListener{//JFrame的擴(kuò)展類

?? ?private static final long serialVersionUID = 1L;
?? ?JPanel panel1;//用于安放按鈕;
?? ?JButton RestartButton,SetButton,AdmitDefeatButton,RegretButton,ExitButton;//五個(gè)按鈕,各有其功能。
?? ?Graphics g;//畫筆
?? ?BufferedImage buf;
?? ?int x;//鼠標(biāo)的坐標(biāo)
?? ?int y;
?? ?int[][] Chess = new int[20][20]; ? // 保存棋子,1表示黑子,2表示白子
?? ?boolean IsBlack = true; ? //表示當(dāng)前要下的是黑子還是白子,true表示黑子,false表示白子
?? ?boolean IsFinish = false; ? //表示當(dāng)前游戲是否結(jié)束
?? ?int xRange;
?? ?int yRange;
?? ?int[] chessX = new int[400];//用來保存從開始到當(dāng)前的所有棋子,用于悔棋;
?? ?int[] chessY = new int[400];
?? ?int countX = 0;
?? ?int countY = 0;
?? ?/*本來想用于播放背景音樂,但是沒有成功,,,先暫時(shí)放棄
?? ?//File f;
?? ?//URI uri;
?? ?//URL url;
?? ?//@SuppressWarnings("deprecation")
?? ?*/
?? ?//
?? ?public Frame() {
?? ??? ?//設(shè)置標(biāo)題、大小、排列方式等
?? ??? ?this.setTitle("五子棋");
?? ??? ?this.setSize(500,550);
?? ??? ?this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
?? ??? ?this.setVisible(true);
?? ??? ?this.setLayout(null);
?? ??? ?//五個(gè)按鈕:重新開始、設(shè)置、認(rèn)輸、悔棋、退出。
?? ??? ?RestartButton = new JButton("重新開始");
?? ??? ?RestartButton.setSize(20,40);
?? ??? ?SetButton = new JButton("設(shè)置");
?? ??? ?SetButton.setSize(20,40);
?? ??? ?AdmitDefeatButton = new JButton("認(rèn)輸");
?? ??? ?AdmitDefeatButton.setSize(20,40);
?? ??? ?RegretButton = new JButton("悔棋" );
?? ??? ?RegretButton.setSize(20,40);
?? ??? ?ExitButton = new JButton("退出");
?? ??? ?ExitButton.setSize(20,40);
?? ??? ?//五個(gè)按鈕添加到中間容器;
?? ??? ?panel1 = new JPanel();
?? ??? ?panel1.setBorder(BorderFactory.createLoweredBevelBorder()); //設(shè)置邊框
?? ??? ?panel1.setLayout(new GridLayout(1,5));
?? ??? ?panel1.add(RestartButton);
?? ??? ?panel1.add(SetButton);
?? ??? ?panel1.add(AdmitDefeatButton);
?? ??? ?panel1.add(RegretButton);
?? ??? ?panel1.add(ExitButton);
?? ??? ?this.add(panel1);
?? ??? ?panel1.setSize(460,20);
?? ??? ?panel1.setLocation(0, 460);
?? ??? ?
?? ??? ?this.repaint();//表示重新繪制畫布,可以自動(dòng)調(diào)用paint函數(shù);
?? ??? ?//本類作為監(jiān)聽類,包括鼠標(biāo)監(jiān)聽和按鈕動(dòng)作監(jiān)聽;
?? ??? ?this.addMouseListener(this);
?? ??? ?RestartButton.addActionListener(this);
?? ??? ?SetButton.addActionListener(this);
?? ??? ?AdmitDefeatButton.addActionListener(this);
?? ??? ?RegretButton.addActionListener(this);
?? ??? ?ExitButton.addActionListener(this);
?? ??? ?/*音頻播放部分
?? ??? ?try {
?? ??? ??? ?f = new File("");
?? ??? ??? ?uri = f.toURI();
?? ??? ??? ?url = uri.toURL();
?? ??? ??? ?AudioClip aau;?
?? ??? ??? ?aau = Applet.newAudioClip(url);
?? ??? ??? ?aau.loop(); ?//循環(huán)播放
?? ??? ?} catch (Exception e)
?? ??? ?{
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?*/
?? ?}
?? ?//畫布繪制
?? ?public void paint(Graphics g)
?? ?{
?? ??? ?if(g == null)//如果第一次繪制,新建一個(gè)圖片,并且創(chuàng)建畫布。
?? ??? ?{
?? ??? ??? ?buf = new BufferedImage(450, 450, BufferedImage.TYPE_INT_RGB);
?? ??? ??? ?g = ?buf.createGraphics();
?? ??? ?}
?? ??? ?if(g != null)//
?? ??? ?{
?? ??? ??? ?super.paint(g);//表示在原來圖像的基礎(chǔ)上,再畫圖
?? ??? ??? ?g.setColor(new Color(249,205,173));//畫筆顏色調(diào)成褐色;
?? ??? ??? ?g.fill3DRect(20, 40, 400, 400,true);//用畫筆畫一個(gè)邊長為400的正方形;邊距為20,40
?? ??? ??? ?for(int i = 0; i <= 20; i++)//用畫筆橫豎各畫19條線
?? ??? ??? ?{
?? ??? ??? ??? ?g.setColor(Color.BLACK);//畫筆顏色調(diào)為黑色;
?? ??? ??? ??? ?g.drawLine(20,40+i*20,420,40+i*20);
?? ??? ??? ??? ?g.drawLine(20+i*20,40,20+i*20,440);
?? ??? ??? ?}
?? ??? ?}
?? ??? ? for(int i=0; i<20; i++){
?? ??? ??? ??? ?for (int j = 0; j < 20; j++) {
?? ??? ??? ??? ??? ?//畫實(shí)心黑子,直徑16
?? ??? ??? ??? ??? ?if(Chess[i][j] == 1){ ? ?
?? ??? ??? ??? ??? ??? ?int tempX = i*20+12;
?? ??? ??? ??? ??? ??? ?int tempY = j*20+32;
?? ??? ??? ??? ??? ??? ?g.setColor(Color.BLACK);
?? ??? ??? ??? ??? ??? ?g.fillOval(tempX, tempY, 16, 16);
?? ??? ??? ??? ??? ??? ?g.setColor(Color.BLACK);
?? ??? ??? ??? ??? ??? ?g.drawOval(tempX, tempY, 16, 16);
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ?//畫實(shí)心白子,直徑16
?? ??? ??? ??? ??? ?if(Chess[i][j] == 2){
?? ??? ??? ??? ??? ??? ?int tempX = i*20+12;
?? ??? ??? ??? ??? ??? ?int tempY = j*20+32;
?? ??? ??? ??? ??? ??? ?g.setColor(Color.WHITE);
?? ??? ??? ??? ??? ??? ?g.fillOval(tempX, tempY, 16, 16);
?? ??? ??? ??? ??? ??? ?g.setColor(Color.WHITE);
?? ??? ??? ??? ??? ??? ?g.drawOval(tempX, tempY, 16, 16);
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?g.drawImage(buf, 0, 0,this);
?? ??? ?
?? ?}?? ??? ?

?? ?public void mousePressed(MouseEvent e) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?
?? ??? ?if(!IsFinish)?? ?//判斷棋局是否結(jié)束
?? ??? ?{
?? ??? ??? ?x = e.getX();?? ?//獲取當(dāng)前鼠標(biāo)點(diǎn)擊位置
?? ??? ??? ?y = e.getY();
?? ??? ??? ?if(x >= 20 && x < 420 && y >= 40 && y<= 440)//判斷鼠標(biāo)是否在棋局內(nèi)
?? ??? ??? ?{
?? ??? ??? ??? ?xRange = (x-20)%20;
?? ??? ??? ??? ?if(xRange > 10 && xRange < 20)?? ?//如果在交叉點(diǎn)的邊長為10的范圍內(nèi),就把棋子下在這;
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?x = (x - 20) / 20 + 1;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?x = (x - 20) / 20;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?yRange = (y-40)%20;
?? ??? ??? ??? ?if(yRange > 10 && yRange < 20)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?y = (y - 40) / 20 + 1;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?y = (y - 40) / 20;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?
?? ??? ??? ??? ?if(Chess[x][y] == 0)?? ?//如果該交叉點(diǎn)沒有被下過;
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?chessX[countX++] = x;?? ?//存儲(chǔ)當(dāng)前棋子的位置;
?? ??? ??? ??? ??? ?chessY[countY++] = y;
?? ??? ??? ??? ??? ?if(IsBlack)?? ??? ??? ?//如果是黑子
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?Chess[x][y] = 1;
?? ??? ??? ??? ??? ??? ?IsBlack = false;
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?else
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?Chess[x][y] = 2;
?? ??? ??? ??? ??? ??? ?IsBlack = true;
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?this.repaint();//重新繪制畫布
?? ??? ??? ??? ?}
?? ??? ??? ??? ?
?? ??? ??? ??? ?if(this.isWin())//如果下棋之后贏了,彈出對(duì)話框
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?if(Chess[x][y] == 1)
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(this, "黑方勝利");
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?else?
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(this, "白方勝利");
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?this.IsFinish = true; ?//游戲結(jié)束
?? ??? ??? ??? ?}
?? ??? ??? ??? ?
?? ??? ??? ?}
?? ??? ??? ?

?? ??? ?}
?? ?}
?? ?
?? ?public boolean isWin(){
?? ??? ?boolean flag = false;
?? ??? ?int count = 1;?
?? ??? ?int color = Chess[x][y]; ?
?? ??? ?//判斷橫向是否有5個(gè)棋子相連
?? ??? ?count = this.checkCount(1,0,color);
?? ??? ?if(count >= 5){
?? ??? ??? ?flag = true;
?? ??? ?}else {
?? ??? ??? ?//判斷縱向
?? ??? ??? ?count = this.checkCount(0,1,color);
?? ??? ??? ?if(count >= 5){
?? ??? ??? ??? ?flag = true;
?? ??? ??? ?}else {
?? ??? ??? ??? ? //判斷右上,左下
?? ??? ??? ??? ?count = this.checkCount(1,-1,color);
?? ??? ??? ??? ?if(count >= 5){
?? ??? ??? ??? ??? ?flag = true;
?? ??? ??? ??? ?}else {
?? ??? ??? ??? ??? ?//判斷右下,左上
?? ??? ??? ??? ??? ?count = this.checkCount(1,1,color);
?? ??? ??? ??? ??? ?if(count >= 5){
?? ??? ??? ??? ??? ??? ?flag = ?true;
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return flag;
?? ?}
?? ? // 檢查棋盤中的五子棋是否連成五子,xChange,yChange為相對(duì)于當(dāng)前棋子位置的變化量
?? ?public int checkCount(int xChange , int yChange ,int color){
?? ??? ?int count = 1;//統(tǒng)計(jì)總共有幾個(gè)連著的棋子;
?? ??? ?int tempX = xChange;
?? ??? ?int tempy = yChange; ?
?? ??? ?//判斷棋子右邊有沒有相同顏色的棋子;
?? ??? ?while(x + xChange >=0 && x+xChange <20 ?&& y+yChange >=0 &&?
?? ??? ??? ??? ?y+yChange < 20 && color == Chess[x+xChange][y+yChange])
?? ??? ?{
?? ??? ??? ?count++;?? ??? ??? ??? ??? ??? ?//如果有,棋子數(shù)加一
?? ??? ??? ?if(xChange != 0) ?
?? ??? ??? ??? ?xChange++; ? ??? ??? ??? ??? ?//如果橫向方向變化,x相對(duì)位置加一
?? ??? ??? ?if(yChange != 0 )?? ??? ??? ??? ?
?? ??? ??? ?{ ? ? ?
?? ??? ??? ??? ?if(yChange != 0)?? ??? ??? ?
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?if(yChange > 0)?? ??? ??? ?//如果縱向方向增加,y相對(duì)位置加一
?? ??? ??? ??? ??? ?{ ??
?? ??? ??? ??? ??? ??? ?yChange++;?? ??? ?
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?else ?? ??? ??? ??? ??? ?//如果縱向方向減小,y相對(duì)位置減一
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?yChange--;?? ??? ?
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ?}
?? ??? ?xChange = tempX;
?? ??? ?yChange = tempy; ?
?? ??? ?//判斷棋子左邊有沒有相同顏色的棋子;
?? ??? ?while(x-xChange >=0 && x-xChange <20 && y-yChange >=0 &&
?? ??? ??? ??? ?y-yChange <20 && color == Chess[x-xChange][y-yChange])
?? ??? ?{?? ??? ?
?? ??? ??? ?count++;
?? ??? ??? ?if(xChange != 0)
?? ??? ??? ?{
?? ??? ??? ??? ?xChange++;
?? ??? ??? ?}
?? ??? ??? ?if(yChange != 0)
?? ??? ??? ?{
?? ??? ??? ??? ?if (yChange > 0)?
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?yChange++;?? ??? ??? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else?
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?yChange--;?? ??? ??? ?
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ??? ?return count;
?? ?}
?? ?//監(jiān)聽動(dòng)作函數(shù)
?? ?public void actionPerformed(ActionEvent e) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?if(e.getSource() == RestartButton)//如果點(diǎn)擊的按鈕是RestartButton,清空畫板,還原設(shè)置
?? ??? ?{
?? ??? ??? ?if(JOptionPane.showConfirmDialog(this, "Do you want to restart the game?") == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?for (int i = 0; i < 15; i++)?
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?for (int j = 0; j < 15; j++)?
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?Chess[i][j] = 0; ?//清空棋盤的棋子
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?
?? ??? ??? ??? ?//清空下棋棋子坐標(biāo)的記錄
?? ??? ??? ??? ?for (int i = 0; i < 15; i++)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?chessX[i] = 0;
?? ??? ??? ??? ??? ?chessY[i] = 0;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?countX =0;
?? ??? ??? ??? ?countY =0;
?? ??? ??? ??? ?IsBlack = true;
?? ??? ??? ??? ?IsFinish = false;
?? ??? ??? ??? ?this.repaint();
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if(e.getSource() == AdmitDefeatButton)//如果點(diǎn)擊的按鈕是AdmitDefeatButton,結(jié)束游戲,并提示
?? ??? ?{
?? ??? ??? ?if(!IsFinish)?? ?//判斷棋局是否結(jié)束
?? ??? ??? ?{
?? ??? ??? ??? ?if(JOptionPane.showConfirmDialog(this, "Are you sure you want to give up?") == 0)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?if(IsBlack == true)
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(this,"白方獲勝");
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?else
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?JOptionPane.showMessageDialog(this,"黑方獲勝");
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?IsFinish = true;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if(e.getSource() == ExitButton)//如果點(diǎn)擊的按鈕是ExitButton,退出程序
?? ??? ?{
?? ??? ??? ?if(JOptionPane.showConfirmDialog(this, "Do you want to exit?") == 0)
?? ??? ??? ?{
?? ??? ??? ??? ?System.exit(0);
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if(e.getSource() == RegretButton)///如果點(diǎn)擊的按鈕是RegretButton,悔棋一步
?? ??? ?{
?? ??? ??? ?if(!IsFinish)?? ?//判斷棋局是否結(jié)束
?? ??? ??? ?{
?? ??? ??? ?if(IsBlack == true)?? ?//如果現(xiàn)在是黑子要下,表示悔棋的是白子
?? ??? ??? ?{
?? ??? ??? ??? ?if(JOptionPane.showConfirmDialog(this, "The white want to regret,do you agree?") == 0)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?int tempX = chessX[--countX];?? ?//獲取上一步白子下的位置;
?? ??? ??? ??? ??? ?int tempY = chessY[--countY];
?? ??? ??? ??? ??? ?Chess[tempX][tempY] = 0;?? ?//撤回白子
?? ??? ??? ??? ??? ?IsBlack = false;?? ?//當(dāng)前要下的變?yōu)榘追?
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?if(JOptionPane.showConfirmDialog(this, "The black want to regret,do you agree?") == 0)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?int tempX = chessX[--countX];
?? ??? ??? ??? ??? ?int tempY = chessY[--countY];
?? ??? ??? ??? ??? ?Chess[tempX][tempY] = 0;
?? ??? ??? ??? ??? ?IsBlack = true;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?this.repaint();?? ?//重新繪制畫布
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if(e.getSource() == SetButton)?? ?//設(shè)置按鈕,現(xiàn)在只顯示游戲規(guī)則
?? ??? ?{
?? ??? ??? ??? ? JDialog frame1 = new JDialog();//新建對(duì)話框
?? ??? ??? ??? ? frame1.setBounds(?? ??? ??? ?//設(shè)置對(duì)話框邊界
?? ??? ??? ? ? ? ? ? ? ? ? ?new Rectangle(
?? ??? ??? ? ? ? ? ? ? ? ? ? ? ? ? ?0,
?? ??? ??? ? ? ? ? ? ? ? ? ? ? ? ? ?260,?
?? ??? ??? ? ? ? ? ? ? ? ? ? ? ? ? ?600,?
?? ??? ??? ? ? ? ? ? ? ? ? ? ? ? ? ?200
?? ??? ??? ? ? ? ? ? ? ? ? ?)
?? ??? ??? ? ? ? ? ? ? ?);
?? ??? ??? ??? ? JTextField tf = new JTextField();//新建文本框
?? ??? ??? ??? ? frame1.setTitle("Play Rule");
?? ??? ??? ? ? ? frame1.getContentPane().add(tf);?? ?//添加文本框
?? ??? ??? ? ? ? tf.setText("The two sides use black and white pieces respectively.\n At the intersection of the straight line and horizontal line of the chessboard, \nthe one who forms a five piece line first wins.");
?? ??? ??? ? ? ? frame1.setModalityType(Dialog.ModalityType.APPLICATION_MODAL); ? ?// 設(shè)置模式類型
?? ??? ??? ? ? ? frame1.setVisible(true);
?? ??? ? } ? ? ? ?
?? ?}
?? ?public static void main(String[] args) {
?? ??? ?new Frame();
}
?? ?@Override
?? ?public void mouseClicked(MouseEvent e) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?
?? ?}
?? ?@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
?? ??? ?
?? ?}
}

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot中通過lua腳本來獲取序列號(hào)的方法

    springboot中通過lua腳本來獲取序列號(hào)的方法

    這篇文章主要介紹了springboot中通過lua腳本來獲取序列號(hào)的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • pagehelper插件顯示total為-1或1的問題

    pagehelper插件顯示total為-1或1的問題

    這篇文章主要介紹了pagehelper插件顯示total為-1或1,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Spring如何正確注入集合類型

    Spring如何正確注入集合類型

    這篇文章主要介紹了Spring如何正確注入集合類型,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • java集成開發(fā)SpringBoot生成接口文檔示例實(shí)現(xiàn)

    java集成開發(fā)SpringBoot生成接口文檔示例實(shí)現(xiàn)

    這篇文章主要為大家介紹了java集成開發(fā)SpringBoot如何生成接口文檔的示例實(shí)現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • SpringBoot結(jié)合Redis實(shí)現(xiàn)緩存

    SpringBoot結(jié)合Redis實(shí)現(xiàn)緩存

    本文主要介紹了SpringBoot結(jié)合Redis實(shí)現(xiàn)緩存,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • java中charAt()方法的使用及說明

    java中charAt()方法的使用及說明

    這篇文章主要介紹了java中charAt()方法的使用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • SpringBoot中事務(wù)失效的六個(gè)原因解析

    SpringBoot中事務(wù)失效的六個(gè)原因解析

    這篇文章主要介紹了SpringBoot中事務(wù)失效的六個(gè)原因解析,由于Spring的事務(wù)是基于AOP的方式結(jié)合動(dòng)態(tài)代理來實(shí)現(xiàn)的,因此事務(wù)方法一定要是public的,這樣才能便于被Spring做事務(wù)的代理和增強(qiáng),需要的朋友可以參考下
    2023-10-10
  • SpringBoot中使用@Value注解注入詳解

    SpringBoot中使用@Value注解注入詳解

    這篇文章主要介紹了SpringBoot中的@Value注入詳解,在SpringBoot中,@Value注解可以注入一些字段的普通屬性,并且會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換,本文對(duì)這些類型進(jìn)行總結(jié),需要的朋友可以參考下
    2023-08-08
  • spring注解@Import用法詳解

    spring注解@Import用法詳解

    這篇文章主要介紹了spring注解@Import用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • java四種引用及在LeakCanery中應(yīng)用詳解

    java四種引用及在LeakCanery中應(yīng)用詳解

    這篇文章主要介紹了java四種引用及在LeakCanery中應(yīng)用,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09

最新評(píng)論