[英]Event that gets fired when a JInternalFrame is maximized/minimized
I have written the following code to handle an event incase a Jinternalframe is minimized or maximized. 我编写了以下代码来处理事件,以防Jinternalframe最小化或最大化。
jif.addComponentListener(new ComponentListener() {
public void componentResized(ComponentEvent e) {
Boolean isMax = ((JInternalFrame)e.getComponent()).isMaximum();
if(isMax == false)
{
// TODO Auto-generated method stub
}
else if(isMax == true )
{
// TODO Auto-generated method stub
}
}
public void componentMoved(ComponentEvent e) {
// TODO Auto-generated method stub
}
public void componentShown(ComponentEvent e) {
// TODO Auto-generated method stub
}
public void componentHidden(ComponentEvent e) {
// TODO Auto-generated method stub
}
}
);
The problem is that the isMax part gets triggered when the frame loads. 问题在于,框架加载时会触发isMax部分。 I want this event to happen only after the Jinternalframe is completely loaded.
我希望仅在Jinternalframe完全加载后才发生此事件。 Also i have noticed this event triggers when i minimize the container applet.
我也注意到当我最小化容器applet时会触发此事件。
Is there any workaround for this? 有什么解决方法吗?
You might be able to use a PropertyChangeListener
and InternalFrameListener
: 您可能可以使用
PropertyChangeListener
和InternalFrameListener
:
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import javax.swing.*;
import javax.swing.event.*;
public class InternalFrameEventTest {
public JComponent makeUI() {
final JDesktopPane desktop = new JDesktopPane();
JPanel p = new JPanel(new BorderLayout());
p.add(desktop);
p.add(new JButton(new AbstractAction("New") {
@Override public void actionPerformed(ActionEvent e) {
JInternalFrame f = new JInternalFrame("title", true, true, true, true);
InternalFrameHandler handler = new InternalFrameHandler();
f.addInternalFrameListener(handler);
f.addPropertyChangeListener(handler);
f.setSize(240, 120);
f.setVisible(true);
desktop.add(f);
}
}), BorderLayout.NORTH);
return p;
}
public static void main(String... args) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
createAndShowGUI();
}
});
}
public static void createAndShowGUI() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.getContentPane().add(new InternalFrameEventTest().makeUI());
f.setSize(320, 240);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
class InternalFrameHandler implements PropertyChangeListener, InternalFrameListener {
//PropertyChangeListener
@Override public void propertyChange(PropertyChangeEvent e) {
if (JInternalFrame.IS_MAXIMUM_PROPERTY.equals(e.getPropertyName())) {
System.out.println("isMaximum: " + e.getNewValue());
}
}
//InternalFrameListener
@Override public void internalFrameClosing(InternalFrameEvent e) {
System.out.println("internalFrameClosing");
}
@Override public void internalFrameClosed(InternalFrameEvent e) {
System.out.println("internalFrameClosed");
}
@Override public void internalFrameOpened(InternalFrameEvent e) {
System.out.println("internalFrameOpened");
}
@Override public void internalFrameIconified(InternalFrameEvent e) {
System.out.println("internalFrameIconified");
}
@Override public void internalFrameDeiconified(InternalFrameEvent e) {
System.out.println("internalFrameDeiconified");
if (e.getInternalFrame().isMaximum()) {
System.out.println("isMaximum: " + e.getInternalFrame().isMaximum());
}
}
@Override public void internalFrameActivated(InternalFrameEvent e) {
System.out.println("internalFrameActivated");
}
@Override public void internalFrameDeactivated(InternalFrameEvent e) {
System.out.println("internalFrameDeactivated");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.