我有一个非常简单的游戏,我正在创建一个新手项目。它基于名为“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);
}
}
当我运行它,我得到以下的输出:
- (初始标签高度) - 200
- (调整塔()高度) - 100
- (调整标签高度) - 100
这表明我想要做的是在某个层面上工作,但实际的标签在视觉上保持相同的大小。
在开始(游戏的开始应该设置标签一半可见大小): 几个剧本后 - 蓝的新塔的高度将显示在左上角
我已经玩过了在标签和框架上启用和禁用resize属性的功能,而且我曾经设法调整大小,但它却以不幸的方式转移了框架的其他组件。正如你所看到的,尽管我没有明确地指示他们这样做(可能是“卡片”中的文本长度的影响),但底部的“卡片”似乎自己调整大小?我做错了什么?
据我所知,所有代码都在Swing中,并且根本没有JavaFX代码,所以标题中的[javafx]标记和JavaFX引用应该被删除? – jewelsea