首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定移动JFrame的原因(Windows、JDK6)

如何确定移动JFrame的原因(Windows、JDK6)
EN

Stack Overflow用户
提问于 2011-10-21 05:12:26
回答 1查看 1.3K关注 0票数 1
代码语言:javascript
复制
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();
            }
        }
    );
}

}

我想确定框架是否因为最大化而调整了大小/移动了,或者只是被用户拖来拖去。令人惊讶的是,上面的代码输出(在我按下框架上的“最大化”按钮后):

代码语言:javascript
复制
Moved, not maximized
Resized, maximized

也就是说,窗口状态的更新发生在调用componentMoved之后和调用componentResized之前。那么,我如何在componentMoved事件中找出窗口是否被最大化了呢?

EN

回答 1

Stack Overflow用户

发布于 2011-10-21 16:58:11

使用:

代码语言:javascript
复制
(state&JFrame.MAXIMIZED_BOTH) != 0

因为MAXIMIZED_BOTH是水平和垂直最大化的两位。在JSE 7下,我得到的确实是“移动,最大化”。

我不会篡改已移动和调整大小的事件的顺序。尝试重新实现关闭框也不是一个好主意。

你可以在moved上发布你自己的事件,然后会在调整大小的事件之后出现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7842316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档