у меня есть 2 кадра: родительский и дочерний .Я хочу сделать следующее: когда родительский фрейм активируется или деионизируется, дочерний фрейм делает то же самое.
private void attachListeners()
{
if (parentFrame != null)
{
parentFrame.addComponentListener(this);
parentFrame.addWindowListener(new ViewEventAdapter(this));
}
@Override
public void viewActivated()
{
// show it when the parent is activated
if (!childFrame.isVisible())
{
childFrame.setVisible(true);
parentFrame.toFront();
}
}
Но это вызывает бесконечный цикл мерцания.Если я удаляю toFront (), я не могу переключить фокус на родительский кадр.Мне просто нужно как-то правильно переключить фокус.
Код слушателя:
public class ViewEventAdapter implements WindowListener, InternalFrameListener
{
private MyViewListener listener = null;
public ViewEventAdapter(MiaViewListener inListener)
{
listener = inListener;
}
@Override
public void windowActivated(WindowEvent inE)
{
listener.viewActivated();
}
@Override
public void windowClosed(WindowEvent inE)
{
listener.viewClosed();
}
@Override
public void windowClosing(WindowEvent inE)
{
listener.viewClosing();
}
@Override
public void windowDeactivated(WindowEvent inE)
{
listener.viewDeactivated();
}
@Override
public void windowDeiconified(WindowEvent inE)
{
listener.viewDeiconified();
}
@Override
public void windowIconified(WindowEvent inE)
{
listener.viewIconified();
}
@Override
public void windowOpened(WindowEvent inE)
{
listener.viewOpened();
}
@Override
public void internalFrameActivated(InternalFrameEvent inE)
{
listener.viewActivated();
}
@Override
public void internalFrameClosed(InternalFrameEvent inE)
{
listener.viewClosed();
}
@Override
public void internalFrameClosing(InternalFrameEvent inE)
{
listener.viewClosing();
}
@Override
public void internalFrameDeactivated(InternalFrameEvent inE)
{
listener.viewDeactivated();
}
@Override
public void internalFrameDeiconified(InternalFrameEvent inE)
{
listener.viewDeiconified();
}
@Override
public void internalFrameIconified(InternalFrameEvent inE)
{
listener.viewIconified();
}
@Override
public void internalFrameOpened(InternalFrameEvent inE)
{
listener.viewOpened();
}
}
public interface MyViewListener
{
/**
* Called when a view is activated
*/
public void viewActivated();
/**
* Called when a view is closed
*/
public void viewClosed();
/**
* Called when a view is closing
*/
public void viewClosing();
/**
* Called when a view is deactivated
*/
public void viewDeactivated();
/**
* Called when a view is deiconified
*/
public void viewDeiconified();
/**
* Called when a view is iconified
*/
public void viewIconified();
/**
* Called when a view is opened
*/
public void viewOpened();
}
Пожалуйста, помогите.Заранее спасибо.