[英]How to get components from a JFrame with a GridLayout?
我有一個關於Java和JFrame
的問題。 假設我有一個與GridLayout
使用的JFrame
。 假設我在JFrame
添加了JButton
,如何使用它的位置訪問我想要的那個(按位置,我的意思是ax和ay,用於定義網格上的確切位置)。 我已經嘗試了幾種方法,例如getComponentAt(int x, int y)
,並且看到這些方法在與GridLayout
結合使用時不能按預期工作,或者至少在我的情況下不能按預期工作。 所以我嘗試使用getComponent()
,這看起來很好。
最新的方法,似乎對我來說是正確的軌道是(假設我有一個帶有7行和7列的GridLayout
的JFrame
,x作為列,y作為行):
public JButton getButtonByXAndY(int x, int y) {
return (JButton) this.getContentPane().getComponent((y-1) * 7 + x);
}
圖片http://www.freeimagehosting.net/newuploads/9d6hq.jpg
使用上面的說法,我想把JButton
放在(4,4),意思是JFrame
的第25個JButton,我會首先索引前21個按鈕,然后再添加4個按鈕,最后訪問我想要的JButton。 問題是這在理論上只是如此。 有任何想法嗎?
PS抱歉鏈接到外部網站,但堆棧溢出不允許我上傳圖像,因為我沒有所需的聲譽。
此示例比較兩種方法:
維護List<JButton>
並以代數方式計算索引。
擴展JButton
並允許每個按鈕維護自己的網格位置。
GridLayout從0,0開始,JButton在(GridLayout中的4,4位)開始,意味着JFrame中的第32個(4 * 7 + 4而不是3 * 7 + 4)JButton。 對不起,如果我誤解了這些問題:(
你可以試試:
public static JButton getButtonByXAndY(int x, int y) {
return (JButton) f.getContentPane().getComponent(y * 7 + x);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.