利用Java Swing 实现游戏开发-Java基础-Java-编程开发

java swing(GUI图形化界面)基础教程4-游戏开发 前3篇大概讲了基本使用,这一篇来搞游戏雏形 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

Swing初体验

  对于想学习Swing编程的朋友,我们特地为大家准备了一些小窍门。首先,下载并阅读代码是极有必要的。由于这是一篇关于Swing的教程,所以,我们只是尽可能讲解一些与Swing有关的内容,与Swing无关的内容一般不会涉及,例如算法部分。其次,受篇幅限制,也不可能在这里将每部分代码都写得完完整整的,所以,大家也需要对照完整代码来看。最后,为了使大家更容易把精力集中在Swing学习上,我们也将游戏开发中所需资源放在下载文件中,大家下载后便能够编译运行,看到执行结果。(下载游戏源文件)

  1.顶层容器

  什么是顶层容器?当我们使用Java进行图形编程的时候,图在哪里绘制呢?我们需要一个能够提供图形绘制的容器,这个容器就被称为顶层容器,你也可以把它想象成一个窗口。顶层容器是进行图形编程的基础,一切图形化的东西,都必然包括在顶层容器中。在Swing中,我们有三种可以使用的顶层容器,它们分别是:

  JFrame:用来设计类似于Windows系统中的窗口形式的应用程序。
  JDialog:和JFrame类似,只不过JDialog是用来设计对话框。
  JApplet:用来设计可以在嵌入在网页中的Java小程序。

  如果需要使用Swing制作一个窗口类程序,我们的代码看起来应该是这样:

import javax.swing.*;

public class KyodaiUI
extends JFrame {
……
}
  2.控件

  控件是构成应用程序界面的基本元素,按钮、文本框、进度条等,这些都是控件。控件(这里我们只讨论可视化控件)又可以分为容器控件和非容器控件。从字面意义上来理解,容器控件就是能包含其他控件的特殊控件,例如,Java中的JPanel控件就属于容器型控件,我们可以在JPanel中放置按钮、文本框等非容器控件,你甚至可以在JPanel中再放置若干个JPanel控件(值得注意的是,顶层容器也是容器型控件,每一个窗口应用程序中有且只能有一个顶层容器控件,换句话说,顶层容器不能包括在其他的控件中)。

  Java中的容器控件有很多,除刚才提到的JPanel外,还有JTabbedPane、JScrollPane等,非容器控件有JButton、JLabel、JTextField等。如果你需要向某个容器型的控件中添加控件,你可以使用 add(Component comp) 方法来实现,如:
JPanel panel = new JPanel();
JButton button = new JButton();
panel.add(button);
  3.布局

  什么是布局?布局是Java中用来控制控件排列位置的一种界面管理系统。使用过其他可视化编程开发语言的人在初次接触Java界面设计时,总会感觉到Java界面设计很别扭:居然没有提供所见即所得的设置控件坐标的方法!然而,事实证明,Java本身提供的布局管理系统也一样能够出色地完成我们的需要,而且在跨平台时表现得更有优势。

  常用的布局有:

  BorderLayout:将界面分割为上下左右以及中间一块区域的管理系统,在BorderLayout布局中,最多你只能放5个控件,如果超过5个控件,建议还是选用其他的布局系统吧。

  GridLayout:GridLayout是将用户界面切割为棋盘一样的布局管理系统。如果我们要设计一个类似于Windows中自带的计算器软件,GridLayout无疑是最佳选择。

  FlowLayout:FlowLayout与上述两类布局管理系统不太一样,在FlowLayout中,你不必指定每个控件放在哪,你只需要把控件加入到FlowLayout中,FlowLayout就会根据你添加控件的顺序依次放置控件,如果空间不够,会自动换行。

  在对这几个布局管理系统有了基本认识后,我们就一起来进入界面设计吧。在仔细观察了QQ游戏中“连连看”的设定后,我们可以发现,整个界面分为三个区,顶部是系统菜单区,占地面积最大的是用户游戏区,另外还有一个用户交互区,每个区域中都由若干控件组成。

  这么多控件,我们从哪开始入手呢?由于容器控件中可以放置其他控件,因此,我们只需要先确定放置的容器控件就可以了。 既然已经知道需要使用容器控件的个数,接下来让我们就进入布局管理系统的选择。用GridLayout?似乎有点勉强,用FlowLayout?还有更好的选择吗?对了,我想你一定想到了是BorderLayout吧,如下图2所示。

  动手之前,大家一定要注意的是,界面的设计要先考虑好尺寸,不管是主程序界面的大小还是每个区域的大小,如果没有设计好合适的尺寸,将来改动起来会十分痛苦。

  下面便是相应的源程序:
import java.awt.*;
import javax.swing.*;

public class KyodaiUI extends JFrame {
public KyodaiUI() {
this.setSize(780, 500); //将窗体的大小设定为780*500
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false); //窗体不能改变大小
this.setTitle("连连看"); //设置标题

JPanel toolBar = new JPanel();
toolBar.setBackground(Color.white);
toolBar.setPreferredSize(new Dimension(780, 48));

  JPanel actionPanel = new JPanel(); //新建JPanel型的控件
actionPanel.setBackground(Color.yellow); //设置背景色
actionPanel.setPreferredSize(new Dimension(160, 380)); //设置大小

 JPanel contentPanel = new JPanel();
contentPanel.setBackground(Color.blue);
contentPanel.setPreferredSize(new Dimension(620, 380));
this.getContentPane().add(toolBar, BorderLayout.NORTH);
this.getContentPane().add(actionPanel, BorderLayout.EAST);
this.getContentPane().add(contentPanel, BorderLayout.CENTER);
}

   public static void main(String[] args) throws HeadlessException {
KyodaiUI kyodaiUI = new KyodaiUI();
kyodaiUI.show();
}
}
  让我们来看看上面这段程序是如何运行的。首先,extends JFrame表明了这是从JFrame中继承过来的,JFrame是最基本的顶层容器控件。实际上,在JDK中,以字母J打头的控件都是Swing控件。然后设置了容器的属性,其中,setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)是用来告诉Java虚拟机,当用户点击窗体右上角的“关闭”按钮时,关闭该窗口进程。如果不这么做的话,你会发现虽然你可以点将窗口关闭,然而程序却没有退出。在接下来的代码中,我们为顶层容器添加了三个Panel容器。要注意的是,在AWT中,我们可以直接写为add(toolBar, BorderLayout.NORTH) ,而在 Swing 中却一定要写成getContentPane(). add(toolBar, BorderLayout.NORTH) ,否则程序就会出错。

  现在大家可以放在编译运行看看,是不是和我的运行结果一样

  4.边框

  虽然我们使用了不同前景色来区别不同的区域,然而却没有层次感,加上边框一定会漂亮许多。

  在Java中,所有以J打头的Swing控件都可以使用setBorder方法来为自己设置边框。边框有很多种,线型、凸起、凹下、空的,你甚至可以自由组合形成个人风格。所有的Border都必须使用javax.swing.BorderFactory中提供的静态方法来创建,比如:

Border border = BorderFactory.createBevelBorder(BevelBorder.LOWERED,
new Color(45, 92, 162),
new Color(43, 66, 97),
new Color(45, 92, 162),
new Color(84, 123, 200));
  现在,我们将toolBar.setBackground(Color.white)改为toolBar.setBorder(border),立体效果是不是已经出现了?


  实战 写上自己的大名

  现在我们已经有了一个能够运行的界面了,虽然它什么也做不了,但是请你别慌,罗马不是一天建成的。

  现在让我们在菜单区提供一个“关于”菜单,用来显示程序的信息,难道你不想让别人知道你的大名吗?Swing本身就提供了现成的按钮控件JButton,我们只需要创建一个新的按钮:JButton about = new JButton("关于");这个按钮该怎么放到菜单区而不是别的地方呢?我们可以加入下面的代码:toolBar.add(about);咦,怎么点按钮没有反应?这是因为你还没有告诉程序点击按钮时要做什么事情呢。要为按钮添加事件响应,首先需要使用about.addActionListener(this)来告诉程序监听按钮按下时的事件,由于ActionListener是一个程序接口,因此,我们在类的申明的地方也得做一点小小的修改:public class KyodaiUI extends JFrame implements ActionListener {...}实现ActionListener接口是为了告诉程序我要进行事件处理了。当然,最后我们得添加响应事件的代码:
public void actionPerformed(ActionEvent e) {
if (e.getSource() == about) {
JOptionPane.showMessageDialog(this, "我的大名", "关于",
JOptionPane.INFORMATION_MESSAGE);
return ;
}
}
  其中,e.getSource() 表示当前触发事件的控件,由于我们的程序中往往会有多个以上的控件,这些控件都有可能产生事件,所以我们必须使用这个方法来找到产生事情的控件。

  小结

  让我们一起来回顾一下今天所学的内容:首先我们了解了顶层容器,也知道了控件分为容器控件和非容器控件,同时还知道使用边框,最后,我们还小小的处理了一下按钮的事件。

  学而时习之,不亦说乎,就让我留点小小的作业,帮助大家巩固一下今天所学的内容:上面我们添加的按钮在菜单栏的中间,并不美观,请大家放到左边或右边试试。

  最后向大家提供一些比较好的参考资料:

  ●Creating a GUI with JFC/Swing
   http://java.sun.com/docs/books/tutorial/uiswing/index.html
  ●2D Graphics
   http://java.sun.com/docs/books/tutorial/2d/index.html
  ●JDK API
   http://java.sun.com/j2se/1.4.2/docs/api/index.html

利用Java Swing 实现游戏开发 谁知道通天的巴比伦塔耗费了多少沙石?又有谁知道罗马的建成经历了多少个日夜?我们惟一知道的是,没有一块块砖石的垒砌,就没有蜿蜒万里的长城;没有巨石和黏土的堆集,就没有亘古不变的金字塔。由此可见,基础知识的准备对于我们学习任何事物都至关重要,那么,就让我们从认识Swing的一些基础功能开始,启动我们建造罗马的伟大工程吧!   前言  Java咖啡馆已经开张不少时日了,如果你已经喜欢上了Java 阅读详情

相关推荐

Java Swing游戏开发学习15

Non-game play screen非游戏屏幕

ximen502的专栏 1064

java swing游戏开发

java游戏开发爱好者的经典资料,含有几款使用游戏,配有源码和可执行文件

Java Swing游戏开发学习28

Projectile远程武器,以发射火球为例。

ximen502的专栏 1131

java写的贪吃舌游戏,java swing界面。

java写的贪吃舌游戏,适合初学java的学习研究,也可以体会一下这个游戏的算法。我是用很多小矩形组成舌的身体,圆形当食物。吃了食物,舌的身体就加一个小矩形。

Java Swing实现简易五子棋游戏教程

五子棋(Gomoku)是一种两人对弈的纯策略型棋类游戏,目标是在15x15的棋盘上连成五子连线。尽管规则简单,但其策略丰富,适合编程实现,是学习编程思维和软件开发的良好实践。Swing是Java的一个用于开发图形用户界面(GUI)的工具包,它是Java基础类库的一部分,允许程序员构建复杂的图形用户界面,以提供更为丰富、交互性更强的桌面应用程序。Swing提供了一种模型-视图-控制器(MVC)的设计架构,能够帮助开发者分离数据的处理逻辑和数据的表现逻辑。

weixin_42613017的博客 737

构建大富翁游戏:Monopoly的Java与Swing实践指南

Java是一种高级的、面向对象的编程语言,由Sun Microsystems公司在1995年发布。它具备跨平台特性,通过Java虚拟机(JVM)运行,可以运行在任何安装了JVM的设备上。Java广泛用于企业级应用、移动应用、游戏开发和大数据技术等领域。大富翁游戏通常由2到6名玩家参与,玩家轮流掷骰子,根据点数移动棋子,并根据落在不同格子上的结果进行购买地产、支付过路费、抽取机会或命运卡等操作。游戏的目标是在所有其他玩家破产时,拥有最多的资产,成为最后的富翁。

weixin_35734408的博客 1047

java swing游戏开发_如何在java项目中利用swing框架实现一个贪吃蛇游戏

如何在java项目中利用swing框架实现一个贪吃蛇游戏发布时间:2020-12-18 14:17:45来源:亿速云阅读:91作者:Leah本篇文章给大家分享的是有关如何在java项目中利用swing框架实现一个贪吃蛇游戏,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、编写main方法packagegame;importjava...

weixin_33321992的博客 369

Java Swing推箱子小游戏实战教程

本文还有配套的精品资源,点击获取 简介:推箱子是一款经典的逻辑益智游戏,本资源利用Java Swing库完整开发了一款推箱子小游戏,并提供源码、教学视频、说明文档和PPT,非常适合Java初学者和游戏开发爱好者学习。推箱子游戏展示了如何使用Swing创建GUI界面和游戏交互,包括游戏逻辑实现、地图设计、角色移动、碰撞检测等。教程包含游戏开发的整个流程,旨在提升Java编程及...

weixin_31569663的博客 1281

Java Swing游戏开发学习25

Useful Functions有用的功能,显示一些调试信息,实时刷新地图,查看修改效果。

ximen502的专栏 473

Java游戏开发入门源码合集实战项目

进一步抽象为通用事件总线,支持任意类型事件发布与订阅:= null) {// 使用示例bus.subscribe(PlayerDamageEvent.class, e -> System.out.println("播放受击动画"));传统 if-else 判断角色状态易导致代码臃肿。状态模式将每个状态封装为独立类:System.out.println("角色静止中...");System.out.println("角色正在移动...");

weixin_33597080的博客 760

Java课程设计实战:泡泡糖游戏开发与Swing碰撞检测详解

Java课程设计经常要求实现一个小型游戏,考验面向对象建模与GUI编程的综合能力。Swing作为JDK自带的轻量级窗体工具包,在课程实践中依然具有稳定性和易用性优势。游戏开发中的核心问题包括:如何规划类结构、如何驱动游戏循环、如何实现物体间碰撞检测,以及如何利用配置文件管理游戏参数。矩形相交算法是碰撞检测的常用实现方案,配合Timer定时器可构建流畅的动画循环。这类项目还能锻炼事件监听、线程调度、文件读写等基础工程能力,应用场景覆盖从期末大作业到个人项目练手。本文以泡泡糖游戏为例,完整拆解了从类设计到核心循

weixin_27215337的博客 203

Swing 连连看游戏开发实战

本文还有配套的精品资源,点击获取 简介:Swing 连连看是一款基于 Java Swing 库开发的经典休闲游戏,本课程将深入讲解其开发过程。从 Swing 基础组件到游戏逻辑实现,再到事件监听和动画特效,你将全面掌握 Swing 连连看游戏的制作方法。通过实践任务,你将提升对 Swing 组件、事件处理、游戏设计和编程技巧的理解。 1. Swing 基础组件介绍...

weixin_35671843的博客 1036

Java Swing桌面游戏开发:潜艇大战实战指南

本文还有配套的精品资源,点击获取 简介:Java Swing潜艇大战是一个利用Java语言和Swing库构建的桌面游戏,它涉及Java基础、Swing组件、事件监听、多线程编程、图形绘制和动画效果等技术。玩家通过操作潜艇、发射子弹等进行游戏,项目中还包括游戏逻辑、文件I/O操作和详细的代码注释,适合Java初学者学习游戏开发。 1. Java基础知识在游戏开发中的...

weixin_42571280的博客 1489

掌握Java+Swing:五子棋游戏开发实战

Java是一种广泛使用的面向对象的编程语言,具有跨平台、一次编写到处运行的特点。为了开发Java程序,必须安装Java开发工具包(JDK)。JDK不仅包括Java运行时环境(JRE),还包括编译器(javac)和其他工具(如Java文档生成器javadoc和打包工具jar)。安装完成后,配置环境变量JAVA_HOME并更新PATH,这是运行和编译Java程序的前提条件。在Swing库中,有几种重要的组件,它们是创建任何图形用户界面的基础:JFrame。

weixin_31185473的博客 681

基于Java Swing的蜘蛛纸牌游戏开发实战

Java Swing 是 Java SE 中用于构建桌面应用程序 GUI 的核心库之一。与 AWT 相比,Swing 是完全基于 Java 的轻量级组件库,不依赖于本地操作系统提供的图形支持,因此具有更好的跨平台兼容性和可定制性。在蜘蛛纸牌这样的桌面游戏中,常常需要自定义组件以实现牌的绘制、拖拽、翻转等交互功能。Swing 提供了方法供开发者进行自定义绘制,并支持拖放操作的实现。

weixin_42629522的博客 975

基于Java Swing的坦克大战游戏开发实战

Java Swing作为Java平台上的核心图形界面库,凭借其跨平台性、丰富的组件库和良好的可扩展性,广泛应用于桌面应用开发。近年来,随着轻量级游戏开发需求的增长,Swing也被用于实现简单的2D桌面游戏,如经典的“坦克大战”。本章将探讨使用Swing进行游戏开发的可行性,分析其在图形渲染、事件处理与界面布局方面的优势,并介绍如何构建一个基于Swing的游戏框架,为后续章节的功能实现打下基础。

weixin_36019375的博客 325
上一篇: 用Java设计下载软件-Java基础-Java-编程开发
下一篇: 用Java从网上抓取指定URL源码的方案-Java基础-Java-编程开发
java169
博客等级 码龄18年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值