怎么画格子? 本帖最后由 zheweiyu 于 2013-08-16 16:44:22 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 完整源码import java.awt.*;class ToeDialog extends Dialog{ static final int BLANK=0; static final int XX=1; static final int OO=2; int turn =XX; public ToeDialog(Frame parent,int w,int h){ super(parent,"The game itself",false);//modal - 指定在显示的时候是否阻止用户将内容输入到其他顶级窗口中。 //如果该参数为 false,则 dialog 是 MODELESS;如果该参数为 true,则模式类型属性被设置为 DEFAULT_MODALITY_TYPE setLayout(new GridLayout(w,h)); for(int i=0;i<w*h;i++){ add(new ToeButton(this)); } resize(w*50,h*50); } public boolean handleEvent(Event evt){ if(evt.id==Event.WINDOW_DESTROY){ dispose(); } else return super.handleEvent(evt); return true; }}class ToeButton extends Canvas{ int state=ToeDialog.BLANK; ToeDialog parent; ToeButton(ToeDialog parent){ this.parent=parent; } public void paint(Graphics g){ int x1=0; int y1=0; int x2=size().width-1; int y2=size().height-1; g.drawRect(x1, y1, x2, y2); x1=x2/4; y1=y2/4; int wide=x2/2; int high=y2/2; if(state==ToeDialog.XX){ //画X g.drawLine(x1, y1, x1+wide, y1+high); g.drawLine(x1, y1+high, x1+wide, y1); } if(state==ToeDialog.OO){ //画圆 g.drawOval(x1,y1,x1+wide/2,y1+high/2); } } public boolean mouseDown(Event evt,int x,int y){ if(state==ToeDialog.BLANK){ state=parent.turn; parent.turn=(parent.turn==ToeDialog.XX ? ToeDialog.OO:ToeDialog.XX);//设置了一个变量。用于在XX和OO间转化。 } else if(state==ToeDialog.OO||state==ToeDialog.XX){ } repaint(); return true; }}public class ToeTest extends Frame{ TextField rows=new TextField("3"); TextField cols =new TextField("3"); public ToeTest(){ setTitle("Toe Test"); Panel p=new Panel(); p.setLayout(new GridLayout(2,2)); p.add(new Label("Rows",Label.CENTER)); p.add(rows); p.add(new Label("Columns",Label.CENTER)); p.add(cols); add("Center",p); add("South",new Button("go")); } public boolean handleEvent(Event evt) { if(evt.id==Event.WINDOW_DESTROY) System.exit(0); else return super.handleEvent(evt); return true; } public boolean action(Event evt,Object arg){ if(arg.equals("go")){ Dialog d=new ToeDialog( this, Integer.parseInt(rows.getText()), Integer.parseInt(cols.getText())); d.show(); } else return super.action(evt, arg); return true; } public static void main(String[] args) { Frame f=new ToeTest(); f.resize(200,100); f.show(); }} 这都是些算坐标的事吧,你用debug跟进去看看就懂了 你用debug跟进去看看就懂了服了 g.drawLine() 画线 drawOval() 画圈 drawRect() 矩形 其中包括两个坐标A ,B。A,B固定所画图形的位置、。不懂你哪儿不懂。 int x1=0; int y1=0; int x2=size().width-1; int y2=size().height-1; g.drawRect(x1, y1, x2, y2);这里不是只画了一个框么。下面的 x1=x2/4; y1=y2/4; int wide=x2/2; int high=y2/2;是做什么用的, 为了之后画X做准备。谢谢了,我之前我是在纠结那些小格子是怎么画出来的。是我没看仔细,上面还有个public ToeDialog(Frame parent,int w,int h)。现在找到原因了。还是非常感谢你花时间帮我解决问题。 下载的java源程序导入eclipse问题 关于java接口问题 如果已经建立了jtable,数据也导入了。但没有加滚动条。请问应该怎么追加滚动条。我用自己的方法把界面都弄乱了 Java的Socket可不可以实现机对机通信 求教-aes加密的相关问题 xue_sharp进来领分 请问那里可以查到java类库的资料,中文的详细的最好能下载的谢谢 QQ编程的绝顶高手请指教!!!!!!! 为什么?classpath EXTJS5.0分页不对 java连接LDAP查询当前元素的所有下级元素问题 java socket 发送消息问题。。。
static final int BLANK=0;
static final int XX=1;
static final int OO=2;
int turn =XX;
public ToeDialog(Frame parent,int w,int h){
super(parent,"The game itself",false);//modal - 指定在显示的时候是否阻止用户将内容输入到其他顶级窗口中。
//如果该参数为 false,则 dialog 是 MODELESS;如果该参数为 true,则模式类型属性被设置为 DEFAULT_MODALITY_TYPE
setLayout(new GridLayout(w,h));
for(int i=0;i<w*h;i++){
add(new ToeButton(this));
}
resize(w*50,h*50);
}
public boolean handleEvent(Event evt){
if(evt.id==Event.WINDOW_DESTROY){
dispose();
}
else
return super.handleEvent(evt);
return true;
}
}class ToeButton extends Canvas{
int state=ToeDialog.BLANK;
ToeDialog parent;
ToeButton(ToeDialog parent){
this.parent=parent;
}
public void paint(Graphics g){
int x1=0;
int y1=0;
int x2=size().width-1;
int y2=size().height-1;
g.drawRect(x1, y1, x2, y2);
x1=x2/4;
y1=y2/4;
int wide=x2/2;
int high=y2/2;
if(state==ToeDialog.XX){ //画X
g.drawLine(x1, y1, x1+wide, y1+high);
g.drawLine(x1, y1+high, x1+wide, y1);
}
if(state==ToeDialog.OO){ //画圆
g.drawOval(x1,y1,x1+wide/2,y1+high/2);
}
}
public boolean mouseDown(Event evt,int x,int y){
if(state==ToeDialog.BLANK){
state=parent.turn;
parent.turn=(parent.turn==ToeDialog.XX ? ToeDialog.OO:ToeDialog.XX);//设置了一个变量。用于在XX和OO间转化。
}
else if(state==ToeDialog.OO||state==ToeDialog.XX){
}
repaint();
return true;
}
}public class ToeTest extends Frame{
TextField rows=new TextField("3");
TextField cols =new TextField("3");
public ToeTest(){
setTitle("Toe Test");
Panel p=new Panel();
p.setLayout(new GridLayout(2,2));
p.add(new Label("Rows",Label.CENTER));
p.add(rows);
p.add(new Label("Columns",Label.CENTER));
p.add(cols);
add("Center",p);
add("South",new Button("go"));
}
public boolean handleEvent(Event evt) {
if(evt.id==Event.WINDOW_DESTROY)
System.exit(0);
else
return super.handleEvent(evt);
return true;
}
public boolean action(Event evt,Object arg){
if(arg.equals("go")){
Dialog d=new ToeDialog(
this,
Integer.parseInt(rows.getText()),
Integer.parseInt(cols.getText()));
d.show();
}
else
return super.action(evt, arg);
return true;
}
public static void main(String[] args) {
Frame f=new ToeTest();
f.resize(200,100);
f.show();
}
}
服了
drawOval() 画圈
drawRect() 矩形
其中包括两个坐标A ,B。
A,B固定所画图形的位置、。不懂你哪儿不懂。
int y1=0;
int x2=size().width-1;
int y2=size().height-1;
g.drawRect(x1, y1, x2, y2);
这里不是只画了一个框么。下面的
x1=x2/4;
y1=y2/4;
int wide=x2/2;
int high=y2/2;是做什么用的,