我有一个 JFrame,我已使用 setBounds 将其设置为特定大小。然而,这使得包括边框在内的窗口达到了那个尺寸(事后看来这是完全有道理的)。但我想要的是窗口的大小,比如 800x600 plus 边框。这很重要,因为我正在从 JFrame 的 BufferStategy 绘制到一个 Graphics 对象,但是当使用小于大约 20 的 y 值时,我一直在标题栏下方绘制。我想象不同的操作系统(甚至不同的操作系统设置)也可以有不同厚度的边框。我以为边界只是后来被钉在 window 上,但事实并非如此。
那么,如何使边框内的空间具有一定的大小,而不考虑边框的粗细?另外,为了让我的生活更轻松,我如何让点 0、0 成为框架可视内容的左上角?
顺便说一句,使用 setUndecorated 会带来它自己的问题,所以我目前没有尝试。
最佳答案
- 设置内容 Pane 的首选大小。
- 包装框架。
- 工作完成。
例如
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/