Hej, jeg er sammen med min gruppe i øjeblikket ved at lave et sænke slagskibe spil.
Vi har lavet 100 felter. og det der er problemet er at vi ikke kan få et enkelt felt til at blive markeret, det bliver altid det sidste felt der er sat (eller det felt vi vælger) der bliver sort...
Probemet, tror jeg, ligger i at vi ikke kan få den til at sætte vandFelt til at være den knap vi trykker på..
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class VandFelt extends JFrame
{
private JTable vandFelt = new JTable();
JTable[][] fieldContainer = new JTable[10][10];
int xcor=0, ycor=0;
public VandFelt()
{
try
{
jbInit();
}
catch(Exception u)
{
u.printStackTrace();
}
}
private void jbInit() throws Exception
{
getContentPane().setLayout(null);
for(int i = 0; i < 10; i++)
{
xcor+=15;
ycor=10;
for(int e = 0; e < 10; e++)
{
ycor+=15;
vandFelt = new JTable();
vandFelt.setBounds(new Rectangle(xcor, ycor, 15, 15));
vandFelt.setBackground(new Color(250, 255, 250));
vandFelt.setBorder(BorderFactory.createLineBorder(Color.black, 1));
vandFelt.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
click(e);
}
});
fieldContainer[i][e] = vandFelt;
getContentPane().add(fieldContainer[i][e], null);
}
}
}
// det er her der er et problem tror jeg ! vi skal på en eller anden måde have sat vandFelt til at være den knap der bliver trykket på.
private void click (MouseEvent e)
{
// vandFelt = fieldContainer[3][6]; //Hvis denne linie bliver atktiveret. så sætter den det felt på plads 3,6 til at blive sort. vandFelt skal så bare sættes til det felt man trykker på.
vandFelt.setBackground(new Color(0, 0, 0));
}
public static void main(String[] args)
{
VandFelt gr = new VandFelt();
gr.setSize(450,450);
gr.setTitle("Battle Ship: The Game");
gr.setVisible(true);
}
}
Nåe ja.. der er en lille hage ved projektet... vi må ikke bruge util klassen !
Jeg ville blive meget lykkelig hvis der var nogen der kunne finde ud af hvordan det skal gøres...
Tak for din tid.