簡體   English   中英

JFrame和JPanel大小調整問題

[英]JFrame & JPanel sizing issue

我正在嘗試編寫包含JPanel的JFrame。 在JPanel中是JTextField的數組。 所以,我的GUI看起來像:

在此處輸入圖片說明

我沒有使用布局管理器,並且已將JFrame和JPanel設置為null。 我正在手動調整這些組件的大小。

您可以看到,即使我使用了與包含的JFrame相同的大小,JPanel的右側部分也被切掉了。

代碼如下:

在此處輸入圖片說明

我已經通過將JTextField數組中的列數乘以JTextField的寬度來計算JPanel所需的寬度。 除此之外,還需要添加JTextFields之間的每個間隙的寬度(其中有(columnNumber-1))以及兩個邊界間隙。

我已經做到了,但是如右圖所示,右側的邊框間隙被切掉了。

如果我在panelWidth中添加一些隨機量,那么您可以在其中看到右側的間隙,但是我的問題是我在這里缺少什么? 如果JFrame端和JPanel的大小相同(我將它們都打印出來),並且打印出的編號相同,那么這應該可以正常工作。

傑里米

我希望行/列值的任何組合都允許每個JTextField之間的垂直和水平距離恆定,並且每個文本字段都保持默認大小。

GridLayout允許您指定每個組件之間的水平/垂直間隙,並可以控制網格的大小。

然后,您可以在尊重網格大小的面板中使用GridLayout來包裝面板。

例如,您可以這樣做:

JPanel grid = new JPanel( new GridLayout(...) );

JPanel wrapper = new JPanel( new GridBagLayout() );
wrapper.add(grid, new GridBagConstraints());

frame.add(wrapper, BorderLayout.CENTER);

如果打包框架,網格面板將以首選尺寸顯示。

如果您調整框架的大小,則網格面板將保持在包裝面板的中心。

該GUI的頂部非常適合於網格布局,底部帶有“執行/取消”按鈕-流程布局。 將網格布局放置在邊框布局的CENTER中,將流程布局放置在PAGE_END ,包裝頂層容器(對於未裁剪的“正確尺寸”),然后完成工作。

它可能最終看起來像這樣:

在此處輸入圖片說明

暫無
暫無

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

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