1 回答

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
為什么我必須在每次重畫(huà)時(shí)設(shè)置位置。
你不知道。實(shí)際上,您永遠(yuǎn)不應(yīng)該在方法內(nèi)設(shè)置組件的位置或任何類(lèi)型的約束paintComponent
。paintComponent
方法僅用于繪畫(huà),不用于定向或其他任何用途。
當(dāng)您組件的位置將由容器當(dāng)前的LayoutManagerjpanel.add(myComponent, constraints)
決定。(當(dāng)您沒(méi)有任何約束時(shí),將發(fā)生默認(rèn)約束,每個(gè)布局管理器都有自己的默認(rèn)約束)。jpanel.add(myComponent);
標(biāo)簽放置在面板的頂部,因?yàn)槟銢](méi)有設(shè)置面板的布局,所以它有它的默認(rèn)值,即FlowLayout。為了更改它,您必須使用另一個(gè)具有適當(dāng)約束的布局管理器。
例如,為了將其放置在面板的中心,您必須執(zhí)行以下操作:
jpanel.setLayout(new?BorderLayout()); jpanel.add(myLabel,BorderLayout.CENTER);
最后while(true)
在 GUI 運(yùn)行的線(xiàn)程中執(zhí)行,它將掛起線(xiàn)程,意味著 GUI 將被“凍結(jié)”,因?yàn)槭录o(wú)法發(fā)生。
添加回答
舉報(bào)