java源码之家 java程序
今天给各位分享java源码之家的知识,其中也会对java程序进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
求一java拼图源程序
package love;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.*;
public class Games extends JFrame implements ActionListener{
private JButton buttons[][];//存储按键的数组
private Container container;//一个容器
private GridLayout layout;//布局方式为GridLayout
private int count= 0, is[]= new int[8];// count的作用是计算按键移动的次数,is[]储存一个随机产生的1到8数字数组
public Games(){
super("拼图游戏");//设置标题
layout= new GridLayout(3, 3);// 3行3列
container= getContentPane();//该容器的布局方式,及其重要,否则产生空引用异常
container.setLayout(layout);//将该布局方式作用于容器
buttons= new JButton[3][3];//给按键数组分配储存空间
int locate1, locate2;// locate1用来指示当前产生的元素 locate2用来指示locate1之前的元素
for(locate1= 0; locate1< 8; locate1++){//该方法作用是产生1到8这8个数,随机分配给数组,即无序排列
int g= new Random().nextInt(8)+ 1;//随机产生一个空白按键,即不显示的那个
is[locate1]= g;
for(locate2= locate1- 1; 0<= locate2; locate2--){
if(is[locate1]== is[locate2])
break;
}
if(locate2!=-1)
locate1--;
}
int temp= 0;
int r= new Random().nextInt(3);//随机产生一个0到3的数,代表空白按键的行
int l= new Random().nextInt(3);//随机产生一个0到3的数,代表空白按键的列
for(int i= 0; i< 3; i++){
for(int j= 0; j< 3; j++){
if(r== i&& l== j){//空白按键设置为9,不显示
buttons[i][j]= new JButton("9");
container.add(buttons[i][j]);
buttons[i][j].setVisible(false);
} else{
buttons[i][j]= new JButton(""+ is[temp++]);//将数组数组的值作为显示的8个按键的名字
container.add(buttons[i][j]);
}
buttons[i][j].addActionListener(this);//注册监听事件
}
}
setSize(300, 300);//设置显示容器区域大小
setVisible(true);
}
public void actionPerformed(ActionEvent event){//事件处理,由于计算量小该处将所有按键单独分析
JButton b=(JButton) event.getSource();
if(b== buttons[0][0]){
if(buttons[0][1].getText().equals("9")){
buttons[0][1].setText(""+ buttons[0][0].getText());
buttons[0][1].setVisible(true);
buttons[0][0].setText("9");
buttons[0][0].setVisible(false);
count++;
} else if(buttons[1][0].getText().equals("9")){
buttons[1][0].setText(""+ buttons[0][0].getText());
buttons[1][0].setVisible(true);
buttons[0][0].setText("9");
buttons[0][0].setVisible(false);
count++;
}
}
else if(b== buttons[0][1]){
if(buttons[0][0].getText().equals("9")){
buttons[0][0].setText(""+ buttons[0][1].getText());
buttons[0][0].setVisible(true);
buttons[0][1].setText("9");
buttons[0][1].setVisible(false);
count++;
} else if(buttons[0][2].getText().equals("9")){
buttons[0][2].setText(""+ buttons[0][1].getText());
buttons[0][2].setVisible(true);
buttons[0][1].setText("9");
buttons[0][1].setVisible(false);
count++;
} else if(buttons[1][1].getText().equals("9")){
buttons[1][1].setText(""+ buttons[0][1].getText());
buttons[1][1].setVisible(true);
buttons[0][1].setText("9");
buttons[0][1].setVisible(false);
count++;
}
} else if(b== buttons[0][2]){
if(buttons[0][1].getText().equals("9")){
buttons[0][1].setText(""+ buttons[0][2].getText());
buttons[0][1].setVisible(true);
buttons[0][2].setText("9");
buttons[0][2].setVisible(false);
count++;
} else if(buttons[1][2].getText().equals("9")){
buttons[1][2].setText(""+ buttons[0][2].getText());
buttons[1][2].setVisible(true);
buttons[0][2].setText("9");
buttons[0][2].setVisible(false);
count++;
}
} else if(b== buttons[1][0]){
if(buttons[0][0].getText().equals("9")){
buttons[0][0].setText(""+ buttons[1][0].getText());
buttons[0][0].setVisible(true);
buttons[1][0].setText("9");
buttons[1][0].setVisible(false);
count++;
} else if(buttons[1][1].getText().equals("9")){
buttons[1][1].setText(""+ buttons[1][0].getText());
buttons[1][1].setVisible(true);
buttons[1][0].setText("9");
buttons[1][0].setVisible(false);
count++;
} else if(buttons[2][0].getText().equals("9")){
buttons[2][0].setText(""+ buttons[1][0].getText());
buttons[2][0].setVisible(true);
buttons[1][0].setText("9");
buttons[1][0].setVisible(false);
count++;
}
} else if(b== buttons[1][1]){
if(buttons[0][1].getText().equals("9")){
buttons[0][1].setText(""+ buttons[1][1].getText());
buttons[0][1].setVisible(true);
buttons[1][1].setText("9");
buttons[1][1].setVisible(false);
count++;
} else if(buttons[1][0].getText().equals("9")){
buttons[1][0].setText(""+ buttons[1][1].getText());
buttons[1][0].setVisible(true);
buttons[1][1].setText("9");
buttons[1][1].setVisible(false);
count++;
} else if(buttons[1][2].getText().equals("9")){
buttons[1][2].setText(""+ buttons[1][1].getText());
buttons[1][2].setVisible(true);
buttons[1][1].setText("9");
buttons[1][1].setVisible(false);
count++;
} else if(buttons[2][1].getText().equals("9")){
buttons[2][1].setText(""+ buttons[1][1].getText());
buttons[2][1].setVisible(true);
buttons[1][1].setText("9");
buttons[1][1].setVisible(false);
count++;
}
} else if(b== buttons[1][2]){
if(buttons[0][2].getText().equals("9")){
buttons[0][2].setText(""+ buttons[1][2].getText());
buttons[0][2].setVisible(true);
buttons[1][2].setText("9");
buttons[1][2].setVisible(false);
count++;
} else if(buttons[2][2].getText().equals("9")){
buttons[2][2].setText(""+ buttons[1][2].getText());
buttons[2][2].setVisible(true);
buttons[1][2].setText("9");
buttons[1][2].setVisible(false);
count++;
} else if(buttons[1][1].getText().equals("9")){
buttons[1][1].setText(""+ buttons[1][2].getText());
buttons[1][1].setVisible(true);
buttons[1][2].setText("9");
buttons[1][2].setVisible(false);
count++;
}
} else if(b== buttons[2][0]){
if(buttons[1][0].getText().equals("9")){
buttons[1][0].setText(""+ buttons[2][0].getText());
buttons[1][0].setVisible(true);
buttons[2][0].setText("9");
buttons[2][0].setVisible(false);
count++;
} else if(buttons[2][1].getText().equals("9")){
buttons[2][1].setText(""+ buttons[2][0].getText());
buttons[2][1].setVisible(true);
buttons[2][0].setText("9");
buttons[2][0].setVisible(false);
count++;
}
}
else if(b== buttons[2][1]){
if(buttons[2][0].getText().equals("9")){
buttons[2][0].setText(""+ buttons[2][1].getText());
buttons[2][0].setVisible(true);
buttons[2][1].setText("9");
buttons[2][1].setVisible(false);
count++;
} else if(buttons[2][2].getText().equals("9")){
buttons[2][2].setText(""+ buttons[2][1].getText());
buttons[2][2].setVisible(true);
buttons[2][1].setText("9");
buttons[2][1].setVisible(false);
count++;
} else if(buttons[1][1].getText().equals("9")){
buttons[1][1].setText(""+ buttons[2][1].getText());
buttons[1][1].setVisible(true);
buttons[2][1].setText("9");
buttons[2][1].setVisible(false);
count++;
}
} else if(b== buttons[2][2]){
if(buttons[2][1].getText().equals("9")){
buttons[2][1].setText(""+ buttons[2][2].getText());
buttons[2][1].setVisible(true);
buttons[2][2].setText("9");
buttons[2][2].setVisible(false);
count++;
} else if(buttons[1][2].getText().equals("9")){
buttons[1][2].setText(""+ buttons[2][2].getText());
buttons[1][2].setVisible(true);
buttons[2][2].setText("9");
buttons[2][2].setVisible(false);
count++;
}
}
if(buttons[0][0].getText().equals("1")//假如1到8已经排列完成,则执行该语句
&& buttons[0][1].getText().equals("2")
&& buttons[0][2].getText().equals("3")
&& buttons[1][0].getText().equals("4")
&& buttons[1][1].getText().equals("5")
&& buttons[1][2].getText().equals("6")
&& buttons[2][0].getText().equals("7")
&& buttons[2][1].getText().equals("8")){
JOptionPane.showMessageDialog(null,"您一共花费了"+ count+"步完成了游戏!");//弹出对话框,显示共移动步数
System.exit(0);//退出程序
}
}
public static void main(String[] args){
Games game= new Games();
game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
求好用的java开发工具
Eclipse点击次数:25063
Eclipse平台是IBM向开发源码社区捐赠的开发框架,它之所以出名并不是因为IBM宣称投入开发的资金总数—4千万美元,而是因为如此巨大的投入所带来的成果:一个成熟的、精心设计的以及可扩展的体系结构。
Jedit点击次数:10303
jedit是一个用java编写的源码开放的文本编辑器。有很多有用的特性,包括语法加亮显示,括号匹配,表达式搜索,多个文件搜索和替换,定义键盘宏等等。jedit的插件结构非常完善。在日本相当受欢迎!
DrJava点击次数:8124
这是一个免费的、轻量型的开放源码 Java IDE,具有集成的读-计算-打印(read-eval-print)循环、调试器和 JUnit支持。
NetBeans点击次数:9948
NetBeans.org由Sun公司在2000年创立,它是开放源运动以及开发人员和客户社区的家园,旨在构建世界级的Java IDE。NetBeans.org全球IDE下载次数已超过160万,拥有2万多个注册成员,并且还在不断发展壮大。其最新研发的NetBeans 3.5.1中文版将帮助中国的开发人员创建更迅速、更稳定和更灵活的开发环境。NetBeans当前可以在Solaris、Windows、Linux和Macintosh OS X平台上进行开发,并在SPL(Sun公用许可)范围内使用。 NetBeans 3.5.1和开放源码网站已经获得业界广泛认可,并支持NetBeans扩展IDE模块目录中大约100多个模块。
NetBeans是一个全功能的开放源码Java IDE,可以帮助开发人员编写、编译、调试和部署Java应用,并将版本控制和XML编辑融入其众多功能之中。NetBeans 3.5.1可支持Java 2平台标准版(J2SE)应用的创建、采用JSP和Servlet的2层Web应用的创建,以及用于2层Web应用的API及软件的核心组的创建。此外,NetBeans 3.5.1还预装了一个Web服务器,即TomCat,从而免除了繁琐的配置和安装过程。所有这些都为Java开发人员创造了一个可扩展的开放源多平台的Java IDE,以支持他们在各自所选择的环境中从事开发工作,如Solaris、Linux、Windows或Macintosh。NetBeans 3.5.1也?面向JDK 1.4.0、1.4.1和1.4.2的应用开发提供支持。
J点击次数:7604
Java文本编辑程序。遵循GPL- General Public协议。
BlueJ点击次数:10242
BlueJ是一个专门为入门级教学设计的JavaTM开发环境。它是由澳大利亚墨尔本Monash大学BlueJ小组设计并开发的。
JAG点击次数:7513
JAG是一个可从数据库或UML模型创建复杂的可用的J2EE应用的GUI工具,它的目的是减轻开发者的重复工作。JAG是开始只是Finalist IT Group内部使用的开发工具但后来发展成一个开源的项目并且已经成功运应在许多商业项目上.
Jext点击次数:7630
Jext是一个Java开发的免费的源码编辑器.基于GPL licence发布.Jext除了可以编辑Java源代码之外还可以编辑其它类型的源代码如:C, C++, C#, ASP, PHP, Python, Perl, Ruby, TeX, XHTML, XSLT, Eiffel, JSP...等.除此之外它还提供其它一些功能,可利用书签(bookmark)工具来管理你的项目,可直接打一个压缩文件,可把已在工作区中打开的文件加以分类,可把你的源代码通过Email发送,可直接从Internet获得一个文件等.
Redwood点击次数:8388
Redwood是一个革命性的IDE,它让程序编辑器以一种新的方式来显示源代码.
AbaGUIBuilder点击次数:7962
AbaGUIBuilder是一个用Java开发的可视化Java GUI设计器。它类似于Delphi/VB设计器,能够让应用程序开发者快速设计和创建UI Java应用程序。它当前还包括一套数据库感知组件(aware component).
EasyEclipse点击次数:8403
EasyEclipse这是一个把EclipseIDE与一些关键的开源插件分类打包在一起.以使得Eclipse更易于下载,安装,使用.以下是它目前提供的分类组合.
下载网址
如何将Java源代码进行分行麻烦告诉我
一些企业在招聘程序员的时候,总会特意提出一个要求,即要求具有良好的编码规范。确实现在程序开发人员已经不在是单枪匹马的单干,而是讲究团体作战。此时就要求团队内的乘员都可能够恪守代码的编写规范,这对于乘员之间共享代码、排错等作业都具有非常现实的意义。这在Java语言中当然也不例外。笔者借这次机会,就跟大家分享一下Java源代码的折行规则。虽然这基本不涉及到功能层面的内容,但是对于提高代码的阅读性却有不可替代的作用。
一、代码的最大长度。
虽然在Java的编译器中对于代码的最大长度没有硬性的规定。但是如果代码的长度太长,超过了编译器的最当行宽,显然阅读起来比较麻烦。为此根据笔者的经验,通常情况下Java源代码的行长度不应该大于80个字符。如果超过这个长度的话,在一些开发工具和编辑器上就无法很好的显示。如需要通过滚动条来显示后面部分的代码。当其他项目成员阅读这超长的代码时,就会看得眼花缭乱。当人的温饱问题解决了之后,就需要开始注意美观方面的问题。所以程序开发人员在开发应用程序的时候,要尽量避免书写长的代码。如果代码的每行长度确实需要超过80个字符的话(最好将每行代码的长度控制在70个字符左右),那么就需要对代码进行分行。
二、在恰当的地方对代码进行分行。
笔者建议将Java源代码每行的长度控制在70个字符、最大不超过80个字符。当超过这个字符长度的时候,开发人员就需要考虑在恰当的地方对他们进行分行处理。不过这个分行也不是说开发人员想在哪里进行分行就在哪里进行分行。这个分行是有一定技巧的。虽然这些技巧大部分并不是强制性的规定,但是都是一些专家们的经验总结,可以提高代码的阅读性。为此笔者希望各位程序开发能够严格的遵守。
技巧一:高层折行优于低层折行。
这个技巧是说,在考虑对代码进行折行处理的时候,需要注意代码的层次性。如某段代码涉及到混合四则运算,而四则运算又有明显的运算顺序,此时对代码进行折行时就最好能够在四则运算的关键顺序上进行折行处理。如现在有如下的一段代码:
Mynum=mynum1*(mynum1+mynue2+mynum3-mynum4)+8*mynum5
如果要对这段代码进行折行的话,该在哪个地方加入一个折行符号呢?如果是笔者处理的话,笔者会按如下的格式对代码进行折行处理。
Mynum=mynum1*(mynum1+mynue2+mynum3-mynum4)
+8*mynum5
这主要是根据四则运算的运算层次来进行折行的。显然,*符号的优先级要比+符号要高。所以在+号前面对其进行折行处理,那么就可以一目了然的反应出代码的运算层次。可以大幅度的提高代码的阅读性。所以代码折行的第一个技巧就是高层折行优于低层折行。如此的话,可以使得应用程序的结构代码更加的清晰,更容易被团队成员所理解。
技巧二:在运算符前面进行折行处理。
其实在如上的折行技巧中,还隐藏着一个规则,即在运算符之前进行折行。如上例所示,笔者就是在+号前面进行折行,而不是在+号后面进行折行处理。这主要也是考虑到代码的可读性。如上面这个例子中,如果在+号后面进行折行处理的话,则下一行就会给人一种凭空多出来的感觉,显得代码很不连贯。跟这个规则类似,如果在折行处理的时候遇到逗号时,那么最好能够在逗号后面进行折行。如在一个方法中,需要传入5个参数。此时如果代码行比较长,那么就需要在几个参数之间进行折行处理。此时最理想的折行位置,就是在某个参数的逗号后面。注意,使在逗号后面进行折行,而不是在逗号前面。因为一个参数一个逗号是匹对的。而如果一个逗号加一个参数,则让人看起来很不舒服。
技巧三:这行代码的对起方式。
当不得已对代码进行折行处理时,下一行的代码应该与其同等级的代码行左对齐。如上例所示,在+号前面将某一段四则运算公式进行折行处理的时候,其+号符号已经采取缩进处理。其缩进后的效果就是要与其同等级的代码行左对齐。如此的话,明眼人一看就知道这段代码采取过折行处理;而且跟上一行代码的层次关系。当一段代码被分割成三行甚至跟更多行数的时候,这个规则会非常的有用。如果能够严格遵守这个规则,即使将代码分割成多行,看起来也不会觉得那么混乱。反而给人一种比较有层次的感觉。
另外在采取缩进处理的时候,可以利用Tab键来提高缩进处理的效率。因为直接按空格的话,有可能空格字符数量不一致,会让人觉得层次不起,产生比较大的混乱。一般情况下,当代码行两侧距离页边的距离比较大,看其来不怎么舒服时,可以在代码行中通过插入TAB键(会在代码行中连续插入8个字符)来提高代码的阅读性,让代码的缩进实现统一。
技巧四:为变量寻找一个合适的位置。
在编写应用程序时,尽量将变量声明放置在一个代码块的开始处,也就是说{}花括号的开始位置。虽然说可以在需要使用变量的时候再对其进行声明。但是笔者不同义如此操作。因为如果在的呢感到使用变量的时候再来声明变量时,会降低代码的可读性。同理,也需要避免低层声明与高层声明重复,这样会引起代码混乱并可能引发程序功能性错误。而且这种错误在后续的排错中很难被发现。为此要在应用程序开发的时候就要尽量避免这种错误。
在声明变量的时候,有时候可能代码很简单,生命变量的行总共加起来也不会超过十个字符。此时能否把多个变量的声明写在同一行呢?从就技术上来说,这是可行的。也就是说,Java编译器允许将多个变量定义在同一行上。但是从阅读性上来说,这并不是很好的做法。笔者的建议是,即使变量定义再简单,或者变量比较多,也最好分行进行变量的声明。也就是说,一行声明一个变量。这可以提高代码的可阅读性。而且有时候往往需要对变量加一个注释说明变量的用途,如果以行定义一个变量,添加行注释也相对简单许多。
总之,以上的这些折行的规则基本上不会影响到代码的运行。但是,对于代码的维护与后续的排错、升级、二次开发等等具有不可忽视的作用。而且现在基本上应用程序开发式团队开发,故大家都遵守同样的代码编写规范是非常重要的。笔者在开发一个应用程序的时候,事先都会花一定的时间,跟项目成员强调这些折行的规则。目的只有一个,就是提高代码的可读性,便于后续代码的共享与维护。毕竟后续面对这些代码的,并不是客户,而是我们自己。我们程序员在编写代码的时候,不能够搬起石头砸自己的脚。笔者认为,现在一个合格的程序人员,不仅技术功底上要过得硬,而且还必须要遵守这些无形规则的约束。难怪现在这么多企业在挑选程序开发人员的时候,都会注明良好的编码规范。现在对于这些无形中的条条框框,项目经理已经开始重视起来。
如果你还想了解更多这方面的信息,记得收藏关注本站。