gpt4 book ai didi

Java Swing : Resizing component in JFrame without affecting other components

转载 作者:行者123 更新时间:2023-12-02 06:01:42 25 4
gpt4 key购买 nike

我正在作为新手项目创建一个非常简单的游戏。它基于一款名为“CaSTLewars”的在线纸牌游戏。有两名玩家,每人都有一座塔,塔受到他们和对手打出的牌的影响。目前,我拥有使游戏在非常简单的级别上运行所需的集合和类的基本框架,但我在向用户显示这些效果时遇到了问题。我有以下代码,除其他外,它应该更新 jFrame GUI(在 NetBeans 7.4 中构建)上的两个代表玩家塔的 jLabel:

private void adjustScreen(){
System.out.println (Integer.toString(jLabel1.getSize().height));
jLabel1.setSize(100, (playerRed.getTower().currentHeight() * 2));
System.out.println(Integer.toString(playerRed.getTower().currentHeight() * 2));
System.out.println (Integer.toString(jLabel1.getSize().height));
jLabel2.setSize(100, (playerBlue.getTower().currentHeight() * 2));
jLabel5.setText(Integer.toString(playerBlue.getTower().currentHeight()));
jLabel6.setText(Integer.toString(playerBlue.getGold()));
jLabel9.setText(Integer.toString(playerRed.getTower().currentHeight()));
jLabel10.setText(Integer.toString(playerRed.getGold()));
if (TurnBlue){
jPanel21.setBackground(inPlay);
jPanel10.setBackground(outPlay);
}else{
jPanel10.setBackground(inPlay);
jPanel21.setBackground(outPlay);
}
}

当我运行它时,我得到以下输出:

  1. (初始标签高度)- 200
  2. (调整后的 Tower().height) - 100
  3. (调整后的标签高度)- 100

这表明我正在尝试做的事情在某种程度上起作用,但实际标签在视觉上保持相同的大小。

开始时(游戏启动时应将标签设置为其可见大小的一半): At start (the initiation of the game should have set the labels to half their visible size几次比赛后 - 蓝队的新塔高度显示在左上角 After a couple of plays - the change to Blue's tower height is shown in the top left

我尝试过在标签和框架上启用和禁用调整大小属性,并且我曾经设法让它调整大小,但随后它以一种不幸的方式移动了框架的其他组件。正如您所看到的,底部的“卡片”似乎确实会调整自己的大小,尽管我没有明确指示它们这样做(可能是“卡片”中文本长度的影响?)我做错了什么?

最佳答案

重新阅读问题后,我意识到答案并不是真正问题的答案,而是更多的建议列表。我不会删除它,而是保留它,以防有人可以从中受益:-)

"What am I doing wrong?"

欢迎来到“为什么我应该使用布局管理器”的世界

空布局和尝试为所有内容设置大小和位置可能会引起大量问题。 Swing 是为了与布局管理器一起使用而设计的。

  • 一些布局管理器会尊重首选尺寸,而另一些则不会。

    preferred sizes

  • 使用正确的布局管理器,并利用嵌套的 JPanel 和不同的布局管理器来获得您想要的结果

    nest panels

  • 利用 EmptyBordervgaphgap 来表示空白区域。

  • 不要设置任何内容的大小或位置。让布局管理器为您处理这些事情。

  • 查看Laying out Components withing a Container了解不同的布局管理器。

<小时/>

编辑

如果您使用 Netbeans GUI BUilder,请查看 this answer获取有关如何使用设计工具使用不同布局管理器的一些帮助。

关于Java Swing : Resizing component in JFrame without affecting other components,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22614795/

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