Gitternetzwerk anhand von Arrays

Hallo ihr Lieben,

ich bin gerade dabei eine GUI zu erstellen und benötige für diese GUI ein Gitternetzwerk, nur dieses anhand Arrays, damit ich immer wieder auf jedes einzelne Kästchen zugreifen kann.
Bis jetzt hab ich nur das

public class Muster
    {
    public static void main(String[] args)
    {
    JFrame window = new JFrame();
    window. setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
    window.setSize(800, 1000);
    GridLayout layout = new GridLayout(30, 30);
    JPanel panel = new JPanel(layout);

    
    for(int i = 0; i < 30; i++){
    for(int j = 0; j < 30; j++){
    panel.add(new JButton());
    }
}
    
    window.add(panel);
    window.validate();
    window.setVisible(true);

    }
    

    
}

es erstellt mir ja auch ein Panel mit Kacheln, so wie ich es eigentlich haben will, aaaaaaaaaaaaaaaaaaber ich wüsste jetzt nicht, wie ich einzeln drauf zugreifen kann :frowning: Beim Array wär es ja
array[3][2]=1;

oder sowas in der Art. Hoffe ich könnte mein Problem verdeutlichen und danke euch schonmal für eure Hilfe :slight_smile:

LG

vielleicht ist es zu früh, aber ich versteh nicht was du meinst :wink:
worauf willst du zugreifen wie bei einem Array?

Theoretisch kommt man an die Components (die im GridLayout auf dem Panel liegen) noch dran, mit panel.getComponent(index), aber das ist in diesem Fall SEHR unschön. Stattdessen solltest du die Buttons, die du noch brauchst, auch in einen Array legen. Falls du sie noch brauchst. Wenn es nur darum geht, rauszufinden, welcher angeklickt wurde, braucht man das nicht unbedingt.
Abgesehen davon sollte das nicht alles in der main passieren…

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Muster
{
    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            @Override
            public void run()
            {
                new Muster();
            }
        });
    }


    private JButton buttons[][];

    public Muster()
    {
        JFrame window = new JFrame();
        window. setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
        window.setSize(800, 1000);

        int sizeX = 10;
        int sizeY = 10;
        buttons = new JButton[sizeX][sizeY];

        GridLayout layout = new GridLayout(sizeX, sizeY);
        JPanel panel = new JPanel(layout);
        for(int i = 0; i < sizeX; i++){
            for(int j = 0; j < sizeY; j++){
                buttons**[j] = new JButton(i+"/"+j);

                final int indexI = i;
                final int indexJ = j;
                buttons**[j].addActionListener(new ActionListener()
                {
                    @Override
                    public void actionPerformed(ActionEvent e)
                    {
                        clickedButton(indexI, indexJ);
                    }
                });


                panel.add(buttons**[j]);
            }
        }
        window.getContentPane().add(panel);
        window.setVisible(true);
    }

    private void clickedButton(int i, int j)
    {
        System.out.println("That was "+i+" "+j);
    }



}

Halloooo,

ersteinmal super vielen lieben Dank :slight_smile: Die Buttons müsste ich eigentlich auch umänder in JPanels, hab ich vergessen :eek:
Ich benötige nur die Positionen um später Icons in die jetztigen Buttons, bzw. späteren Panels einfügen zu können :slight_smile:
Damit ich also sagen kann auf Position [3][4] befindet sich der Icon „Sonne.gif“ :slight_smile:

Viiiiielen Danke nochmal :slight_smile:

Ein Double Bass Array bezeichnet eine bestimmte räumliche Anordnung mehrerer Tieftonlautsprecher in einem quaderförmigen Hörraum. Es dient dem Zweck, unerwünschte Resonanzen bei der Musikwiedergabe mit einer Hifi- oder Heimkinoanlage durch Vermeidung von stehenden Wellen zu verhindern, so dass die Wiedergabe möglichst unverfälscht und unabhängig vom Hörerstandort erfolgen kann.