获取JFrame内容的实际大小(新)

时间:2015-08-31 10:13:44

标签: java swing

我正在用Java编写游戏,我不想为我的JFrame使用布局管理器。我的类扩展了JFrame,看起来像这样:

//class field
static JPanel contentPane;

//in the class constructor
this.contentPane = new JPanel();
this.contentPane.setLayout(null);
this.setContentPane(contentPane);

我希望我的JPanel正好是600x600 px,但是当我通过调用this.setSize(600,600)方法设置JFrame的大小时,JPanel大小小于600x600 px,因为也包括JFrame窗口的边框。

如何将JPanel的大小设置为600x600像素?

P.S。我已经看过所有上一篇文章,但没有一篇能为我工作。 例如: Get the real size of a JFrame content对我不起作用。 我还能做什么?

2 个答案:

答案 0 :(得分:1)

如果您不需要框架装饰(图标,标题,最小/最大/关闭按钮和边框),您可以使框架未修饰,然后它具有您给它的尺寸

module.js:338
    throw err;
          ^
Error: Cannot find module 'Q'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/home/.cordova/lib/npm_cache/cordova-wp8/3.8.1/package/bin/lib/create.js:20:13)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
Error: /home/.cordova/lib/npm_cache/cordova-wp8/3.8.1/package/bin/create: Command failed with exit code 1
    at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:139:23)
    at ChildProcess.emit (events.js:110:17)
    at maybeClose (child_process.js:1015:16)
    at Process.ChildProcess._handle.onexit (child_process.js:1087:5)

答案 1 :(得分:1)

  

如何将JPanel的大小设置为600x600像素?

覆盖自定义游戏面板的getPreferredSize()方法,以返回您希望面板的尺寸。

@Override Dimension getPreferredSize()
{
    return new Dimension(600, 600);
}

然后,创建框架的基本代码将是:

GamePanel panel = new GamePanel();
frame.add(panel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);

现在所有游戏逻辑都将包含在GamePanel类中。