日期:2014-05-20  浏览次数:20916 次

求助一个好原始的问题,别笑啊,谢谢!
import java.awt.*; 
import java.awt.event.*; 

public class win implements ActionListener{ 
Frame f=new Frame("我的窗"); 
TextField t=new TextField(12); 
Button b=new Button("点这"); 
Button b1=new Button("退出"); 
dx d=new dx(); 
dx1 d1=new dx1(); 

public void wd(){ 
f.setLayout(new FlowLayout(FlowLayout.CENTER,15,13)); 
f.add(t); 
f.add(b); 
f.add(b1); 
f.setSize(150,120); 
f.show(); 
b.addActionListener(this); 
b1.addActionListener(this); 


public static void main(String[] args){ 
win m=new win(); 
m.wd(); 


public void actionPerformed(ActionEvent e){ 
if(e.getSource()==b1) d.js(); 
if(e.getSource()==b1) d1.ting(); 




class dx{ 
public void js(){ 
int i=1,j; 
j=i+1; 
t.setText(j); //就是此处错,想把j的值放到文本框里,知道是跨到win类调用t对象不成功,该怎么做呢? 



class dx1{ 
public void ting(){ 
System.exit(0); 

}

------解决方案--------------------
没有必要写dx,dx1这两个类,把那两个方法都写在win里直接调用就行了。
另外,我感觉有错的地方:
1.
if(e.getSource()==b1) d.js(); //b1是不是应该为b
2.
t.setText(j); //j应该是String,改为t.setText(""+j);
------解决方案--------------------
你可以把win类的t也传到dx里,这样不就可以调用了吗?或者吧win,直接传到dx里,通过win调用t
------解决方案--------------------
package 其它;

import java.awt.*;
import java.awt.event.*;

public class win implements ActionListener {
Frame f = new Frame("我的窗");
TextField t = new TextField(12);
Button b = new Button("点这");
Button b1 = new Button("退出");
dx d = new dx();
dx1 d1 = new dx1();

public void wd() {
f.setLayout(new FlowLayout(FlowLayout.CENTER, 15, 13));
f.add(t);
f.add(b);
f.add(b1);
f.setSize(150, 120);
f.setVisible(true)
b.addActionListener(this);
b1.addActionListener(this);
}

public static void main(String[] args) {
win m = new win();
m.wd();
}

public void actionPerformed(ActionEvent e) {
if (e.getSource() == b1)
t.setText(d.js()+"");
if (e.getSource() == b1)
d1.ting();
}

}

class dx {
public int js() {
int i = 1, j;
j = i + 1;
return j;
}
}

class dx1 {
public void ting() {
System.exit(0);
}
}