You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现JFrame最大化时不隐藏系统任务栏?

解决JFrame最大化时隐藏系统任务栏的问题

以下几种方案可以实现JFrame最大化且不覆盖系统任务栏:

  • 方案一:获取屏幕可用区域手动设置窗口尺寸
    通过GraphicsEnvironment和Toolkit获取排除任务栏后的屏幕可用区域,直接设置窗口的位置和大小:

    // 获取屏幕整体边界与系统Insets(包含任务栏等系统元素的占位)
    GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment()
            .getDefaultScreenDevice().getDefaultConfiguration();
    Rectangle screenBounds = gc.getBounds();
    Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc);
    
    // 计算可用区域的宽高与起始位置
    int usableX = insets.left;
    int usableY = insets.top;
    int usableWidth = screenBounds.width - insets.left - insets.right;
    int usableHeight = screenBounds.height - insets.top - insets.bottom;
    
    // 应用到窗口
    this.setBounds(usableX, usableY, usableWidth, usableHeight);
    
  • 方案二:先最大化再调整边界
    先调用默认最大化方法,再通过屏幕Insets调整窗口,保留最大化状态的同时避开任务栏:

    this.setExtendedState(JFrame.MAXIMIZED_BOTH);
    Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(this.getGraphicsConfiguration());
    
    // 修正窗口大小与位置
    this.setSize(this.getWidth() - insets.left - insets.right, this.getHeight() - insets.top - insets.bottom);
    this.setLocation(insets.left, insets.top);
    
  • 方案三:组合水平与垂直最大化状态
    尝试单独设置水平和垂直最大化,部分系统下可自动避开任务栏:

    this.setExtendedState(JFrame.MAXIMIZED_HORIZ | JFrame.MAXIMIZED_VERT);
    

    注意:该方案兼容性略差,建议优先测试前两种方案。

内容的提问来源于stack exchange,提问作者FireGoose's Empire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:42:35