簡體   English   中英

如何使用GridLayout從JFrame獲取組件?

[英]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列的GridLayoutJFrame ,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抱歉鏈接到外部網站,但堆棧溢出不允許我上傳圖像,因為我沒有所需的聲譽。

示例比較兩種方法:

  1. 維護List<JButton>並以代數方式計算索引。

  2. 擴展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.

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