Hallo
Ich brauche Hilfe ich möchte für ein Schiffe versenken Spiel.
Ich bin auch mit dem Feld soweit fertig allerdings lassen sich meine JButton Schiffe nicht in das GUI Spielfeld integrieren vieleicht kann mir jemand helfen ich wolte dies mit einem Action Listener machen aber dies funktioniert nicht so ganz.
Dies ist die Klasse der Schiffe
package Schiffeversenken;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
//position erstellen, attribut schifflänge als array, evtl. bild einfügen, treffer methode,
public class Schiff implements ActionListener {
int schifflänge[];
int postition;
JFrame buttonSchiffe;
JButton einerSchiff;
JButton zweierSchiff;
JButton dreierSchiff;
JButton fertigGesetzt;
public Schiff() {
this.postition = 1;
}
public void buttonsFürSchiffeSetzen() {
this.buttonSchiffe = new JFrame("Schiffe setzten");
this.einerSchiff = new JButton("Ein-Feld Schiff");
this.zweierSchiff = new JButton("Zwei-Feld Schiff");
this.dreierSchiff = new JButton("Drei-Feld Schiff");
this.fertigGesetzt = new JButton("Fertig");
buttonSchiffe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
buttonSchiffe.setSize(200, 200);
buttonSchiffe.setLocation(1090, 10);
buttonSchiffe.setLayout(new FlowLayout());
buttonSchiffe.getContentPane().add(einerSchiff);
buttonSchiffe.getContentPane().add(zweierSchiff);
buttonSchiffe.getContentPane().add(dreierSchiff);
buttonSchiffe.getContentPane().add(fertigGesetzt);
einerSchiff.addActionListener(this);
zweierSchiff.addActionListener(this);
dreierSchiff.addActionListener(this);
buttonSchiffe.setVisible(true);
}
public void actionPerformed(ActionEvent e) { // Schiffe Buttons den Schifflängen zuweisen
if (e.getSource() == this.einerSchiff) { // get Source = Das Objekt, auf dem das Ereignis anfänglich aufgetreten ist. Rückgabe bei dem Objekt wo das Ereignis anfänglich aufgetreten ist
einerSchiff.setEnabled(false); // set enabled aktiviert oder deaktiviert die Schaltfläche
Spielfeld s = new Spielfeld("");
s.add(einerSchiff, schifflänge[0]);
s.setBackground(Color.BLUE); //funktioniert nicht
schifflänge[2] = schifflänge[0];
//((Component) e.getSource()).setBackground(Color.BLACK); //funktioniert nicht,
} else if (e.getSource() == this.zweierSchiff) {
zweierSchiff.setEnabled(false);
schifflänge[2] = schifflänge[1];
} else if (e.getSource() == this.dreierSchiff) {
dreierSchiff.setEnabled(false);
schifflänge[2] = schifflänge[2];
Und dies die Klasse der GUI
package Schiffeversenken;
import java.awt.Color;
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.rmi.Remote;
import java.rmi.RemoteException;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class GUI extends JFrame implements ActionListener, Interface {
private static final long serialVersionUID = 1L;
private JLabel Tietel;
private JLabel Name;
private JLabel Name2;
private JButton Start1;
private JButton Beenden;
private JTextField textName;
private JTextField textName2;
public GUI() throws RemoteException {
this.setTitle("Schiffe versenken");
this.Tietel = new JLabel("Willkomen zum Schiffeversenken");
this.Name = new JLabel("Name 1");
this.Name2 = new JLabel("Name 2");
this.Start1 = new JButton("Start");
this.Beenden = new JButton("Beenden");
this.textName = new JTextField();
this.textName2 = new JTextField();
new JTextField();
this.setVisible(true);
Beenden.addActionListener(this);
add(Beenden);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(500, 500);
this.setLayout(new GridBagLayout());
this.ordneAn();
this.Listenererstellen();
this.setVisible(true);
}
public void ordneAn() throws RemoteException {
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.insets = new Insets(4, 4, 4, 4);
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 0;
this.getContentPane().add(Tietel, c);
c.gridx = 0;
c.gridy = 1;
this.getContentPane().add(Name, c);
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 3;
this.getContentPane().add(textName, c);
c.gridx = 2;
c.gridy = 1;
this.getContentPane().add(Name2, c);
c.gridx = 2;
c.gridy = 2;
c.gridwidth = 2;
this.getContentPane().add(textName2, c);
c.gridx = 0;
c.gridy = 3;
c.gridwidth = 1;
this.getContentPane().add(Start1, c);
c.gridx = 3;
c.gridy = 3;
c.gridwidth = 1;
this.getContentPane().add(Beenden, c);
}
@Override
public void actionPerformed(ActionEvent ae) {
Object object = ae.getSource();
if (object.equals(Beenden)) {
System.exit(0);
}
}
public void Listenererstellen() throws RemoteException {
Start1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Spielfeld feld1 = new Spielfeld();
Spielfeld feld2 = new Spielfeld("baba");
Schiff schiffe = new Schiff();
schiffe.buttonsFürSchiffeSetzen();
}
});
}
}
Bin über jede Hilfe sehr dankbar!
Ich brauche Hilfe ich möchte für ein Schiffe versenken Spiel.
Ich bin auch mit dem Feld soweit fertig allerdings lassen sich meine JButton Schiffe nicht in das GUI Spielfeld integrieren vieleicht kann mir jemand helfen ich wolte dies mit einem Action Listener machen aber dies funktioniert nicht so ganz.
Dies ist die Klasse der Schiffe
package Schiffeversenken;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
//position erstellen, attribut schifflänge als array, evtl. bild einfügen, treffer methode,
public class Schiff implements ActionListener {
int schifflänge[];
int postition;
JFrame buttonSchiffe;
JButton einerSchiff;
JButton zweierSchiff;
JButton dreierSchiff;
JButton fertigGesetzt;
public Schiff() {
this.postition = 1;
}
public void buttonsFürSchiffeSetzen() {
this.buttonSchiffe = new JFrame("Schiffe setzten");
this.einerSchiff = new JButton("Ein-Feld Schiff");
this.zweierSchiff = new JButton("Zwei-Feld Schiff");
this.dreierSchiff = new JButton("Drei-Feld Schiff");
this.fertigGesetzt = new JButton("Fertig");
buttonSchiffe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
buttonSchiffe.setSize(200, 200);
buttonSchiffe.setLocation(1090, 10);
buttonSchiffe.setLayout(new FlowLayout());
buttonSchiffe.getContentPane().add(einerSchiff);
buttonSchiffe.getContentPane().add(zweierSchiff);
buttonSchiffe.getContentPane().add(dreierSchiff);
buttonSchiffe.getContentPane().add(fertigGesetzt);
einerSchiff.addActionListener(this);
zweierSchiff.addActionListener(this);
dreierSchiff.addActionListener(this);
buttonSchiffe.setVisible(true);
}
public void actionPerformed(ActionEvent e) { // Schiffe Buttons den Schifflängen zuweisen
if (e.getSource() == this.einerSchiff) { // get Source = Das Objekt, auf dem das Ereignis anfänglich aufgetreten ist. Rückgabe bei dem Objekt wo das Ereignis anfänglich aufgetreten ist
einerSchiff.setEnabled(false); // set enabled aktiviert oder deaktiviert die Schaltfläche
Spielfeld s = new Spielfeld("");
s.add(einerSchiff, schifflänge[0]);
s.setBackground(Color.BLUE); //funktioniert nicht
schifflänge[2] = schifflänge[0];
//((Component) e.getSource()).setBackground(Color.BLACK); //funktioniert nicht,
} else if (e.getSource() == this.zweierSchiff) {
zweierSchiff.setEnabled(false);
schifflänge[2] = schifflänge[1];
} else if (e.getSource() == this.dreierSchiff) {
dreierSchiff.setEnabled(false);
schifflänge[2] = schifflänge[2];
Und dies die Klasse der GUI
package Schiffeversenken;
import java.awt.Color;
import java.awt.Component;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.rmi.Remote;
import java.rmi.RemoteException;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class GUI extends JFrame implements ActionListener, Interface {
private static final long serialVersionUID = 1L;
private JLabel Tietel;
private JLabel Name;
private JLabel Name2;
private JButton Start1;
private JButton Beenden;
private JTextField textName;
private JTextField textName2;
public GUI() throws RemoteException {
this.setTitle("Schiffe versenken");
this.Tietel = new JLabel("Willkomen zum Schiffeversenken");
this.Name = new JLabel("Name 1");
this.Name2 = new JLabel("Name 2");
this.Start1 = new JButton("Start");
this.Beenden = new JButton("Beenden");
this.textName = new JTextField();
this.textName2 = new JTextField();
new JTextField();
this.setVisible(true);
Beenden.addActionListener(this);
add(Beenden);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(500, 500);
this.setLayout(new GridBagLayout());
this.ordneAn();
this.Listenererstellen();
this.setVisible(true);
}
public void ordneAn() throws RemoteException {
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.insets = new Insets(4, 4, 4, 4);
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 0;
this.getContentPane().add(Tietel, c);
c.gridx = 0;
c.gridy = 1;
this.getContentPane().add(Name, c);
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 3;
this.getContentPane().add(textName, c);
c.gridx = 2;
c.gridy = 1;
this.getContentPane().add(Name2, c);
c.gridx = 2;
c.gridy = 2;
c.gridwidth = 2;
this.getContentPane().add(textName2, c);
c.gridx = 0;
c.gridy = 3;
c.gridwidth = 1;
this.getContentPane().add(Start1, c);
c.gridx = 3;
c.gridy = 3;
c.gridwidth = 1;
this.getContentPane().add(Beenden, c);
}
@Override
public void actionPerformed(ActionEvent ae) {
Object object = ae.getSource();
if (object.equals(Beenden)) {
System.exit(0);
}
}
public void Listenererstellen() throws RemoteException {
Start1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Spielfeld feld1 = new Spielfeld();
Spielfeld feld2 = new Spielfeld("baba");
Schiff schiffe = new Schiff();
schiffe.buttonsFürSchiffeSetzen();
}
});
}
}
Bin über jede Hilfe sehr dankbar!