ok... så er jeg på den igen... denne gang mener jeg måske at jeg er lidt mere i dybt vand end jeg var før... Jeg har brugt mange mange mange timer på at finde ud af den optimale løsning. Og det jeg er kommet frem til er at det er nemmest/mest effektivt at lave en klasse der extender JButton (ja jeg har lavet alle felterne om til JButtons.. men det er sådan set ligemeget hvad jeg bruger, jeg finder ud af senere hvad der er bedst til mit formål.) Nå tilbage til den extendede JButton klasse... Det jeg vil have ud af at arve er at jeg vil lave en metode der kan fortælle om der er et skib på et felt eller ej.. jeg har prøvet med bare at lave en metude der returnerede true eller false, alt efter hvad man kaldte ( vandFelt.skib(true); ), men når jeg så skulle fortælle den at hvis der var et skib på feltet kunne jeg selvfølgelig ikke det da sætningen ( if(vandFelt(true)) )jo altid er true og så vil den jo altid køre det ? Ja det er måske lettere hvis jeg pare poster kildekoden... så kan det være at jeg gør mig selv mere tydelig..
Hvis der er nogen spørgsmål.. så kom endelig med dem... så svarer jeg så hurtigt jeg ser dem...
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class VandFelt extends JFrame
{
private Felt vandFelt = new Felt();
JButton[][] fieldContainer = new JButton[10][10];
int xcor=0, ycor=0;
boolean skib = false;
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 Felt();
vandFelt.setBounds(new Rectangle(xcor, ycor, 15, 15));
vandFelt.setBackground(new Color(255, 255, 255));
vandFelt.setBorder(BorderFactory.createLineBorder(Color.black, 1));
vandFelt.setEnabled(false);
if(i<4)
vandFelt.setSkib();
vandFelt.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
click(e);
}
});
fieldContainer[i][e] = vandFelt;
getContentPane().add(fieldContainer[i][e], null);
}
}
}
private void click(MouseEvent e)
{
vandFelt = (Felt)e.getSource();
if(setSkib())
vandFelt.skib(true);
/*
if(false)
vandFelt.setBackground(new Color(255, 0, 0));
else
vandFelt.setBackground(new Color(0, 0, 0));*/
}
private void skibsPlacering()
{
}
public static void main(String[] args)
{
VandFelt gr = new VandFelt();
gr.setSize(190,220);
gr.setTitle("Battle Ship: The Game");
gr.setVisible(true);
}
}
den extended JButton klasse
import javax.swing.*;
import java.awt.*;
class Felt extends JButton
{
public void skib(boolean i)
{
if(i)
setBackground(new Color(255, 0, 0));
else
setBackground(new Color(0, 0, 0));
}
public boolean setSkib()
{
return true;
}
}
tusind tak for jeres tid