PieterNoens
Gebruiker
- Lid geworden
- 26 feb 2013
- Berichten
- 6
Als ik mijn frame laad met deze knop erop, komt deze alleen tevoorschijn als ik er met mijn muis over ga.
Hoe kan dit ?
als ik een gewoone JButton gebruik heb ik dit probleem niet.
Hoe kan dit ?
als ik een gewoone JButton gebruik heb ik dit probleem niet.
Code:
package view;
import model.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Random;
/**
* User: Glenn Jaspers
* Date: 12-3-13
*/
public class KnopPlaats extends JButton {
private int x;
private int y;
private char r;
private Zeeslagmaster spel;
private Spelbord spelbord;
private ArrayList<Schip> schepen;
private int teller;
private ZeeslagGUI zeeslagGUI;
private Speler speler;
private BotenPlaatsenFrame botenPlaatsenFrame;
private ImageIcon icon;
Random random = new Random();
public KnopPlaats(Zeeslagmaster spel, Spelbord spelbord, ArrayList<Schip> schepen, int teller, ZeeslagGUI zeeslagGUI, Speler speler, BotenPlaatsenFrame botenPlaatsenFrame) {
this.spel = spel;
this.spelbord = spelbord;
this.schepen = schepen;
this.teller = teller;
this.zeeslagGUI = zeeslagGUI;
this.speler = speler;
this.botenPlaatsenFrame = botenPlaatsenFrame;
for (Vak vak[] : spelbord.getVeld()) {
for (Vak vak1 : vak) {
switch (vak1) {
case WATER:
icon = new ImageIcon("images/golf.png");
break;
case SCHIP:
icon = new ImageIcon("images/ship_icon.png");
break;
}
}
}
setIcon(icon);
//setSize(20, 20);
setVisible(true);
addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
placeShip();
}
});
}
public void placeShip() {
zeeslagGUI.setTeller(zeeslagGUI.getTeller() + 1);
spel.setX(getX());
spel.setY(getY());
if (botenPlaatsenFrame.getRdbHorizontaal().isSelected() == true) {
spel.setR('h');
} else {
spel.setR('v');
}
try {
spel.plaatsSchepen(spelbord, schepen.get(zeeslagGUI.getTeller()));
} catch (IllegalArgumentException e1) {
JOptionPane.showMessageDialog(null, e1.getMessage(), "OPGELET", JOptionPane.INFORMATION_MESSAGE);
zeeslagGUI.setTeller(zeeslagGUI.getTeller() - 1);
}
if (zeeslagGUI.getTeller() + 1 == spelbord.getAantalSchepen()) {
if (zeeslagGUI.getTweeSpelers() == true) {
zeeslagGUI.setTeller(-1);
if(speler == zeeslagGUI.getSpeler2()){
new SchietenFrame(zeeslagGUI, zeeslagGUI.getSpeler1(), zeeslagGUI.getSpel().getSpelbord2(), zeeslagGUI.getSpel());
botenPlaatsenFrame.dispose();
} else {
new BotenPlaatsenFrame(zeeslagGUI, zeeslagGUI.getSpeler2(), zeeslagGUI.getSpel().getSpelbord2(), zeeslagGUI.getSpel(), schepen);
botenPlaatsenFrame.dispose();
}
} else {
for (Schip schip: schepen){
boolean gekozen = false;
do {
try {
spel.setX(random.nextInt(10));
spel.setY(random.nextInt(10));
int h = random.nextInt(2);
if (h == 0)
spel.setR('v');
else spel.setR('h');
spel.plaatsSchepen(spel.getSpelbord2(), schip);
gekozen = true;
} catch (IllegalArgumentException e) {
gekozen = false;
}
} while (!gekozen);
System.out.println(spel.getX() +""+ spel.getR() +""+ spel.getY());
}
new SchietenFrame(zeeslagGUI, zeeslagGUI.getSpeler1(), zeeslagGUI.getSpel().getSpelbord2(), zeeslagGUI.getSpel());
botenPlaatsenFrame.dispose();
}
// new BotenPlaatsenFrame(zeeslagGUI, zeeslagGUI.getSpeler2())
}
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public char getR() {
return r;
}
public void setR(char r) {
this.r = r;
}
}