我在很早很早就思考,生命是什么,生命怎样出现,生命是否是进化至现在?

世界总是熵增的,为什么会出现生命这样的事物来抵抗熵增呢?

到了大学,接触了计算机,使得我能够借助计算机去解决这样一些问题,尝试用计算机来做出一些合理的解释

我的想法是,设定游戏规则,在平面100*100的范围内,有10000个空方块,每个方块都能够生存一个细胞

然后开始设置复杂的规则

1.给定细胞分裂次数限制,如果细胞分裂次数达到限制,将无法继续分裂

2.给定细胞年龄,自从该细胞诞生起,记年龄为0,此后每个时间段过后都会年龄加一,当达到成熟年龄的时候,如果身边8个方块如果有空位置,就可以分裂为两个,如果没有,那么不分裂,年龄仍然加一,

3.设置衰老年龄,如果一个细胞到了衰老阶段还没有分裂,那么他将无法分裂,直到死亡,不复存在

这三个条件设立之后,运行很多次实验,由于细胞分裂次数有限,所以所有细胞都在一段时间后死亡

细胞根据能够进行的分裂次数划分为20阶段,从紫色到红色依次分裂能力减弱

这样的情况远远不能够达到进化的目的

我们得想办法让细胞获得新生

于是我设置了一个突变系统

4.细胞的成熟年龄,衰老年龄,死亡年龄变为可以突变的属性,细胞在每次分裂时候都有极小概率突变,突变的细胞将会获得分裂能力的增加,除此之外,还将在上面三个属性中随机一个属性获得一个随机的变化,加一或者减一,并且能够遗传给下一代

我经过测试,感觉很完美,但是发现太单调了,细胞总是倾向于向长寿命,早熟,长衰老发展,导致后面的周期越来越长

5.后来,我又加入了突变概率属性,其概率本身大小也会随着突变而随机发生无法确定的突变,

又加入了突变分裂能力 增加量,每次突变也有可能在这个属性上获得一个增量或者减量,

我后来又测试,感觉越来越不错,但是细胞总是倾向于往好的方向发展,那些向负方向突变的细胞总是在极长的生存淘汰中被慢慢淘汰

于是我又加入了生命值系统

6.每个细胞都有一个伤害阀值,在其成熟前,该值会随年龄而增加,如果在其每个成长时间段中,其身边8个位置都有细胞存在,其将判定为营养不良,将受到伤害加一,如果受到伤害大于该阀值,这个细胞就会死亡,到达成熟阶段时,这个阀值将变为该细胞成熟年龄的3倍,同样,成年细胞也有营养不良系统

衰老细胞的阀值变为成熟年龄的大小,如果受到伤害大于这个值,将直接死亡

这次之后,我运行了很多次,终于满意了,我在一次实验中运行6个小时,细胞不再倾向于往低龄成熟方向发展,而是稳定在一个固定的值,其寿命也增长到某个阶段,然后极其缓慢增长,我也不明白这是为什么,或许这就是相互的选择吧,可能寿命太长不利于后代的发展吧

话不多说,一起来看看代码吧,

项目我会放在后面免费提供

package Research.Ev;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.Random;public class Evolution {public static void main(String []args) throws FileNotFoundException {EFrame f=new EFrame();f.setTitle("Evolution");}
}class EFrame extends JFrame{MainPanel mp=new MainPanel();EFrame() throws FileNotFoundException {setSize(1220,1060);setResizable(false);setDefaultCloseOperation(EFrame.EXIT_ON_CLOSE);setLocationRelativeTo(null);add(mp);setVisible(true);if(EPanel.IsTest){setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\0.jpg"));}else{setIconImage(Toolkit.getDefaultToolkit().getImage("0.jpg"));}}
}class MainPanel extends JPanel{EPanel ep=new EPanel();CPanel cp=new CPanel(ep.getInterface());MainPanel() throws FileNotFoundException {setLayout(null);ep.setBounds(0,0,1020,1060);cp.setBounds(1030,0,199,1060);add(ep);add(cp);}
}class CPanel extends JPanel implements ActionListener{JLabel l4=new JLabel("速率/ms:");JTextField t4=new JTextField("3");JLabel l5=new JLabel("帧率/fps:");JTextField t5=new JTextField("144");JLabel l1=new JLabel("寿命:");JTextField t1=new JTextField("20");JLabel l2=new JLabel("成熟:");JTextField t2=new JTextField("1");JLabel l3=new JLabel("衰老:");JTextField t3=new JTextField("15");JLabel l8=new JLabel("能力:");JTextField t8=new JTextField("199");JLabel l9=new JLabel("突变量/百万:");JTextField t9=new JTextField("500");JLabel l10=new JLabel("突变增量:");JTextField t10=new JTextField("20");JButton b1=new JButton("重开");JButton b2=new JButton("暂停");JButton b3=new JButton("设置");JButton b4=new JButton("高级");JLabel ls=new JLabel("");SendChanges sc;static JLabel D1=new JLabel();static JLabel D2=new JLabel();static JLabel D3=new JLabel();static JLabel D4=new JLabel();static JLabel D5=new JLabel();static JLabel D6=new JLabel();CPanel(SendChanges sc){this.sc=sc;setLayout(null);l1.setBounds(0,60,40,20);t1.setBounds(40,60,60,20);l2.setBounds(0,90,40,20);t2.setBounds(40,90,60,20);l3.setBounds(0,120,40,20);t3.setBounds(40,120,60,20);ls.setBounds(0,150,190,20);t4.setBounds(80,330,60,20);l4.setBounds(0,330,190,20);t5.setBounds(80,360,60,20);l5.setBounds(0,360,190,20);t8.setBounds(80,460,60,20);l8.setBounds(0,460,190,20);t9.setBounds(80,490,60,20);l9.setBounds(0,490,190,20);t10.setBounds(80,520,60,20);l10.setBounds(0,520,190,20);b1.setBounds(40,200,80,30);b2.setBounds(40,240,80,30);b3.setBounds(40,280,80,30);b4.setBounds(40,550,80,30);b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);D1.setBounds(10,600,180,30);D2.setBounds(10,630,180,30);D3.setBounds(10,660,180,30);D4.setBounds(10,690,180,30);D5.setBounds(10,720,180,30);D6.setBounds(10,750,180,30);add(l1);add(t1);add(l2);add(t2);add(l3);add(t3);add(l8);add(t8);add(l9);add(t9);add(l10);add(t10);add(ls);add(b1);add(b2);add(b3);add(b4);add(t4);add(l4);add(t5);add(l5);add(D1);add(D2);add(D3);add(D4);add(D5);add(D6);}@Overridepublic void actionPerformed(ActionEvent e) {if(e.getSource()==b1){sc.Restart();}else if(e.getSource()==b2){sc.SetPause();}else if(e.getSource()==b3){int a,b,c,d,ee;try{a=Integer.parseInt(t1.getText());b=Integer.parseInt(t2.getText());c=Integer.parseInt(t3.getText());d=Integer.parseInt(t4.getText());ee=Integer.parseInt(t5.getText());if(a<=0){throw new NumberFormatException("寿命不能小于等于0");}if(b<0||b>a){throw new NumberFormatException("成熟不能小于0或者大于寿命");}if(c<1||c>a){throw new NumberFormatException("衰老不能小于1或者大于寿命");}if(d<3){throw new NumberFormatException("最小速率为3ms");}if(ee>144){throw new NumberFormatException("最大帧率为144fps");}sc.Setting(a,b,c,d,ee);ls.setText("设置成功");}catch (NumberFormatException ec){ls.setText(ec.getMessage());}}else if(e.getSource()==b4) {try {int z = Integer.parseInt(t8.getText());int p = Integer.parseInt(t9.getText());int num =Integer.parseInt(t10.getText());if(z<0||z>199){throw new NumberFormatException("能力值应在0~199之间");}if(p<0||p>=1000000){throw new NumberFormatException("概率不能小于0或者大于1");}if(num<0||num>199){throw new NumberFormatException("增量应当在0~198之间");}sc.ReduceEntropy(z,p,num);}catch (NumberFormatException ex){ls.setText(ex.getMessage());}}}public static void DoChanges(int p,int add,int life,int mature,int aging,int ability) {D1.setText("突变概率:"+p);D2.setText("突变增量:"+add);D3.setText("寿命年龄:"+life);D4.setText("成熟年龄:"+mature);D5.setText("衰老年龄:"+aging);D6.setText("平均能力:"+ability);}
}class EPanel extends JPanel implements Runnable, ActionListener,SendChanges, MouseListener,ThreadInterface{int RecordNum=0;String RecordTemp="";boolean State=true;int sizeX=100;int sizeY=100;int GSP=3;int FPS=144;int cp=1000/FPS;boolean Subtract=false;int Life=20;int Mature=1;int Aging=15;Random RD=new Random();int Probability=500;int AddNum=20;int X=0,Y=0,Z=199;static boolean IsTest=false;Cell [][] General=new Cell[sizeY][sizeX];Cell [][] Ready=new Cell[sizeY][sizeX];private Image IB;private  Graphics GB;Timer timer;PrintWriter pw;EPanel() throws FileNotFoundException {setLayout(null);Thread t =new Thread(this);t.start();timer =new Timer(GSP,this);timer.start();init();addMouseListener(this);RecordThread rt=new RecordThread(this);rt.start();File f;if(IsTest){f=new File("C:\\Users\\86158\\Desktop\\use\\NA\\record.txt");}else{f=new File("record.txt");}FileOutputStream fos=new FileOutputStream(f);pw=new PrintWriter(fos);}public void init(){General[50][50]=new Cell(Z,0,Probability,AddNum,Life,Mature,Aging);}@Overridepublic void paint(Graphics gc) {if(IB ==null){IB =createImage(this.getSize().width,this.getSize().height);GB = IB.getGraphics();}GB.setColor(getBackground());GB.fillRect(0,0,this.getSize().width,this.getSize().height);Image s,t,u,v,w,xx,yy,z,a,b,c,d,e,f,g,h,i,j,k,l;if(IsTest){s =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\-8.jpg");t =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\-7.jpg");u =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\-6.jpg");v =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\-5.jpg");w =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\-4.jpg");xx =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\-3.jpg");yy =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\-2.jpg");z =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\-1.jpg");a =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\0.jpg");b =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\1.jpg");c =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\2.jpg");d =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\3.jpg");e =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\4.jpg");f =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\5.jpg");g =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\6.jpg");h =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\7.jpg");i =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\8.jpg");j =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\9.jpg");k =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\10.jpg");l =getToolkit().getImage("C:\\Users\\86158\\Desktop\\use\\NA\\11.jpg");}else{s =getToolkit().getImage("-8.jpg");t =getToolkit().getImage("-7.jpg");u =getToolkit().getImage("-6.jpg");v =getToolkit().getImage("-5.jpg");w =getToolkit().getImage("-4.jpg");xx =getToolkit().getImage("-3.jpg");yy =getToolkit().getImage("-2.jpg");z =getToolkit().getImage("-1.jpg");a =getToolkit().getImage("0.jpg");b =getToolkit().getImage("1.jpg");c =getToolkit().getImage("2.jpg");d =getToolkit().getImage("3.jpg");e =getToolkit().getImage("4.jpg");f =getToolkit().getImage("5.jpg");g =getToolkit().getImage("6.jpg");h =getToolkit().getImage("7.jpg");i =getToolkit().getImage("8.jpg");j =getToolkit().getImage("9.jpg");k =getToolkit().getImage("10.jpg");l =getToolkit().getImage("11.jpg");}for(int y=0;y<=99;y++){for(int x=0;x<=99;x++){if(General[y][x]!=null){if(General[y][x].Ability/10==0){GB.drawImage(l,x*10,y*10,this);}else if(General[y][x].Ability/10==1){GB.drawImage(k,x*10,y*10,this);}else if(General[y][x].Ability/10==2){GB.drawImage(j,x*10,y*10,this);}else if(General[y][x].Ability/10==3){GB.drawImage(i,x*10,y*10,this);}else if(General[y][x].Ability/10==4){GB.drawImage(h,x*10,y*10,this);}else if(General[y][x].Ability/10==5){GB.drawImage(g,x*10,y*10,this);}else if(General[y][x].Ability/10==6){GB.drawImage(f,x*10,y*10,this);}else if(General[y][x].Ability/10==7){GB.drawImage(e,x*10,y*10,this);}else if(General[y][x].Ability/10==8){GB.drawImage(d,x*10,y*10,this);}else if(General[y][x].Ability/10==9){GB.drawImage(c,x*10,y*10,this);}else if(General[y][x].Ability/10==10){GB.drawImage(b,x*10,y*10,this);}else if(General[y][x].Ability/10==11){GB.drawImage(a,x*10,y*10,this);}else if(General[y][x].Ability/10==12){GB.drawImage(z,x*10,y*10,this);}else if(General[y][x].Ability/10==13){GB.drawImage(yy,x*10,y*10,this);}else if(General[y][x].Ability/10==14){GB.drawImage(xx,x*10,y*10,this);}else if(General[y][x].Ability/10==15){GB.drawImage(w,x*10,y*10,this);}else if(General[y][x].Ability/10==16){GB.drawImage(v,x*10,y*10,this);}else if(General[y][x].Ability/10==17){GB.drawImage(u,x*10,y*10,this);}else if(General[y][x].Ability/10==18){GB.drawImage(t,x*10,y*10,this);}else if(General[y][x].Ability/10==19){GB.drawImage(s,x*10,y*10,this);}}   }}GB.setColor(Color.black);GB.drawRect(0,0,1000,1000);gc.drawImage(IB,0,0,this);}@Overridepublic void run() {while (true){try {Thread.sleep(cp);} catch (InterruptedException e) {e.printStackTrace();}if(State){repaint();}}}public void Next(){for(int i=0;i<General.length;i++){for(int j=0;j<General[0].length;j++){if(General[i][j]!=null){deal(i,j);}}}General=Ready;Ready=new Cell[sizeY][sizeX];if(Subtract){Subtract=false;General[Y][X]=new Cell(Z,0,Probability,AddNum,Life,Mature,Aging);}}public void deal(int i,int j){//随机1%死亡if(RD.nextInt(100)>0) {//如果目标年龄小于寿命,受到伤害小于3倍成熟年龄,将可能依旧存活if (General[i][j].Age < General[i][j].Life && General[i][j].Hurt < 3 * General[i][j].Mature) {//获取周围8位置空缺状态int t = check(i, j);//如果目标年龄大于成熟年龄,并且小于衰老年龄,并且有分裂能力,那么检查周围是否有空缺位置if (General[i][j].Age >= General[i][j].Mature && General[i][j].Age < General[i][j].Aging && General[i][j].Ability > 0) {//如果周围有空缺位置,那么分裂if (t != 0) {Division(i, j, t);}//如果没有空缺位置,那么受到伤害,年龄加一else {Ready[i][j] = new Cell(General[i][j], true);}} else {//如果已经成熟没有衰老但是不能分裂,那么检查空缺位置if (General[i][j].Ability <= 0) {//如果无空缺,受到1伤害if (t == 0) {Ready[i][j] = new Cell(General[i][j], true);} else {Ready[i][j] = new Cell(General[i][j], false);}}//如果未成熟或者已经衰老,那么检查空缺位置else {//已经衰老,那么检查空缺位置if (General[i][j].Age >= General[i][j].Aging) {if (General[i][j].Hurt < General[i][j].Mature) {//如果无空缺,受到1伤害if (t == 0) {Ready[i][j] = new Cell(General[i][j], true);} else {Ready[i][j] = new Cell(General[i][j], false);}}}else {//未成熟,那么检查空缺位置if (General[i][j].Hurt <= General[i][j].Age) {//如果无空缺,受到1伤害if (t == 0) {Ready[i][j] = new Cell(General[i][j], true);} else {Ready[i][j] = new Cell(General[i][j], false);}}}}}}}}public int check(int i,int j){if(j-1>=0&&General[i][j-1]==null){return 1;}if(j+1<sizeX&&General[i][j+1]==null){return 2;}if(i-1>=0&&General[i-1][j]==null){return 3;}if(i+1<sizeY&&General[i+1][j]==null){return 4;}if(j-1>=0&&i-1>=0&&General[i-1][j-1]==null){return 5;}if(j+1<sizeX&&i-1>=0&&General[i-1][j+1]==null){return 6;}if(j-1>=0&&i+1<sizeY&&General[i+1][j-1]==null){return 7;}if(j+1<sizeX&&i+1<sizeY&&General[i+1][j+1]==null){return 8;}return 0;}public void Division(int i,int j,int t){if(t==1){Ready[i][j-1]=new Cell(General[i][j]);Ready[i][j]=new Cell(General[i][j]);}else if(t==2){Ready[i][j+1]=new Cell(General[i][j]);Ready[i][j]=new Cell(General[i][j]);}else if(t==3){Ready[i-1][j]=new Cell(General[i][j]);Ready[i][j]=new Cell(General[i][j]);}else if(t==4){Ready[i+1][j]=new Cell(General[i][j]);Ready[i][j]=new Cell(General[i][j]);}else if(t==5){Ready[i-1][j-1]=new Cell(General[i][j]);Ready[i][j]=new Cell(General[i][j]);}else if(t==6){Ready[i-1][j+1]=new Cell(General[i][j]);Ready[i][j]=new Cell(General[i][j]);}else if(t==7){Ready[i+1][j-1]=new Cell(General[i][j]);Ready[i][j]=new Cell(General[i][j]);}else if(t==8){Ready[i+1][j+1]=new Cell(General[i][j]);Ready[i][j]=new Cell(General[i][j]);}}@Overridepublic void actionPerformed(ActionEvent e) {if(State) {Next();}}public SendChanges getInterface(){return this;}@Overridepublic void Setting(int Life, int Mature, int Aging,int GSP,int FPS) {this.Life=Life;this.Mature=Mature;this.Aging=Aging;this.GSP=GSP;this.FPS=FPS;this.cp=1000/this.FPS;timer.stop();timer=new Timer(GSP,this);timer.start();}@Overridepublic void Restart() {RecordNum=0;RecordTemp="";timer.stop();General=new Cell[sizeY][sizeX];General=new Cell[sizeY][sizeX];init();timer.restart();}@Overridepublic void SetPause() {State=!State;}@Overridepublic void ReduceEntropy(int z,int p,int n) {this.Z=z;this.Probability=p;this.AddNum=n;}@Overridepublic void mouseClicked(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON1) {int x=e.getX();int y=e.getY();X=x/10;Y=y/10;Subtract=true;}}@Overridepublic void mousePressed(MouseEvent e) {}@Overridepublic void mouseReleased(MouseEvent e) {}@Overridepublic void mouseEntered(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}@Overridepublic void Do(){RecordNum++;int p=0,add=0,life=0,mature=0,aging=0,ability=0,s=0;Cell [][]t=General;for (Cell[] cells : t) {for (int j = 0; j < t[0].length; j++) {if (cells[j] != null) {p = p + cells[j].Probability;add = add + cells[j].AddNum;life = life + cells[j].Life;mature = mature + cells[j].Mature;aging = aging + cells[j].Aging;ability = ability + cells[j].Ability;s++;}}}if(s!=0){CPanel.DoChanges(p/s,add/s,life/s,mature/s,aging/s,ability/s);RecordTemp=RecordTemp+p/s+"  "+add/s+"  "+life/s+"  "+mature/s+"  "+aging/s+"  "+ability/s+"\n";}if(RecordNum>=100){pw.append(RecordTemp);pw.flush();RecordTemp="";RecordNum=0;}}
}class Cell{int Life;int Mature;int Aging;int AddNum;int Probability;int Age;int Ability;int Hurt;static Random rd=new Random();Cell(Cell Last){this.Age=0;int s=rd.nextInt(1000000);if(s>Last.Probability-1){this.Ability=Last.Ability-1;this.AddNum=Last.AddNum;this.Probability=Last.Probability;this.Life=Last.Life;this.Mature=Last.Mature;this.Aging=Last.Aging;this.Hurt=0;}else {this.AddNum=Last.AddNum;this.Probability=Last.Probability;this.Life=Last.Life;this.Mature=Last.Mature;this.Aging=Last.Aging;this.Hurt=0;switch(s%10){case 0:this.AddNum-=10;break;case 1:this.AddNum+=10;break;case 2:this.Probability-=1;break;case 3:this.Probability+=1;break;case 4:this.Life-=1;break;case 5:this.Life+=1;break;case 6:this.Mature-=1;break;case 7:this.Mature+=1;break;case 8:this.Aging-=1;break;default:this.Aging+=1;}this.Ability = Math.min(Last.Ability + Last.AddNum, 199);}}Cell(Cell last,boolean k){this.Age=last.Age+1;this.Ability=last.Ability;this.AddNum= last.AddNum;this.Probability= last.Probability;this.Life=last.Life;this.Mature=last.Mature;this.Aging=last.Aging;if(k){Hurt=last.Hurt+1;}else{Hurt= last.Hurt;}}Cell(int ability,int age,int p,int n,int Life,int Mature,int Aging){this.Ability=ability;this.Age=age;this.Probability=p;this.AddNum=n;this.Life=Life;this.Mature=Mature;this.Aging=Aging;this.Hurt=0;}
}class RecordThread extends Thread{ThreadInterface ti;public RecordThread(ThreadInterface ti){this.ti=ti;}@Overridepublic void run() {while(true){try {ti.Do();} catch (FileNotFoundException e) {e.printStackTrace();}try {Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}}}
}
interface ThreadInterface{void Do() throws FileNotFoundException;
}interface SendChanges{void Setting(int Life, int Mature, int Aging,int GSP,int FPS);void Restart();void SetPause();void ReduceEntropy(int z,int p,int n);
}

https://study.gengronglin.top/Source/Evolution.zip

由于网站采用自签名SSL证书开启https,所以可能提示证书不可信,请放心使用

已经发布到本人服务器上,供大家免费下载,学习

本项目仅供学习,交流,参考使用,请勿做它用!

如感兴趣请私信交流

Java GUI Swing 游戏项目 模拟进化相关推荐

  1. java GUI SWING

    GUI编程 GUI是什么 组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 简介 GUI: Swing AWT AWT 1. AWT介绍 包含了很多类和接口 元素:窗口,按 ...

  2. java的Swing组件模拟qq登录界面

    代码来自传智播客第二版(java)图片可根据自己喜好下载相关图片,建议将图片放到工作空间的目录下面,这样就可以直接获取图片,例如以这个格式"xxx.jpg",xxx图片名,jpg格 ...

  3. java GUI怎么输入_在Swing中创建Java GUI以进行表单输入

    好吧,我已经浏览了整个互联网,但却未能找到这个问题的答案,所以也许有人可以提供一些见解. 我正在开发一个相对简单的Java应用程序,它将取代目前用于系统访问请求的Word文档.它旨在允许表单输入新的员 ...

  4. The package javax.swing is not accessible(java GUI 编程时引用swing包和awt包时会报错怎么办)

    Java GUI 编程时引用swing包和awt包时会报错怎么办 一.环境与错误现象 使用的编译器为eclipse,情况为: 二.解决方法 问题主要是由工程中的module-info.java这个文件 ...

  5. 【java毕业设计】基于java+swing的模拟写字板设计与实现(毕业论文+程序源码)——模拟写字板

    基于java+swing的模拟写字板设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing的模拟写字板设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报 ...

  6. 基于java+mysql的Swing+MySQL物业收费系统(java+gui+文档)

    基于java+mysql的Swing+MySQL物业收费系统(java+gui+文档) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可 ...

  7. java售票界面设计_GitHub - CoderGeshu/StationTicketingSystem: Java GUI 系统设计:使用 Java Swing 编写的铁路售票应用系统...

    StationTicketingSystem 这是一个 Java GUI 系统设计:使用 Java Swing 编写的铁路售票应用系统. 技术栈 所使用到的技术:Java Swing + Java A ...

  8. Java GUI编程之AWT和Swing

    目的:为了了解MVC架构,了解监听,我们有必要学习Java GUI 编程. 一. AWT:抽象窗口工具箱. 1.弹出窗口实例: package GUI;import java.awt.*;public ...

  9. 实验五 java gui

    实验五 图形化应用程序开发 <center> <strong>姓名:</strong> <u>XXX</u>    <strong&g ...

最新文章

  1. 电脑测速软件_康佳电视免费看直播,如何安装第三方软件?2个方法值得收藏...
  2. linux 守护进程管理 supervisor 简介 可用于docker容器内守护进程
  3. audio 上一首 下一首 自定义样式_总有一首网易云,藏着你忘不掉的人。
  4. 【科大星云诗社动态20201204
  5. CODVES 5929 亲戚
  6. 【训练过程】2) Train the VAEs of domain A and domain B respectively(分别训练域A和域B的VAE)
  7. python成绩统计_python统计考试成绩排名
  8. 网络编程——第一部分
  9. Ambari安装之部署本地库(镜像服务器)(二)
  10. Learn UML with JUDE(中文版)
  11. 正确安装vray5 for 3dsMax步骤
  12. python wifi暴力破解(tk)
  13. 康佳电视软件测试工程师,康佳电视怎么样之康佳55吋曲面人工智能电视试用测评...
  14. 财务风险分析从哪几个角度进行分析
  15. JAVA自学-day16-List的子类、泛型、增强for循环、静态导入、可变参数
  16. CSS实现文字动画效果
  17. Fatal error loading the DB: Permission denied. Exiting.
  18. java 判断是否回文
  19. 0415学习笔记:3决策树
  20. SAP message no. 04202 用户 xxxx 没有访问计算机 xxx.xxx.xxx.xxx 的权限

热门文章

  1. Android笔试面试指南
  2. CF1207G Indie Album(ACAM建fail树查询s在t出现几次)
  3. VoIP——开启免费通话新时代的先锋
  4. Python之进程的玩法
  5. 一篇js的基础介绍送给你们,好好学习呦!❤❤
  6. 张适时千元级的手机测评笔记
  7. CTFHub之综合练习详解
  8. 2020 年最漂亮的程序员日历
  9. day9 - 对花朵图像进行边缘检测
  10. 线程同步-生产者消费者问题