public
class
Test1 {
public
static
void
main(String[] args) {
new
MainFrame();
}
}
class
MainFrame
extends
JFrame{
public
JTextField field=
new
JTextField();
public
JButton button=
new
JButton(
"打开新窗口"
);
public
MainFrame mainFrame=
this
;
public
MainFrame(){
this
.setBounds(
0
,
0
,
320
,
240
);
this
.add(field,BorderLayout.CENTER);
this
.add(button,BorderLayout.EAST);
this
.setDefaultCloseOperation(EXIT_ON_CLOSE);
this
.setVisible(
true
);
button.addActionListener(
new
ActionListener() {
@Override
public
void
actionPerformed(ActionEvent arg0) {
//打开新窗口,把主窗口对象的引用传给新窗口
new
NewFrame(mainFrame);
}
});
}
}
class
NewFrame
extends
JFrame{
public
JTextField field=
new
JTextField();
private
MainFrame mainFrame;
//主窗口的引用
private
JButton button=
new
JButton(
"设置主窗口值"
);
//接收到主窗口的引用 ,就可以直接操作主窗口的控件或变量了
public
NewFrame(
final
MainFrame mainFrame){
this
.mainFrame=mainFrame;
this
.setBounds(
320
,
240
,
320
,
240
);
this
.add(field,BorderLayout.CENTER);
this
.add(button,BorderLayout.EAST);
this
.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this
.setVisible(
true
);
button.addActionListener(
new
ActionListener() {
@Override
public
void
actionPerformed(ActionEvent e) {
mainFrame.field.setText(field.getText());
}
});
}
}