第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

getWidth()/getHeight() 和 getPreferredSize().width

getWidth()/getHeight() 和 getPreferredSize().width

慕妹3146593 2023-05-17 15:06:08
我正在嘗試使用在調(diào)整 JFrame 大小時(shí)動(dòng)態(tài)調(diào)整大小的鍵來(lái)繪制鍵盤。此外,鍵可以有不同的大小。我有一個(gè)面板,其布局設(shè)置為BorderLayout. 在中心,我放置了一個(gè)面板,其布局設(shè)置為GridLayout(5,1).網(wǎng)格的每一行都是一個(gè)JPanelwith FlowLayout。在每一行中,我計(jì)算每個(gè)按鈕并通過(guò)調(diào)用該setPreferredSize方法設(shè)置其首選大小。運(yùn)行程序時(shí),我只看到一些外觀怪異的按鈕。getWidth()/getHeight()當(dāng)我用和用 檢查行面板時(shí)getPreferredSize().width/height,我得到了不同的值: 對(duì)于getPrefereedSize().width,我得到了我真正設(shè)置的寬度,但是對(duì)于getWidth()我得到了一個(gè)明顯較低的值。兩種方法之間有區(qū)別getWidth()嗎getPreferredSize().width?
查看完整描述

2 回答

?
隔江千里

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊

還有一些關(guān)于getSize()and的其他問(wèn)題getPreferredSize(),但我沒(méi)有找到可以被視為重復(fù)的問(wèn)題。所以開始了...)

Swing 中的組件通常有一個(gè)首選大小。這是調(diào)用該方法時(shí)返回的大小getPreferredSize。它是組件“想要”的大小,以便正確顯示。例如,JLabel具有特定文本和字體的 a 將具有剛好足以顯示整個(gè)文本的首選大小。

但是當(dāng)一個(gè)組件顯示在屏幕上時(shí),可能無(wú)法以其首選大小顯示它(一些原因?qū)⒃谙旅娼忉專R虼嗽谡{(diào)用時(shí)getSize,該方法將返回組件當(dāng)前在屏幕上的實(shí)際大小。當(dāng)包含框架調(diào)整大小時(shí),組件也可能調(diào)整大小,然后再次返回不同的值。

(請(qǐng)注意,getSize()基本上返回一個(gè)對(duì)象,該對(duì)象包含與getWidth()and返回的值相同的值getHeight())。


為什么不能始終確保實(shí)際尺寸與首選尺寸匹配:

Swing 中的布局通常由布局管理器處理。詳細(xì)信息在有關(guān)在容器中布置組件的教程中進(jìn)行了說(shuō)明,但我將在此處嘗試總結(jié)與此問(wèn)題相關(guān)的部分。

這樣的布局管理器將嘗試以其首選大小布置組件??梢韵胂筮@是困難的,有時(shí)甚至是不可能的。想象一個(gè)GridLayout(1,2)包含兩個(gè)其他面板的面板:

+---------------------+---------------------+

|? ? ? ? ? ? ? ? ? ? ?|? ? ? ? ? ? ? ? ? ? ?|

|? Preferred Size:? ? |? ?Preferred Size? ? |

|? ? ?400 x 300? ? ? ?|? ? ? 100 x 200? ? ? |

|? ? ? ? ? ? ? ? ? ? ?|? ? ? ? ? ? ? ? ? ? ?|

+---------------------+---------------------+

在 中GridLayout,所有組件的大小必須相同。但他們的首選尺寸不同。所以布局管理器根本無(wú)法確保面板的實(shí)際尺寸與其首選尺寸相同。因此它以介于兩者之間的折衷大小顯示它們。(它還可能考慮到最小和最大尺寸,使其更加困難......)。最后,兩個(gè)面板的大小可能是(例如)(300,200)像素,即使首選大小是(400,300)和(100,200)像素。


特別是關(guān)于您描述的布局:請(qǐng)注意,FlowLayout這里有點(diǎn)特別。如果有足夠的空間,它將以首選大小布置組件。如果沒(méi)有足夠的空間,則某些組件可能不可見(jiàn)。因此,您可以嘗試將行中的 更改FlowLayout為 a?GridLayout(1,n),其中n是該行中的鍵數(shù)。


查看完整回答
反對(duì) 回復(fù) 2023-05-17
?
慕少森

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊

組件的 getWidth/getHeight 返回當(dāng)前尺寸。getPreferredSize 返回組件想要獲取的內(nèi)容。例如,帶有文本的按鈕將返回首選大小,因此文本將完全可見(jiàn)。

合理的布局管理器會(huì)向子組件詢問(wèn)它們的首選尺寸,并為它們提供這些尺寸。這將導(dǎo)致父組件的首選大小。如果將父組件設(shè)置為較小的尺寸,則它不能再?gòu)?qiáng)制執(zhí)行子組件的首選尺寸,并且要么隱藏一些組件,要么使組件變小。


查看完整回答
反對(duì) 回復(fù) 2023-05-17
  • 2 回答
  • 0 關(guān)注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)