import java.awt.Dimension;
import java.awt.event.ComponentListener;
import java.awt.event.ComponentEvent;
import javax.swing.SwingUtilities;
import javax.swing.JFrame;
public class FrmMain extends JFrame implements ComponentListener
{
FrmMain()
{
super("Moves & Resize");
setMinimumSize(new Dimension(512,384));
setDefaultCloseOperation(EXIT_ON_CLOSE);
addComponentListener(this);
setVisible(true);
}
public void componentMoved( ComponentEvent ev )
{
int state = getExtendedState();
if( (state&JFrame.MAXIMIZED_BOTH)==JFrame.MAXIMIZED_BOTH )
{
System.out.println("Moved, maximized");
} else {
System.out.println("Moved, not maximized");
}
}
public void componentResized( ComponentEvent ev )
{
int state = getExtendedState();
if( (state&JFrame.MAXIMIZED_BOTH)==JFrame.MAXIMIZED_BOTH )
{
System.out.println("Resized, maximized");
} else {
System.out.println("Resized, not maximized");
}
}
public void componentShown( ComponentEvent ev )
{
}
public void componentHidden( ComponentEvent ev )
{
}
public static void main( String[] args )
{
SwingUtilities.invokeLater(
new Runnable() {
public void run()
{
FrmMain mainwin = new FrmMain();
}
}
);
}
}
Я хочу определить, был ли кадр изменен / перемещен из-за того, что был максимизирован, или просто перетаскивался пользователем.Удивительно, но код выше выводит (после того, как я нажимаю кнопку «развернуть» на кадре):
Moved, not maximized
Resized, maximized
Это означает, что обновление состояния окна происходит после вызова componentMoved
и перед вызовом componentResized
.Итак, как мне узнать, разворачивается ли окно, внутри события componentMoved
?