簡體   English   中英

Java如何獲取JComponent以根據幀寬度調整大小

[英]Java How to get JComponent to resize based on frame width

因此,除非重新調整大小,否則我的計算器程序看起來不錯。 然后,事情變得一團糟。 現在,我正在使用GridBagLayout來組織我的按鈕(在這種情況下,考慮到許多按鈕,最好使用GridBag)。 我將preferredSize設置為我希望啟動時按鈕的大小。 如何調整窗口大小時如何更改按鈕的大小?

在此處輸入圖片說明

這是我將應用程序縮小為較小尺寸后發生的情況。 當我將其放大時,一切都保持不變,並且兩邊都變成灰色的空白以彌補空間,而不是擴大按鈕。

對於我的按鈕尺寸,我正在使用new Dimension(80, 55)然后將preferredSize設置為該尺寸。 對於內存按鈕和jlabel,我計算了一些數學運算使其與整個按鈕一樣寬。

請注意,我仍在學習Java和swing庫。 結束注

UPDATE我在設置首選大小時仍然嘗試設置最小和最大大小,但仍然沒有執行。END UPDATE

UPDATE 2我嘗試將主面板的大小設置為與啟動時應用程序的大小相匹配,但這種方法不起作用END UPDATE

編輯2我的層次結構是這樣的:

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

結束編輯2

我建議使用來自Oracle的TableLayout(可以在此處下載),因為它更舒適。 當然也可以使用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,它將在它們之間分隔可用空間。

要添加Button或其他元素,您需要知道單元格坐標,如果它大於一個單元格,則可以向其中添加一個結束單元格,以便可以使用整個可用位置。

// 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM