2017-10-16 166 views
0

所以我的計算器程序看起來不錯,除非我調整它。然後事情就會徹底失敗。現在我正在使用GridBagLayout來組織我的按鈕(認爲最好使用GridBag來處理這種情況,因爲它有很多按鈕)。我將preferredSize設置爲我想要啓動時按鈕的大小。如何在調整窗口大小時使按鈕更改大小?Java如何讓JComponent根據框架寬度調整大小

enter image description here

這是我調整應用程序後,小會發生什麼。 當我把它做得更大時,所有東西都保持不變,我在兩邊都會留下灰色的空白來彌補空間,而不是放大按鈕。

對於我使用的按鈕尺寸new Dimension(80, 55) 然後將preferredSize設置爲該尺寸。 對於內存按鈕和jlabels,我計算一些數學,使其與整個按鈕一樣寬。

請注意我還在學習java以及swing庫。 END注意

UPDATE我嘗試設置最小和最大尺寸,當我設置的首選大小和仍然沒有去結束時更新

更新2我試圖設置我的主面板的尺寸匹配在啓動應用程序的大小,並沒有工作結束時更新

EDIT 2我的層次結構是這樣的:

FRAME 
    MAINPANEL - Contains all three panels 
     TOPPANEL - Contains the display 
     MIDDLEPANEL - Contains memory buttons 
     BOTTOMPANEL - Contains calculator buttons 

END EDIT 2

回答

0

我建議使用TableLayout從Oracle(也可以在這裏下載),因爲它更舒適。當然也可以使用GridBagLayout,但特別是當你是新手時,TableLayout更容易理解和配置。

Oracle TableLayout

double size[][] = 
     {{0.25, 0.25, 0.25, 0.25}, //Horizontal 
     {50, TableLayout.FILL, 40, 40, 40}}; //Vertical 

frame.setLayout (new TableLayout(size)); 

它基本上被分成行和列的網格。所以,每個單元格都有一個id,例如「0,0」。 高度和寬度可以通過像素,百分比和Layout.FILL進行調整,它使用可用空間。如果您使用多個Layout.FILL,它將分隔它們之間的可用空間。

要添加按鈕或其他元素,您需要知道單元格座標,如果它大於一個單元格,則可以添加一個單元格,以便您可以使用整個可用空間。

// Add buttons 
    frame.add (button[0], "1, 1, 4, 1"); // Top 
    frame.add (button[1], "1, 4, 4, 4"); // Bottom 
    frame.add (button[2], "1, 3  "); // Left 
    frame.add (button[3], "4, 3  "); // Right 
    frame.add (button[4], "3, 3, c, c"); // Center 
    frame.add (button[5], "3, 3, 3, 4"); // Overlap 

這裏是一些有用的鏈接:

http://www.oracle.com/technetwork/java/tablelayout-141489.html http://www.clearthought.info/sun/products/jfc/tsc/articles/tablelayout/Simple.html http://www.clearthought.info/sun/products/jfc/tsc/articles/tablelayout/Preferred.html

相關問題