2016-10-13 7 views
0

私はEPOSシステムで作業しています。プログラムの一環として、ArrayListに格納されているすべてのアイテムのGridLayoutを生成しています。 Items ArrayList内では、すべてのオブジェクトが、名前、バーコード、価格などの必要なメンバー変数とともに格納されます。私は現在、グリッドにデータが入力されるようにしましたが、ボタンはアクションレスであり、クラスからデータを処理する方法はかなりわかりません。現在のアイテムオブジェクトの値を割り当てる方法はありますか?作られているボタンに反復されていますか?各ボタンは自分のコードで作成されているため、「手作り」ではありません。関連するコードは次のとおりです。オブジェクトarrayListからJButtonに値を割り当てる

public class gridCreator extends JFrame { 
    ObjectCreator obj = new ObjectCreator(); 
    GridLayout itemGrid = new GridLayout(); 
    JFrame frame = new JFrame("pls work"); 
    static gridCreator instance; 

public static void main(String[] args) throws FileNotFoundException { 
    instance = new gridCreator(); 
    instance.createGrids(); 
    instance.createAndShowGUI(); 
} 
public void createGrids() throws FileNotFoundException{ 
    obj.loadItems(); 
    itemGrid.setColumns(20); 
    itemGrid.setRows(4); 
    for (ObjectCreator.Item item : obj.items){ 
     addComponentsToPane(item); 
    } 
} 
private void addComponentsToPane(ObjectCreator.Item item) { 
    JButton button = new JButton(item.getName()); 
    frame.add(button); 
} 

補足として、ObjectCreatorクラスはオブジェクト自体が作成される場所です。

答えて

3

あなたはクラスがActionListenerを実装して作る、とのactionListenerすべてのボタンに割り当てることができます。

public class gridCreator extends JFrame implements ActionListener{ 
    ObjectCreator obj = new ObjectCreator(); 
    GridLayout itemGrid = new GridLayout(); 
    JFrame frame = new JFrame("pls work"); 
    static gridCreator instance; 

public static void main(String[] args) throws FileNotFoundException { 
    instance = new gridCreator(); 
    instance.createGrids(); 
    instance.createAndShowGUI(); 
} 
public void createGrids() throws FileNotFoundException{ 
    obj.loadItems(); 
    itemGrid.setColumns(20); 
    itemGrid.setRows(4); 
    for (ObjectCreator.Item item : obj.items){ 
     addComponentsToPane(item); 
    } 
} 
private void addComponentsToPane(ObjectCreator.Item item) { 
    JButton button = new JButton(item.getName()); 
    frame.add(button); 
} 
@Override 
public void actionPerformed(ActionEvent e) { 
    //do actions here 
} 

を次に、JFrameののアクションリスナーに、あなたはケース特定のアクションにすることができます。

+0

多くのおかげで、これは**非常に**有用ですが、私はまだ各ボタンがクラスの値にアクセスできるようにする方法を確信していますか?私は各ボタンを反復処理されている現在のオブジェクトにマップしようとしましたが、そこからどこに行くのかは分かりません。 – TooLateTheHero

+0

@TooLateTheHero - 私はかなり理解しているか分からない – ItamarG3

関連する問題