2014-03-24 37 views
0

我有一个非常简单的游戏,我正在创建一个新手项目。它基于名为“Castlewars”的在线纸牌游戏。有两名球员,每名球员都有一个受到他们和对手打牌的牌的影响。目前,我有一个基本的集合和类的框架,我需要使游戏在一个非常简单的层面上运行,但我在向用户显示这些效果时遇到了问题。我有以下的代码,它应该更新,除其他事项外,在JFrame GUI(在NetBeans 7.4构建的),它代表了玩家的防御塔两个JLabel:Java Swing:调整JFrame中的组件而不影响其他组件

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

这表明我想要做的是在某个层面上工作,但实际的标签在视觉上保持相同的大小。

在开始(游戏的开始应该设置标签一半可见大小): 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属性的功能,而且我曾经设法调整大小,但它却以不幸的方式转移了框架的其他组件。正如你所看到的,尽管我没有明确地指示他们这样做(可能是“卡片”中的文本长度的影响),但底部的“卡片”似乎自己调整大小?我做错了什么?

+0

据我所知,所有代码都在Swing中,并且根本没有JavaFX代码,所以标题中的[javafx]标记和JavaFX引用应该被删除? – jewelsea

回答

2

重新阅读这个问题后,我意识到答案不是真正的问题的答案,而是更多的建议列表。而不是删除它,我会留下它,以防某人可以从中获利:-)

“我在做什么错了?”

欢迎的世界“为什么要使用布局管理器”

还有的可以从空布局出现,并试图大小和位置设置为一切问题的海洋。 Swing被用于布局管理器。

  • 某些布局管理员会尊重偏好的大小,有些不会。

    preferred sizes

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

    nest panels

  • 利用EmptyBordervgaphgap空空间。

  • 请勿将尺寸或位置设置为任何内容。让布局经理为你处理。

  • 请通过Laying out Components withing a Container了解不同的布局管理器。


编辑

如果您正在使用NetBeans GUI Builder中看一看this answer一些帮助与如何使用使用设计工具不同的布局管理器。

+0

我打算把这个标记为答案,尽管最后我已经在浏览GUI构建器的想法,并且在Eclipse中创建了一个分层图形applet。 – Orphid