awt中Frame的问题,怎样设置弹出窗口与父窗口的关系
一个有菜单栏的窗口A继承了Frame,点击菜单栏弹出另外一个窗口B,
怎样将其设置为点击A上的菜单栏,弹出窗口B后,A窗口不能在点击,只有关闭B后才能在点击
用delphi是有个show和showModal方法,在java中怎样设置
FrameA
import java.awt.*;
import java.awt.event.*;
public class FrameA extends Frame implements ActionListener{
Button ButtonOk =new Button ( "ok ");
public FrameA(){
super ( "111 ");
setLayout(null);
setSize(100,200);
ButtonOk.setBounds(100,100,35,50);
ButtonOk.addActionListener(this);
add(ButtonOk);
setVisible(true);
validate();
}
public static void main(String[] args){
FrameA fr=new FrameA();
}
public void actionPerformed(ActionEvent e){
FrameB b=new FrameB();
}
}
FrameB
import java.awt.*;
public class FrameB extends Frame {
public FrameB(){
super ( "BBB ");
setSize(100,200);
setLayout(null);
setVisible(true);
validate();
}
}
前面发了个贴,得到了弹出B后A不能点,但是问题又出来了,当关闭了B后,A仍然不能点击
FrameA
import java.awt.*;
import java.awt.event.*;
public class FrameA extends Frame implements ActionListener{
Button ButtonOk =new Button ( "ok ");
public FrameA(){
super ( "111 ");
setLayout(null);
setSize(100,200);
ButtonOk.setBounds(100,100,35,50);
ButtonOk.addActionListener(this);
add(ButtonOk);
setVisible(true);
validate();
}
public static void main(String[] args){
FrameA fr=new FrameA();
}
public void actionPerformed(ActionEvent e){
FrameB b=new FrameB();
this.setEnabled(false);/////////////加上这行就可以了
}
}
FrameB
import java.awt.*;
public class FrameB extends Frame {
public FrameB(){
super ( "BBB ");
setSize(100,200);
setLayout(null);
setVisible(true);
validate();
}
}
[解决办法]
例如在主窗体为A类,弹出窗体为B类
A类 中定义一个B 类的对象.
B类 中定义一个A 类的对象.
B 类的构造函数设计为:
Class B extends Frame
{
B(A a)
{ this.a = a;
addWindowListener(new WindowAdapter()
{
public void windowClosed(WindowEvent e)
{
a.setEnabled(true);
}
}
);
}
}
Class A extends Frame
{
B b;
Button b = new Button( "fd ");
A()
{
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
b=new B(A.this);
b.setVisible(true);
A.thisa.setEnabled(false);
}
}
就是这种框架
这是个基本思路,由于好久没写,我也不晓得类,和方法名写错没.可以到jdk文档核实下
主要是windowActionListener 和后面的方法window后面带不带s 我忘了.
hehe 没办法.现在基本不用那个了
[解决办法]
用这个控件JDialog或定义一个类继承它
JDialog实例化时要传入3个参数JFrame myFrame,String title,boolean modal
第1个参数为主窗体,第2 为弹出窗口的标题,第3 参数值为true时弹出窗口就是 模式窗口了(即主窗体不可操作了)