Hallo, ich erstelle gerade ein Frame und da sollen 10x10 Buttons sein. Alle 100 Butons sollen als Spielffeld dienen. Dazu hab ich mir dann einfach eine neue Klasse erstellt die von JButton erbt und dann 3 Klassenvariablen erhält um diese leichter zu identifizieren. Dummer weise werden diese Buutons aber nicht angezeigt. Ahja, ich füge sie dem Frame in einer for-Schleife hinzu.
So sieht das aus:
Buton Klasse:
und weiter kommen noch die Getter und Setter für diese Attribute.
Jetzt das Frame:
So sieht das aus:
Buton Klasse:
Java:
public class MeerButton extends JButton {
/*
* Hier werden die Klassenvariablen deklariert. x soll die x-Koordiante
* des Buttons in einem Feld darstellen. y soll die y-Koordinate des
* Buttons in einem Feld darstellen.
* Wenn es mehrere Felder geben sollte, kann man diesen eine Nummer
* zuteilen und diese Nummer dann auch dem Button uebergeben. Damit
* ist dann eindeutig in welchen Feld sich diese Komponente befindet.
*/
private int x;
private int y;
private int feld;
/**
* Der Kostruktor der Klasse MeerButton. Sie nimmt drei Parameter auf,
* alle drei vom Typ int.
* @param x koennte fuer die x-Koordinate in einem Feld darstellten.
* @param y koennte fuer die y-Koordiante in einem Feld darstellen.
* @param feld konnte eine Feldnummer darstellen.
*/
public MeerButton(int x, int y, int feld) {
this.x = x;
this.y = y;
this.feld = feld;
}
und weiter kommen noch die Getter und Setter für diese Attribute.
Jetzt das Frame:
Java:
private void initGUI() {
try {
/*
* Diese Zeile dient dazu, dass das Programm auch beendet wird,
* wenn man oben rechts auf das Kreuz klickt.
*/
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
{
/*
* Ein JPanel wird zum Fenster hinzugefuegt. Zu dem Panel
* werden dann die ganzen Komponenten hinzugefuegt.
*/
jPanel = new JPanel();
jPanel.setLayout(null);
getContentPane().add(jPanel, BorderLayout.CENTER); {
/*
* Die Buttons fuer das eigene Meer werden hinzugefuegt.
* Der erste Button befindet sich bei x = 7 und y = 28,
* da aber beim betreten der Schleife bereits zu der
* y-Koordinate 35 dazuaddiert wird, muss y zu Beginn
* mit dem Wert -7 initialisiert werden. Es werden
* 35 dazuaddiert, weil die Buttons selbst 35x35 groß
* sind und zwischen den Komponenten keine sichtbaren
* Luecken vorhanden sein sollen.
*
* Die Variablen xPosition und yPosition werden fuer die
* Platzierung der Buttons auf dem Panel benoetig.
* Die Variablen xKoordiante und yKoordiante werden der
* Klasse MeerButton uebergeben.
*/
int yKoordiante = -1;
int xPosition = 7;
int yPosition = -7;
int size = 35;
for (int i = 0; i < 10; i++) {
int xKoordiante = 0;
yPosition += 35;
xPosition = 7;
yKoordiante += 1;
for (int j = 0; j < 10; j++) {
JButton button = new MeerButton(xKoordiante,
yKoordiante, 0);
JButton button = new JButton();
jPanel.add(button);
button.setBounds(xPosition, yPosition, size, size);
xPosition += 35;
xKoordiante += 1;
}
}}
pack();
this.setSize(780, 500);