gpt4 book ai didi

java - 如何将 Java 窗口(实际上是 JFrame)设置为正确的分辨率?

转载 作者:太空宇宙 更新时间:2023-11-04 13:41:18 25 4
gpt4 key购买 nike

我通过修改 Jamal's pong game 在 Java 中进行修改现在我注意到 entire window实际上是 800x600,但这不是我想要的! 我希望框架为800x600,并且周围成为窗口8的精美边框。对我来说,向 Java 请求 800x600 JFrame,然后再获取 794x571 框架来使用是没有意义的!

<小时/>

设置窗口的主要代码:

public Main() {
// cvars contains variables from JPong.ini (It's an extended class from the ini4j library)
cvars = CVarList.getInstance();

// get(sectionName, optionName, classtype, defaultValue)
setSize(cvars.get("Window", "width", int.class, 800),
cvars.get("Window", "height", int.class, 600));
setTitle(cvars.get("Window", "title", String.class, "JPong"));
setResizable(cvars.get("Window", "resizable", boolean.class, false));
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
table = new Table(this);
add(table);
}
<小时/>

我发现的原因是因为我改变了 Racket / Racket 的速度, Racket / Racket 卡在了窗口的两端,所以修改代码后 Racket 不再粘住了,但现在它们稍微移出了可见框架(因为我在逻辑中使用了0和窗口的高度来停止 Racket / Racket )

现在我想知道有多少 Java 窗口的大小实际上是错误的......

最佳答案

创建一个包含TableJPanel,在其中重写它的getPreferredSize方法并返回您想要的所需大小

public class TableWrapperPanel extends JPanel {
private Table table;
public TableWrapperPanel(Table table) {
setLayout(new BorderLayout());
this.table = table;
add(table);
}

public Dimension getPreferredSize() {
cvars = CVarList.getInstance();
return new Dimension(cvars.get("Window", "width", int.class, 800),
cvars.get("Window", "height", int.class, 600));
}
}

现在,在您的 main 方法中,创建 TableWrapperPanel 的实例并将其添加到您的“窗口”中,完成此操作后调用 pack,这会将窗口打包在您的内容周围。

public Main() {
// cvars contains variables from JPong.ini (It's an extended class from the ini4j library)
cvars = CVarList.getInstance();

// get(sectionName, optionName, classtype, defaultValue)
setSize(cvars.get("Window", "width", int.class, 800),
cvars.get("Window", "height", int.class, 600));
setTitle(cvars.get("Window", "title", String.class, "JPong"));
setResizable(cvars.get("Window", "resizable", boolean.class, false));
setDefaultCloseOperation(EXIT_ON_CLOSE);
TableWrapperPanel wrapper = new TableWrapper(table);
add(wrapper );
pack();
setVisible(true);
}

或者,您可以创建一个自定义版本的 Table 来覆盖 getPreferredSize 方法本身

public class SizableTable extends Table { 
//... Constructors ...

public Dimension getPreferredSize() {
cvars = CVarList.getInstance();
return new Dimension(cvars.get("Window", "width", int.class, 800),
cvars.get("Window", "height", int.class, 600));
}
}

并且不要在 main 方法中创建 Table 的实例,而是创建 SizableTable 的实例,将其添加到窗口,然后调用 pack

关于java - 如何将 Java 窗口(实际上是 JFrame)设置为正确的分辨率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31236223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com