java - 如何使 JFrame 具有特定大小,不包括边框?

标签 java swing size jframe

我有一个 JFrame,我已使用 setBounds 将其设置为特定大小。然而,这使得包括边框在内的窗口达到了那个尺寸(事后看来这是完全有道理的)。但我想要的是窗口的大小,比如 800x600 plus 边框。这很重要,因为我正在从 JFrame 的 BufferStategy 绘制到一个 Graphics 对象,但是当使用小于大约 20 的 y 值时,我一直在标题栏下方绘制。我想象不同的操作系统(甚至不同的操作系统设置)也可以有不同厚度的边框。我以为边界只是后来被钉在 window 上,但事实并非如此。

那么,如何使边框内的空间具有一定的大小,而不考虑边框的粗细?另外,为了让我的生活更轻松,我如何让点 0、0 成为框架可视内容的左上角?

顺便说一句,使用 setUndecorated 会带来它自己的问题,所以我目前没有尝试。

最佳答案

  1. 设置内容 Pane 的首选大小。
  2. 包装框架。
  3. 工作完成。

例如

Fixed Size Content

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

class FixedSizeContent {
    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                JFrame f = new JFrame("Fixed size content");
                f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                Container c = f.getContentPane();
                c.setBackground(Color.YELLOW);
                // adjust to need.
                Dimension d = new Dimension(400,40);
                c.setPreferredSize(d);
                f.setResizable(false);
                f.pack();
                f.setVisible(true);
            }
        });
    }
}

关于java - 如何使 JFrame 具有特定大小,不包括边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7776630/

相关文章:

html - 以正确的尺寸打印 HTML5 Canvas

java - 使用 RecyclerView 的动态按钮的不同 onClickListener

java - 如何包装字符串

java - 在 Apache Spark 中解析 XML 数据

java - 将 vector 行插入 JTable 中?

java - 调整 JDialog 和 JTable 列的大小时出现问题

java - HWND 的 native@0xc41bcc 输出到实际窗口 ID

java - BoxLayout.Y_AXIS 在 Swings 中不起作用

java - 可执行 jar 不显示应用程序中使用的图标/图像

java - DEFAULT_SIZE 和 PREFERRED_SIZE 有什么区别?