2014-03-24 41 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