当前页面: 开发资料首页 → J2SE 专题 → 怎样编写父子窗口???
怎样编写父子窗口???
摘要: 怎样编写父子窗口???
我的思路是这样的:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
public class FatherFrame extends JFrame {
JButton button;
public FatherFrame() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
button=new JButton("弹出子窗口");
ButtonHandler handler=new ButtonHandler();
button.addActionListener(handler);
getContentPane().add(button);
setLocation(300,300);
pack();
}
public static void main(String[] args) {
TestPanels tp = new TestPanels();
tp.show();
}
private class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
new SubFrame();
}
}
}
*********************************************
import javax.swing.*;
import java.awt.*;
public class SubFrame extends JFrame {
public SubFrame() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().add(new JLabel("这是弹出来的子窗口"));
setLocation(400,300);
pack();
show();
}
}
上面的两个源文件,按下父窗口的按钮后,能顺利的调出子窗口,但是,问题是,关闭子窗口时,父窗口也一起关掉了。请问,怎么样在关闭子窗口的时候,仍然保留父窗口。。。。是不是我的思路根本就是错的,不能这样编。
单独处理子窗口的关闭按钮
楼上的能具体点么,谢谢
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
public class FatherFrame extends JFrame {
JButton button;
public FatherFrame() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
button=new JButton("弹出子窗口");
ButtonHandler handler=new ButtonHandler();
button.addActionListener(handler);
getContentPane().add(button);
setLocation(300,300);
pack();
}
public static void main(String[] args) {
FatherFrame tp = new FatherFrame();
tp.show();
}
private class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
new SubDialog(FatherFrame.this);
}
}
}
class SubDialog extends JDialog
{
public SubDialog(JFrame owner)
{
super(owner,"SubDialog",true);
getContentPane().add(new JLabel("这是弹出来的子窗口"));
setLocation(400,300);
pack();
show();
}
}
弹出窗口最好用JDialog来做,这样就可以达到楼主你的要求了
public class Father {
public void Father(){}
main...{
JFrame jf= new JFrame();
....
JButton jb..
....
jb 的 action实现{
son sonFrame = new son()
son.newFrame();
}
}
}
class son {
void son(){}
void newFrame(){
JFrame xxx = new JFrame();
....
}
}
分别再给两个类的关闭事件加dispose()销毁
----------------------------------------------------------
我认为不应该让某个类 xxxx.class extends JFrame ,然后为了创建一个窗体就要生成xxxx,关闭的时候让xxxx与这个窗体同生死共存亡.xxxx 经常可以包括一些有用的其他东西,窗体表现只该作为它的一个属性,需要出现的时候再出现,而不是一生成对象马上就出现
不知道我是不是有些会错意思了...
楼主说的是不是要子窗口始终位于父窗口前面,子窗口在就不能点到父窗口上操作的那样的窗口?
子窗口用JDialog这样的窗口即可,或者将子窗口的JFrame改改,扩展成那样
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
}
});
在子窗口的构造方法里加这几句试试。。。