微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我希望任务栏可见且我的框架最大化

如何解决我希望任务栏可见且我的框架最大化

代码片段:

JFrame frame = new JFrame();
frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLayout(null);
frame.setVisible(true);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH); // for fit to screen maximize

就像在游戏中一样,我不希望它可以调整大小;同时我想让任务栏和标题栏可见(就像任何应用程序一样)

解决方法

解决此问题的一种方法是扩展 JFrame 类并覆盖最大化方法以减小帧大小

import java.awt.*;
import javax.swing.*;

public class MyFrame extends JFrame
{
    private Rectangle maxBounds;
    
    public MyFrame()
    {
        super();        
        maxBounds = null;
    }
    
    @Override
    public Rectangle getMaximizedBounds()
    {
        return maxBounds;
    }
    
    @Override
    public synchronized void setMaximizedBounds(Rectangle maxBounds)
    {
        this.maxBounds = maxBounds;
        super.setMaximizedBounds(maxBounds);
    }
    
    @Override
    public synchronized void setExtendedState(int state)
    {       
        if (maxBounds == null &&
            (state & Frame.MAXIMIZED_BOTH) == Frame.MAXIMIZED_BOTH)
        {
            Insets screenInsets = getToolkit().getScreenInsets(getGraphicsConfiguration());         
            Rectangle screenSize = getGraphicsConfiguration().getBounds();
            Rectangle maxBounds = new Rectangle(screenInsets.left + screenSize.x,screenInsets.top + screenSize.y,screenSize.x + screenSize.width - screenInsets.right - screenInsets.left,screenSize.y + screenSize.height - screenInsets.bottom - screenInsets.top);
            
            super.setMaximizedBounds(maxBounds);
        }
    
        super.setExtendedState(state);
    }
}

然后只需实例化自定义 MyFrame 类

MyFrame frame = new MyFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLayout(null);
frame.setVisible(true);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
,

尝试更改语句的顺序:

frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
frame.setResizable(false);
frame.setMinimumSize(frame.getSize());

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。