Java Swing:调整JFrame中的组件大小而不影响其他组件

时间:2014-03-24 16:14:05

标签: java swing netbeans

我有一个非常简单的游戏,我正在创建一个新手项目。它基于名为" 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. (调整塔()。身高) - 100
  3. (调整标签高度) - 100
  4. 这表明我尝试做的是在某种程度上工作,但实际的标签在视觉上保持相同的大小。

    开始时(游戏的启动应该将标签设置为可见尺寸的一半): 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

    我已经开始在标签和框架上启用和禁用resize属性,我曾经设法让它调整大小,但它然后移动了框架的其他组件不幸的是。如你所见,"卡"虽然我没有明确指示他们这样做(可能是"卡片中文本长度的影响"?)我在做什么错误?

1 个答案:

答案 0 :(得分:2)

在重新阅读问题后,我意识到答案并不是问题的答案,而是更多的建议清单。我会留下它,以防万一有人可以从中获取一些东西,而不是删除它: - )

  

“我做错了什么?”

欢迎来到“我为什么要使用布局管理器”

的世界

可能会出现一些问题,这些问题可能来自null布局并尝试将大小和位置设置为所有内容。 Swing用于布局管理器。

  • 有些布局管理员会尊重首选尺寸,有些则不会。

    preferred sizes

  • 使用正确的布局管理器并使用嵌套的JPanel和不同的布局管理器来获得所需的结果

    nest panels

  • EmptyBordervgaphgap用于空白区域。

  • 不要将尺寸或位置设置为任何东西。让布局经理为您处理。

  • 浏览Laying out Components withing a Container以了解不同的布局管理器。


修改

如果你正在使用Netbeans GUI BUilder,请查看this answer,了解如何使用设计工具使用不同的布局管理器。