java swing 参考手册写游戏入门有什么值得参考的demo

Java Swing 是否适合做大型项目及桌面应用? - 知乎266被浏览99536分享邀请回答13410 条评论分享收藏感谢收起10329 条评论分享收藏感谢收起查看更多回答6 个回答被折叠()实用经验总结篇
DatedeprecateCalenderCalenderLocaleAPIgoogleBlogCalenderJava-DocAPIdemo
&J2SDKEclipseJFreeChartJasperReport&&JavaGoogleBaiduBlog
SwingUISwing11IReport0.56DialogJDKJDK
Font vFont = new Font(&Dialog&, Font.PLAIN, 13);
&&&&&& &&& UIManager.put(&ToolTip.font&, vFont);
&&&&&& &&& UIManager.put(&Table.font&, vFont);
&&&&&& &&& UIManager.put(&TableHeader.font&, vFont);
&&&&&& &&& UIManager.put(&TextField.font&, vFont);
&&&&&& &&& UIManager.put(&ComboBox.font&, vFont);
&&&&&& &&& UIManager.put(&TextField.font&, vFont);
&&&&&& &&& UIManager.put(&PasswordField.font&, vFont);
&&&&&& &&& UIManager.put(&TextArea.font&, vFont);
&&&&&& &&& UIManager.put(&TextPane.font&, vFont);
&&&&&& &&& UIManager.put(&EditorPane.font&, vFont);
&&&&&& &&& UIManager.put(&FormattedTextField.font&, vFont);
&&&&&& &&& UIManager.put(&Button.font&, vFont);
&&&&&& &&& UIManager.put(&CheckBox.font&, vFont);
&&&&&& &&& UIManager.put(&RadioButton.font&, vFont);
&&&&&& &&& UIManager.put(&ToggleButton.font&, vFont);
&&&&&& &&& UIManager.put(&ProgressBar.font&, vFont);
&&&&&& &&& UIManager.put(&DesktopIcon.font&, vFont);
&&&&&& &&& UIManager.put(&TitledBorder.font&, vFont);
&&&&&& &&& UIManager.put(&Label.font&, vFont);
&&&&&& &&& UIManager.put(&List.font&, vFont);
&&&&&& &&& UIManager.put(&TabbedPane.font&, vFont);
&&&&&& &&& UIManager.put(&MenuBar.font&, vFont);
&&&&&& &&& UIManager.put(&Menu.font&, vFont);
&&&&&& &&& UIManager.put(&MenuItem.font&, vFont);
&&&&&& &&& UIManager.put(&PopupMenu.font&, vFont);
&&&&&& &&& UIManager.put(&CheckBoxMenuItem.font&, vFont);
&&&&&& &&& UIManager.put(&RadioButtonMenuItem.font&, vFont);
&&&&&& &&& UIManager.put(&Spinner.font&, vFont);
&&&&&& &&& UIManager.put(&Tree.font&, vFont);
&&&&&& &&& UIManager.put(&ToolBar.font&, vFont);
&&&&&& &&& UIManager.put(&OptionPane.messageFont&, vFont);
&&&&&& &&& UIManager.put(&OptionPane.buttonFont&, vFont);
SwingvFont所设定的内容。
1.1让窗口更好地居中显示
JFrameJDialogJBuilder
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height & screenSize.height)
&&& frameSize.height = screenSize.&&&&&&&
if (frameSize.width & screenSize.width)
& frameSize.width = screenSize.&&&&&&&
frame.setLocation((screenSize.width-frameSize.width)/2,screenSize.height-frameSize.height) / 2);
1719JFrame
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setPreferredSize(new Dimension(512,450));&&&&&&&&&&&
int frameWidth = this.getPreferredSize().
int frameHeight = this.getPreferredSize().
frame.setSize(frameWidth, frameHeight);
frame.setLocation((screenSize.width - frameWidth) / 2,(screenSize.height - frameHeight) / 2);
2.1获取程序关闭的&钩子&
Runtime.getRuntime().addShutdownHook(shutdownHook);
protected Thread shutdownHook = new PlatformShutdownHook();&&&
&&& protected class PlatformShutdownHook extends Thread {
&&&&&&& public void run()
&&&&&&&&&&& //&&
2.2处理JFrame关闭事件
UIaddActionListener(&&)
//设定标志,让MainFrame自己接收窗口事件
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
然后再实现下面的函数:
protected void processWindowEvent(final WindowEvent pEvent) {
&&&&&&& if (pEvent.getID() == WindowEvent.WINDOW_CLOSING) {
&&&&&&&&&&& /** 防止用户多次点击&关闭&按钮造成重复保存 **/
&&&&&&&&&&& if( !isClosing ) isClosing = true;
&&&&&&&&&&& else& return;
&&&&&&&&&&& //处理JFrame关闭事件&&
&&&&&&& }else{
&&&&&&&&&&& //忽略其他事件,交给JFrame处理
&&&&&&&&&&& super.processWindowEvent(pEvent);
如此一来,我们就可以在窗口被关闭之前通知用户程序正在保存数据的信息,例如后面提到的InfiniteProgressPanel
SwingXDateChooserJDialog
&&JDialogsetAlwaysOnTop(true)&DateChooserDateChooserSwingXDatePickerDateChooserDatePickerSwingXJDialogJDialogJDialog
JTableSwingJTableJDKSwingSet2
Selection StyleSwingSet2JComboBox
4.1间隔色表格及单元格/表头居中显示
JTableAPIRendererRenderer
TableCellRenderergetTableCellRendererComponent(&)
/** 为所有表格设置间隔色 **/
&&& private void setRenderColor(){
for( int i = 0; i & table.getColumnModel().getColumnCount(); i++ )&&&&&& &&&&&&&&&&&&table.getColumn( colname[i] ).setCellRenderer(colorRender );&&&&&&&
setHorizontalAlignment(SwingConstants.CENTER)
JTableRendererRenderer
DefaultTableCellRenderer& renderer = (DefaultTableCellRenderer) table.getTableHeader().getDefaultRenderer();
renderer.setHorizontalAlignment(renderer.CENTER);
4.2让某些单元格不可编辑
//JTableisCellEditable(int row,int column)true(row,column)SingleUnitEditableTableJTableOverwriteisCellEditable(int row,int column)
//设置单元格不可编辑,为缺省实现
&&& public boolean isCellEditable(int row, int column) {
&&&&&&& if( editableColumn != -1){
&&&&&&&&&&& if( column == editableColumn )
&&&&&&&&&&&&&&& return true;
&&&&&&&&&&& return false;
&&&& &&&return false;
其中的editableColumn是一个内部属性,用来指定哪个列可以被编辑。通过这个例子,我相信,如果你想实现奇数行/列可编辑而偶数行/列不可被编辑或者满足特定条件的单元格不可被编辑这样的JTable易如反掌了吧?下面就是我的应用程序的结果:
4.3JTable自排序
JDK6.0JDKTableRowSorter2
TableRowSorter sorter = new TableRowSorter(tableModel);
&&&&&& accAllTable.setRowSorter(sorter);
JTableJDK6.0TableRowSorterRendererRendererJLabel
JEditorPaneHTML
JDK1.4SwingJLabelHTMLHTMLsetText()JEditorPaneJavaWebJEditorPaneWebSwingSet2JEditorPaneJEditorPaneHTMLURL
JEditorPaneHTML
JEditorPane.setPage(String htmlTxt);htmlHTMLCSS
&&&&&& HTMLHTMLJEditorPane.setPage(URL)JEditorPane.setPage(String htmlFilePath)JEditorPaneJEditorPane
&& String vNewReportFileName = &file:///c:/temp.html&;
&& JEditorPane reportPane = new JEditorPane();
&& File f = new File(FileUtil.reportDir,vNewReportFileName);
& FileWriter fw = new FileWriter(f, false);
&& fw.write(&&html&&);
& fw.write(&&head&&);
& fw.write(&&/body&&/html&&);
//清理操作
& &fw.flush();
& &fw.close();
&&f = null;
reportPane.setPage(vNewReportFileName);
CSSTitleTitle
JEditorPaneborder1JEditorPaneIE
InfiniteProgressPanelGlassPane
SwingGlassPane&InfiniteProgressPanel
JavaSwing HackerJavaSwing
InfiniteProgressPanel glassPane = new InfiniteProgressPanel();
frame.setGlassPane(glassPane)
& Thread myThread = new Thread(new Runnable(){
&&&&&&&& public void run()& {
&&&&&&&&&&&&& InfiniteProgressPanel gl = thisRef.glassPane;
&&&&&&&&&&&&& gl.start();
&&&&&&&&&&&&& gl.setText(&正在保存数据请稍候....&);
&&&&&&&&&&&&& try {
&&&&&&&&&&&&&&&& //这里放要做的事情&&
&&&&&&&&&&&&&&&& gl.setText(&保存完毕,欢迎使用!&);
&&&&&&&&&&&&&&&& Thread.sleep(1000);
&&&&&&&&&&&&&& }catch(InterruptedException ex) {
&&&&&&&&&&&&&& }finally{
&&&&&&&&&&&&&&&& gl.stop();
&&&&&&&&&&&&&& }
&&&&&&&&&&& }
myThread.start();&&&&&&&
这里有几个问题需要注意:
InfiniteProgressPanel
InfiniteProgressPanelThread.sleep(1000);是必要的,如果时间设得太短或不设将会导致InfiniteProgressPanel死掉。至于原因我没有时间深究,各位有兴趣可以自行察看其源码,如果你能找到原因高诉我,我会非常感激。
本文已收录于以下专栏:
相关文章推荐
swing布局详解(附示例图)
当选择使用JPanel和顶层容器的content pane时,需要考虑布局管理。JPanel缺省是初始化一个FlowLayout,而content pane缺省...
Java Swing class hierarchy
JComponent, descended directly from Container, is the root c...
作为一个 Java 程序员,从论坛上感受到使用 Java 开发程序的人越来多,心中不免欣慰。但是,同样是从论坛中,看到多数人提到 Java 就以为是网络开发——不是这样的,Java 也可以开发应用程序...
今天给大家介绍一下Java swing开发计算机的一个思路,比较简单,初学者可以借鉴下,大神请绕道。
代码实现如下:
import java.awt.Bor...
本文前言部分为我的一些感想,如果你只对本文介绍的Java实用技巧感兴趣,可以跳过前言直接看正文的内容。
本文的写作动机来源于最近接给人家帮忙写的一个小程序,主要用于管理分期付款的货款的一系列...
Java实用经验总结--Swing篇
转载来源:http://blog.csdn.net/kabini/article/details/1707747
改变Swing应用程序的默...
转载来源:http://blog.csdn.net/kabini/article/details/1733552
1.  
让JEditorPane显示细线表格
1.1. 无效的边框设置法...
1.   日期部分对于像日期、时间和钱这样的对象来说,不同的国家、地区都有不同的显示格式。即便是同一地区,也可能存在差异。但是在不考虑国家化,时间格式相对固定的情形下,对于时间的处理还是相对比较简单的...
转载:http://blog.csdn.net/chenzhiya/article/details/2274181
Java实用经验Swing总结
本文前言部分为我的一些感想,如...
直接进入主题,最近项目需要Swing的知识,自我总结了一些经验供大家分享: 
Swing的程序设计一般可按照下列流程进行:
  1. 引入Swing包
  2. 选择&外观和感觉&
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)&&原自己按照教程写的java swing五子棋小游戏实现了左手下右手下棋及判定胜负 但是时间设置有点问题 加入菜单栏和系统托盘
import java.awt.AWTE
import java.awt.C
import java.awt.F
import java.awt.G
import java.awt.I
import java.awt.MenuI
import java.awt.PopupM
import java.awt.SystemT
import java.awt.T
import java.awt.TrayI
import java.awt.event.ActionE
import java.awt.event.ActionL
import java.awt.event.MouseE
import java.awt.event.MouseL
import java.awt.image.BufferedI
import java.io.F
import java.io.IOE
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.I
import javax.swing.ImageI
import javax.swing.JB
import javax.swing.JF
import javax.swing.JL
import javax.swing.JLayeredP
import javax.swing.JM
import javax.swing.JMenuB
import javax.swing.JMenuI
import javax.swing.JOptionP
import javax.swing.JP
import javax.swing.KeyS
import javax.swing.WindowC
public class MyChess extends JFrame implements MouseListener, Runnable {
int x = 0;
int y = 0;// 保存棋子的 x y坐标
int[][] allChess = new int[15][15];// 保存之前下过的全部棋子的坐标
// 其中数据内容 0: 表示这个点并没有棋子, 1: 表示这个点是黑子, 2:表示这个点是白子
boolean isBlack =
boolean canplay =
String message = &黑方先下&;
int maxTime = 0;// 保存最多拥有时间(秒)
Thread t = new Thread(this);// 做倒计时线程类
int blacktime = 0;
int whitetime = 0;
String blackMessage = &无限制&;
String whiteMessage = &无限制&;
BufferedImage bg =
BufferedImage black =
BufferedImage white =
public MyChess() {
this.setTitle(&我的五子棋&);// 设
this.setSize(500, 600);// 设置窗口大小 500*600
this.setResizable(false);// 设置窗口大小不可被改变
this.setLocationRelativeTo(null);// 设置窗口初始在屏幕正中间
this.setLocationRelativeTo(null);
this.setTray();
this.setIconImage(Toolkit.getDefaultToolkit().createImage(
&logo5.png&));// 给窗体添加一个图标
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置退出
this.addMouseListener(this);// 加入鼠标监听器
JLayeredPane layeredPane = getLayeredPane();
URL url=getClass().getResource(&bg4.jpg&);
Icon icon =new ImageIcon(url);
JLabel bg=new JLabel(icon);
bg.setSize(500,600);
layeredPane.add(bg,new Integer(Integer.MIN_VALUE));
JPanel contenJPanel=(JPanel)getContentPane();
contenJPanel.setOpaque(false);
this.repaint();
t.start();// 启动线程
t.suspend();// 挂起线程
this.repaint();
this.setVisible(true); // 设置窗口显示
//实现菜单&
JMenuItem item1, item2, item3;
menubar = new JMenuBar();
menu = new JMenu(&菜单&);
item1 = new JMenuItem(&重新开始&);
item2 = new JMenuItem(&退出&);
item3 = new JMenuItem(&关于&);
item1.setAccelerator(KeyStroke.getKeyStroke(&1&));
item1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String str = &是否要重新开始游戏?&;
if (JOptionPane.showConfirmDialog(null, str, &重新开始&,
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
for (int i = 0; i & 15; i++) {
for (int j = 0; j & 15; j++) {
allChess[i][j] = 0;// 棋盘清空
message = &黑方先行&;
blacktime = maxT
whitetime = maxT
}); this.repaint();
item2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String str = &是否要退出游戏?&;
if (JOptionPane.showConfirmDialog(null, str, &退出游戏&,
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
System.exit(0); // 退出
item3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String str = &关于&;
JOptionPane.showMessageDialog(null, &吼吼吼吼&);
item2.setAccelerator(KeyStroke.getKeyStroke('2'));
item3.setAccelerator(KeyStroke.getKeyStroke('3'));
menu.add(item1);
menu.addSeparator();
menu.add(item2);
menu.addSeparator();
menu.add(item3);
menubar.add(menu);
setJMenuBar(menubar);
validate();
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
this.setVisible(true);
// clear棋盘方法&
// protected void clearMap() {
// for (int i = 0; i & 15; i++) {
// for (int j = 0; j & 15; j++) {
// allChess[i][j] = '+';
public void setTray(){
if(SystemTray.isSupported()){//判断当前平台是否支持托盘功能
//创建托盘实例
SystemTray tray = SystemTray.getSystemTray();
//创建托盘图标:1.显示图标Image 2.停留提示text 3.弹出菜单popupMenu 4.创建托盘图标实例
//1.创建Image图像
Image image=
image = ImageIO.read(getClass().getResource(&logo2.png&));
} catch (IOException e2) {
// TODO 自动生成的 catch 块
e2.printStackTrace();
//2.停留提示text
String text = &五子棋&;
//3.弹出菜单popupMenu
PopupMenu popMenu = new PopupMenu();
MenuItem itmOpen = new MenuItem(&Start&);
itmOpen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
MenuItem itmHide = new MenuItem(&Hidde&);
itmHide.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
UnVisible();
MenuItem itmExit = new MenuItem(&Exit&);
itmExit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
popMenu.add(itmOpen);
popMenu.add(itmHide);
popMenu.add(itmExit);
//创建托盘图标
TrayIcon trayIcon = new TrayIcon(image,text,popMenu);
//将托盘图标加到托盘上
tray.add(trayIcon);
} catch (AWTException e1) {
e1.printStackTrace();
//内部类中不能直接调用外部类(this不能指向)
public void UnVisible() {
this.setVisible(false);
public void Show() {
this.setVisible(true);
public void Exit() {
System.exit(0);
public static void main(String[] args) {
new MyChess();
public void paint(Graphics g) {
bg = ImageIO.read(getClass().getResource(&bg4.jpg&));// 导入图片
black = ImageIO.read(getClass().getResource(&black.png&));
white = ImageIO.read(getClass().getResource(&white.png&));
} catch (IOException e) {
e.printStackTrace();
BufferedImage bgBufferedImage = new BufferedImage(500, 600,
BufferedImage.TYPE_INT_ARGB);
Graphics g2 = bg.createGraphics();
g2.setFont(new Font(&黑体&, Font.BOLD, 20));
g2.drawString(&游戏信息:& + message, 155, 520);
g2.setColor(Color.BLACK);
g2.setFont(new Font(&黑体&,Font.BOLD,25));
g2.drawString(&开始游戏& , 20, 560);
g2.drawString(&游戏设置& , 150, 560);
g2.drawString(&认输& , 280, 560);
g2.drawString(&关于& , 355, 560);
g2.drawString(&退出& , 430, 560);
g2.setFont(new Font(&宋体&, 0, 14));
g2.drawString(&黑方时间:& + blackMessage, 43, 490);
g2.drawString(&白方时间:& + whiteMessage, 355, 490);
g2.setColor(Color.WHITE);
for (int i = 0; i & 15; i++) {
g2.drawLine(40, 40 + i * 30, 460, 40 + i * 30);
g2.drawLine(40 + i * 30, 40, 40 + i * 30, 460);// 绘制棋盘上的线
// 绘制全部棋子 &
for (int i = 0; i & 15; i++) {
for (int j = 0; j & 15; j++) {
if (allChess[i][j] == 1) {
int tempx = 40 + 30 *
int tempy = 38 + 30 *
g2.drawImage(black, tempx - 12, tempy - 12, null);// 绘制黑子
if (allChess[i][j] == 2) {
int tempx = 40 + 30 *
int tempy = 38 + 30 *
g2.drawImage(white, tempx - 12, tempy - 12, null);// 绘制白子
g.drawImage(bg, 0, 0, this);
public void mouseClicked(MouseEvent e) {
// TODO 自动生成的方法存根
x = e.getX();
y = e.getY();
System.out.println(&当前鼠标坐标:& + x + ',' + y);
if (x & 30 && x & 470 && y & 40 && y & 480) {
x = (x - 40) / 30;
y = (y - 38) / 30;
if (allChess[x][y] == 0) {
// 判断棋子颜色&
if (isBlack == true) {
allChess[x][y] = 1;
message = &轮到白方&;
this.repaint();
JOptionPane.showMessageDialog(rootPane, &轮到白方&);
allChess[x][y] = 2;
message = &轮到黑方&;
this.repaint();
JOptionPane.showMessageDialog(rootPane, &轮到黑方&);
// 判断游戏胜负&
boolean winFlag = this.checkWin();
if (winFlag == true) {
JOptionPane.showMessageDialog(this, &游戏结束,&
+ (allChess[x][y] == 1 ? &黑方& : &白方&) + &获胜!&);
JOptionPane.showMessageDialog(this, &当前位置已经有棋子,请重新落子!&);
this.repaint();
if (e.getX() &= 15 && e.getX() &= 130 && e.getY() &= 540
&& e.getY() &= 590) {
int result = JOptionPane.showConfirmDialog(this, &是否重新开始游戏?&);
if (result == 0) {// 表示重新开始游戏
// 重新开始所要做的操作,1棋盘清空,(allchess这个数组数据归零)2 将游戏信息的显示改回到开始位置
// 3isblack改回到true 黑方先下
for (int i = 0; i & 15; i++) {
for (int j = 0; j & 15; j++) {
allChess[i][j] = 0;// 棋盘清空
message = &黑方先行&;
blacktime = maxT
whitetime = maxT
this.repaint();
if (e.getX() &= 150 && e.getX() &= 260 && e.getY() &= 540
&& e.getY() &= 590) {
String input = JOptionPane
.showInputDialog(&请输入游戏的最大时间(分钟)不能为0:&);
maxTime = Integer.parseInt(input) * 60;// 将String类型强制转换为int类型
if (maxTime &= 0) {
JOptionPane.showMessageDialog(this, &请输入正确时间,不能为负数和0&);
if (maxTime & 0) {
JOptionPane.showConfirmDialog(this, &设置完成!请开始游戏&);
for (int i = 0; i & 15; i++) {
for (int j = 0; j & 15; j++) {
allChess[i][j] = 0;// 棋盘清空
message = &黑方先行&;
if (maxTime & 0) {
blackMessage = maxTime
+ (maxTime / 60 - maxTime / 3600 * 60)
+ (maxTime - maxTime / 60 * 60);
whiteMessage = maxTime
+ (maxTime / 60 - maxTime / 3600 * 60)
+ (maxTime - maxTime / 60 * 60);
t.resume();
blackMessage = &无限制&;
whiteMessage = &无限制&;
this.repaint();
} catch (NumberFormatException e1) {
e1.printStackTrace();
JOptionPane.showMessageDialog(this, &请输入正确!&);
if (e.getX() &= 360 && e.getX() &= 400 && e.getY() &= 540
&& e.getY() &= 590) {
JOptionPane.showMessageDialog(this, &这是一个由Java开发的五子棋游戏程序--by蓝桥班雄鹰队胡靖 &);// 关于
if (e.getX() &= 420 && e.getX() &= 480 && e.getY() &= 540
&& e.getY() &= 600) {
JOptionPane.showMessageDialog(this, &游戏结束!&);// 游戏结束
System.exit(0);
if (e.getX() &= 270 && e.getX() &= 330 && e.getY() &= 540
&& e.getY() &= 590) {
int result = JOptionPane.showConfirmDialog(this, &是否确认认输&);
if (result == 0) {
if (isBlack) {
JOptionPane.showConfirmDialog(this, &黑方已经认输! 游戏结束&);
JOptionPane.showConfirmDialog(this, &白方已经认输! 游戏结束&);
private boolean checkWin() {
boolean flag =
int count = 1;
int color = allChess[x][y];
count = this.checkCount(1, 0, color);
if (count &= 5) {
// 判断纵向
count = this.checkCount(0, 1, color);
if (count &= 5) {
// 判断右上、左下
count = this.checkCount(1, -1, color);
if (count &= 5) {
// 判断右下、左上
count = this.checkCount(1, 1, color);
if (count &= 5) {
// 判断棋子相连&
private int checkCount(int xChange, int yChange, int color) {
int count = 1;
int tempX = xC
int tempY = yC
while (x + xChange &= 0 && x + xChange &= 18 && y + yChange &= 0
&& y + yChange &= 18
&& color == allChess[x + xChange][y + yChange]) {
if (xChange != 0)
xChange++;
if (yChange != 0) {
if (yChange & 0)
yChange++;
yChange--;
xChange = tempX;
yChange = tempY;
while (x - xChange &= 0 && x - xChange &= 18 && y - yChange &= 0
&& y - yChange &= 18
&& color == allChess[x - xChange][y - yChange]) {
if (xChange != 0)
xChange++;
if (yChange != 0) {
if (yChange & 0)
yChange++;
yChange--;
public void mousePressed(MouseEvent e) {
// TODO 自动生成的方法存根
public void mouseReleased(MouseEvent e) {
// TODO 自动生成的方法存根
public void mouseEntered(MouseEvent e) {
// TODO 自动生成的方法存根
public void mouseExited(MouseEvent e) {
// TODO 自动生成的方法存根
public void run() {
if (maxTime & 0) {
while (true) {
if (isBlack) {
blacktime--;
whitetime = maxTime--;
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
blackMessage = blacktime / 3600 + &:&
+ (blacktime / 60 - blacktime / 3600 * 60) + &:&
+ (blacktime - blacktime / 60 * 60);
whiteMessage = whitetime / 3600 + &:&
+ (whitetime / 60 - whitetime / 3600 * 60) + &:&
+ (whitetime - whitetime / 60 * 60);
this.repaint();
System.out.println(blacktime + &--& + whitetime);
}猜你喜欢3个牛币请下载代码后再发表评论//wzq11111/wzq11111/.classpath/wzq11111/.fatjar/wzq11111/.project/wzq11111/.settings/wzq11111/.settings/org.eclipse.core.resources.prefs/wzq11111/.settings/org.eclipse.jdt.core.prefs/wzq11111/bin/wzq11111/bin/wuziqi/wzq11111/bin/wuziqi/MyChess$1.class/wzq11111/bin/wuziqi/bg4.jpg/wzq11111/bin/wuziqi/black.png/wzq11111/bin/wuziqi/logo2.png/wzq11111/bin/wuziqi/logo5.png精精精精原精精原精精相关分享原精原最近下载暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级最近浏览暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级暂无贡献等级扫描二维码关注最代码为好友"/>扫描二维码关注最代码为好友

我要回帖

更多关于 java swing 参考手册 的文章

 

随机推荐