是这样的,实例化一个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
解决方案 »
- java String类的offset问题
- 关于数据库唯一性
- java.net.BindException: Address already in use: connect
- 一个非技术概念问题
- 谁来给我祥解下这个程序??谢拉
- 使用javax.comm时,没法初始化串口,有人碰到过类似的问题吗?
- 怎样从文本文件中读数据?
- 编译EJB时,错误报告Missing return statement.可我明明有return语句啊
- 如何更新blob字段的内容?
- 创建一个service层实例总是出下面错误,求解
- 哪儿有 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;
}
}