我将我的代码分解为理论问题的基础
public class main {
public static void main(String[] args) {
new Object1().a();
}
}
public class Object1 {
private static Object2 object2;
public Object1() {
}
public void a(){
object2 = new Object2(this);
object2.setVisible(true);
System.out.println("new object2 created");
}
public void b(){
object2 = null;
System.out.println("set object2 to null");
a();
}
}
/**
*
*Class creates JFrame with a button.
*the button has an event listener which calls method b form object1
*
*/
public class Object2 extends javax.swing.JFrame {
private JButton jButton1;
private Object1 object1;
public Object2(Object1 ob1) {
super();
this.object1 = ob1;
initGUI();
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
{
jButton1 = new JButton();
getContentPane().add(jButton1, BorderLayout.CENTER);
jButton1.setText("click me");
jButton1.setPreferredSize(new java.awt.Dimension(311, 143));
jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
}
pack();
this.setSize(150, 125);
} catch (Exception e) {
e.printStackTrace();
}
}
private void jButton1ActionPerformed(ActionEvent evt) {
System.out.println("button clicked");
object1.b();
}
我的jFrame的调用很可能是一个递归,结果是设置Frame null将不会做任何事情...... 框架仍然可见,并且可以在不抛出NullPointerException的情况下工作。 但这不是问题的中心。
问题是: 如何在没有递归的情况下为此编写等效代码?
答案 0 :(得分:0)
JFrame
没有居中?是那个问题。或者你有一些设计问题。 ?
object2.setLocationRelativeTo(null);
它将以JFrame
否则如果出现设计问题,请使用setter来处理其中任何一个..比如
public class Object2 extends javax.swing.JFrame {
private JButton jButton1;
private Object1 object1;
public Object2(Object1 ob1) {
super();
initGUI();
}
public void setObject1(Object1 object1){
this.object1 = object1;
}
........
在Object1