1

特にJavaについて質問がありますJFrameJFrameで使用しているを持っているとしましょうGridLayoutJButtonにsを追加したJFrameとすると、その位置を使用して目的の位置にアクセスするにはどうすればよいですか(位置によって、グリッド上の正確な場所を定義するために使用されるaxとayを意味します)。たとえばgetComponentAt(int x, int y)、いくつかの方法を試しましたが、これらの方法をと組み合わせると意図したとおりにGridLayout機能しないか、少なくとも私の場合は意図したとおりに機能しないことがわかりました。なので、使ってみgetComponent()ましたが、問題ないようです。

私にとって正しい方向に進んでいるように見える最新の方法は次のとおりです( 7行7列JFrameのaがあり、xが列、yが行であると仮定します)。GridLayout

public JButton getButtonByXAndY(int x, int y) {
    return (JButton) this.getContentPane().getComponent((y-1) * 7 + x);
}

画像http://www.freeimagehosting.net/newuploads/9d6hq.jpg

JButton上記を使用して、 at(4、4)、つまりの25番目のJButtonを取得したい場合JFrame、最初に最初の21個のボタンをインデックスに登録し、次に4個を追加して、最後に目的のJButtonにアクセスします。問題は、これが理論上のみそのように機能することです。何か案は?

PS外部のウェブサイトにリンクして申し訳ありませんが、必要な評判がないため、スタックオーバーフローでは画像をアップロードできません。

4

2 に答える 2

2

このでは、 2つのアプローチを比較します。

  1. aを維持し、List<JButton>代数的にインデックスを計算します。

  2. 各ボタンを拡張JButtonして、独自のグリッド位置を維持できるようにします。

于 2012-05-31T13:57:33.770 に答える
1

GridLayoutは0,0で始まり、JButtonはGridLayoutの(4,4位置)で始まります。これは、JFrameの32番目(3 * 7+4ではなく4*7 + 4)のJButtonを意味します。質問を誤解してすみません:(

あなたが試すことができます:

   public static JButton getButtonByXAndY(int x, int y) {
        return (JButton) f.getContentPane().getComponent(y * 7 + x);
    }
于 2012-05-31T12:55:45.143 に答える