java - 我希望任务栏可见并最大化我的框架
问题描述
代码片段:
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);
推荐阅读
- android - Websocket 安全错误:未验证主机名
- angular - 无法启动连接:错误并且无法加载资源:SignalR 中的 net::ERR_SSL_PROTOCOL_ERROR
- python - 如何将相关图保存为png
- flutter - 我在 windows 的 android studio 中设置颤振时出错,我已经更新并拥有最新版本的颤振和 android studio
- docker - 如何使用 docker log 在每次匹配特定字符串后指定日志数?
- node.js - 干净退出 - 重新启动前等待更改?
- vim - 如何在 vim 编辑器中快速按 enter
- paypal - 如何在 PayPal 客人付款上显示“使用借记卡或信用卡付款”按钮而不是“以客人身份结帐”
- android - 如何使用 openweathermap API 获取未来 3 天天气预报的响应
- django - 登录不起作用,并在 /basic_app/user_login/ 处显示 NoReverseMatch,但注册似乎可以正常使用类似的 url 模式和模板标记