是这样的,实例化一个Frame时,调用init()方法,init()方法里有button.addActionListener
这一步之前先实例化一个connectButtonAction ,就是这一句:
connectButtonAction aconnectButtonAction=new connectButtonAction();
jButton1.addActionListener(aconnectButtonAction);
可是实例化connectButtonAction时有要实例化一个Frame,就是这一句:
public connectButtonAction() {
Frame aFrame = new Frame();
}也就是说两个类的实例化交替进行,无限循环,最后outOfMemory
这一步之前先实例化一个connectButtonAction ,就是这一句:
connectButtonAction aconnectButtonAction=new connectButtonAction();
jButton1.addActionListener(aconnectButtonAction);
可是实例化connectButtonAction时有要实例化一个Frame,就是这一句:
public connectButtonAction() {
Frame aFrame = new Frame();
}也就是说两个类的实例化交替进行,无限循环,最后outOfMemory
解决方案 »
- 一个时间计算的问题
- 急!swing jtree节点的问题!
- 类 传递参数的方式,值传递还是地址传递呢?
- JNI的问题,高手接力!
- JAVADOC 如何实现这种效果阿--???
- io流的一些疑问
- 出现如下提示:Exception in thread "main" java.lang.NoSuchMethodError:main是什么原因?
- 各位,先祝节日快乐,顺便提个小问题!
- 请高手们推荐讲JAVA可视化开发工具的好书最好是讲JB的,我已经有一定的JAVA基础了!
- 关于构造器和垃圾回收器
- 哪儿有 java api 文档(最好中文)下载? 急~~~~~~~~~
- JAVA和SQL的数据类型匹配问题。
你能把你的完整代码房上来吗?这样我看不洞诶
是为了访问Frame里的控件,我也觉得逻辑上有问题,就是想不明白,我要疯了
public class Frame extends JFrame { public Frame() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
进行初始化
private void jbInit() throws Exception {在这里给Frame中的Button加listener时,但aconnectButtonAction类中的构造函数创建了Frame的实例,由此造成了循环
connectButtonAction aconnectButtonAction=new connectButtonAction();
jButton1.addActionListener(aconnectButtonAction);
cancelButtonAction acancelButtonAction=new cancelButtonAction();
jButton2.addActionListener(acancelButtonAction);
sendButtonAction asendButtonAction=new sendButtonAction();
jButton3.addActionListener(asendButtonAction);
}在这里给Frame中的Button加listener时,又用到了Frame中的构造函数,由此造成了循环
package chatroom;
import java.awt.event.*;
import java.lang.*;
import java.awt.*;
public class connectButtonAction implements ActionListener{
Frame aFrame;
String jt;
String address;
int port;
public connectButtonAction() {
aFrame=new Frame();
}
public void actionPerformed(ActionEvent e){
Object con=e.getSource();
if((con instanceof Button)==true){ connection acon=new connection();
acon.connect(this.subString(),this.subString1()); }
}public String subString(){
jt=aFrame.jTextField1.getText();
int ipEnd=jt.indexOf("*");
address=jt.substring(0,ipEnd-1);
return address; }
public int subString1(){
jt=aFrame.jTextField1.getText();
int ipEnd=jt.indexOf("*");
address=jt.substring(0,ipEnd-1);
port=Integer.parseInt(jt.substring(ipEnd+1,jt.length()));
return port;
}
}