为了账号安全,请及时绑定邮箱和手机立即绑定

怎么修改代码使得通过按下"NEXT' 按钮让APPLET显示问题的下一个解?

怎么修改代码使得通过按下"NEXT' 按钮让APPLET显示问题的下一个解?

阿波罗的战车 2022-05-18 12:11:12
比如这是一个八皇后的程序package com.equeen;import java.applet.Applet;import java.awt.Button;import java.awt.Color;import java.awt.Event;import java.awt.Graphics;public class Queen extends Applet{/****/private static final long serialVersionUID = 1L;int num;int n;Button b1 = new Button("next");int cross(int k,int l[]){int j;if(k==1) return 0;for(j=1;j<=k-1;j++){if(l[j]==l[k]||(j-k==l[j]-l[k])||(k-j==l[j]-l[k])) return 1;}return 0;}public void init(){this.resize(400, 400);add(b1);}public boolean action(Event e, Object o1) {if(e.target==b1) try{Thread.interrupted();}catch(Exception c){}return true;}public void fill(int k,int l[],Graphics g){ int i;if(k<=n)for(l[k]=1;l[k]<=n;l[k]++){if(cross(k,l)==0) fill(k+1,l,g);}else {num++;g.setColor(new Color(0,0,0));for(i=1;i<=9;i++){g.drawLine(40, i*40, 360, i*40);g.drawLine(i*40, 40, i*40, 360);}for(i=1;i<=8;i++) g.fillRect(l[i]*40, i*40, 40, 40);try{Thread.sleep(2000);}catch(Exception e){}g.clearRect(40, 40, 360, 360);}}public void paint(Graphics g) {int l[]=new int[15];Queen q=new Queen();q.num=0;q.n=8;q.fill(1,l,g);System.out.println(q.num);}怎么修改代码使得通过按下"NEXT' 按钮让APPLET显示问题的下一个解
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

你这么写程序吧,我不反对,但是我觉得层次有点太低了
java 的client ui 本身写起来就困难,也造成了大多数新手的麻烦,总有异常
你搜一下 swingWorker,用它来写 javaswing,肯定会解决你这些问题
另外,netbeansRCP 就内置了swingworker的实现,你也可以试试,很好用的。

查看完整回答
反对 回复 2022-05-23
  • 1 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信