Toon posts:

[JAVA] Graphics problem

Pagina: 1
Acties:
  • 33 views sinds 30-01-2008

Verwijderd

Topicstarter
Hey,

ik ziet hier met een klein graphics probleem. Elke keer als ik een persoon (een rood stipje )wil toevoegen aan mijn panel, dan verschijnt er eerst iets anders, en dan pas het rode stipje (dus het flikkert eerst). Ik denk dat het iets te maken heeft met repaint, maar ik heb al zo veel geprobeerd , dat ik er niet meer aan uit kan.
Iemand enig idee wat het probleem zou zijn?
Thx


import java.awt.*;
import javax.swing.*;

public class Gui extends JFrame{
public JPanel panel;
int x,y;
Bord spelBord;
public Gui()
{

panel= new JPanel(){
public void paintComponent(Graphics g)
{
super.paintComponent(g);
ImageIcon icon = new ImageIcon("Afbeeldingen/toren.gif");
g.drawImage(icon.getImage(),0,0,1000,1000,null);
}
};
GridBagLayout gbl = new GridBagLayout();

panel.setLayout(gbl);

GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy=0;
c.fill = GridBagConstraints.BOTH;
c.gridwidth = GridBagConstraints.REMAINDER;

JFrame bord;
spelBord = null;
spelBord = Bord.instance();
bord = spelBord.getSpelBord();
panel.add(bord.getContentPane(),c);

setContentPane(panel);
}


public static void main(String[] args)
{
Gui frame = new Gui();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.setSize(1000,1000);
frame.setVisible(true);

long time = java.util.Calendar.getInstance().getTimeInMillis();

while((java.util.Calendar.getInstance().getTimeInMillis() - time) < 3000) {
}

frame.spelBord.getLabelAt(1,0).addPerson();
frame.repaint();

}
}


public class Bord extends JFrame {
//Het speelveld
public static final int BREEDTE = 24;
public static final int HOOGTE = 15;
private JFrame gameBord = new JFrame();
private Labeltje[][] label;


private static Bord _instance = null;


public static Bord instance() {
if(_instance == null)
_instance = new Bord();

return _instance;
}

public static void deleteInstance() {
_instance = null;
}

private Bord() {
this(HOOGTE, BREEDTE);
}

private Bord(int ymax, int xmax) {
placeComponents(ymax, xmax, getSpelBord().getContentPane());

}

/**
* De componenten in de meegegeven container plaatsen
*/
private void placeComponents(int ymax, int xmax, Container frame) {
frame.setLayout(new GridLayout(ymax, xmax));
frame.setBackground(new Color(0,0,0,0));
label = new Labeltje[ymax][xmax];
for(int y = 0; y < ymax; y++) {
for(int x = 0; x < xmax; x++) {

Labeltje label_ = new Labeltje();
if(x %2 !=0 || y%2 !=1){
label_.setIcon(new ImageIcon("Afbeeldingen/steen.gif"));
}
label[y][x] = label_;
frame.add(label[y][x]);
}
}
}

public JFrame getSpelBord() {return gameBord;}

public Labeltje[][] getLabel() {return label;}

public Labeltje getLabelAt(int y, int x) {return label[y][x];}
}


import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JLabel;

public class Labeltje extends JLabel{

public Labeltje(){}

boolean person_present=false;

public void addPerson(){
person_present = true;
this.repaint();

}


public void paintComponent(Graphics g){
super.paintComponent(g);

if(this.person_present){
g.setColor(Color.red);
g.fillOval(5,5,5,5);
this.setVisible(true);
}
}
}

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Allereerst: welkom op GoT :)

Daarna: lees onze mooie P&W FAQ - De "quickstart" eens door. Daar staat stap voor stap beschreven hoe je een begrijpelijk bruikbaar topic maakt waarmee we je kunnen helpen, incluis het gebruik van [code=Java] tags om je code ;)

Met dit topic kunnen we verder weinig: je plempt een stuk code neer met een hulpkreet 'hijdoetutnie', en verwacht dat wij het voor je gaan fixen. Daar is Programming & Webscripting dus niet voor bedoeld, debuggen doe je maar lekker zelf :) Zodra je het probleem geisoleerd hebt tot een handzaam probleem dat je zelf niet op kunt lossen zijn we je graag van dienst :Y)

Lees ook even de rest van de FAQ, staan ook stukken over Java en debuggen in ;)

Professionele website nodig?


Dit topic is gesloten.