Hallo,
ich habe zwei Klassen eine enthält eine paintComponent-Methode und die andere
einen Thread, in dessen run-Methode die paintComponent-Methode der anderen Klasse
durch repaint() aufgerufen werden soll. Leider funktioniert dies nicht.
Ich kann in der run-Methode sehrwohl andere Methoden der anderen Klasse aufrufen, aber paintComponent nicht.
Code-Fragment der Thread-Klasse
Code-Fragmente der Klasse mit paintComponent und in welcher der obige Thread erzeugt wird:
Hat jemand einen Tipp?
Danke im voraus
ich habe zwei Klassen eine enthält eine paintComponent-Methode und die andere
einen Thread, in dessen run-Methode die paintComponent-Methode der anderen Klasse
durch repaint() aufgerufen werden soll. Leider funktioniert dies nicht.
Ich kann in der run-Methode sehrwohl andere Methoden der anderen Klasse aufrufen, aber paintComponent nicht.
Code-Fragment der Thread-Klasse
Java:
public void run() {
while(!isInterrupted()) {
boolean angekommen = true; l
try {
zeichenfl.repaint();
Thread.sleep(300);
for(int i=0; i < zeichenfl.index_zu_Stelle.size(); i++) {
//wenn Marke noch nicht an Zielstelle angekommen
if(!zeichenfl.stellePressed(zeichenfl.markenX.get(i),
zeichenfl.markenY.get(i),
model.Stellen_Liste.get(zeichenfl.index_zu_Stelle.get(i)))) {
angekommen = false;
Code-Fragmente der Klasse mit paintComponent und in welcher der obige Thread erzeugt wird:
Java:
public void paintComponent (Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
setPreferredSize(new Dimension(panelWidth, panelHeight));
//Linienstärke und Unschärfe einstellen
Stroke s = new BasicStroke((3*model.groesseWidth)/40);
g2.setStroke(s);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
Java:
public void mousePressed(MouseEvent e) {
x = e.getX();
y = e.getY();
//wenn aktivierte Transition geschaltet wurde
if(e.isMetaDown() && !model.getLoeschKenn() && !model.getVerschKenn() &&
!model.getMehrVerschieben()) {
//prüfen ob mit rechter Maustaste auf eine Transition geklickt wurde
for(int i=0; i < model.Trans_Liste.size(); i++) {
if(!model.Trans_Liste.get(i).geloescht && transitionPressed(x, y, model.Trans_Liste.get(i))) {
//prüfen ob Transition auch aktiviert ist
if(model.Trans_Liste.get(i).trans_aktiv) {
//alle Ein- und Ausgangsstellen der Transition zwischenspeichern
speichereEinAusStellen(i);
//Anzahl der Marken der Eingangsstellen werden jeweils um 1 reduziert
for(int l=0; l < index_von_Stelle.size(); l++) {
int index1 = index_von_Stelle.get(l);
model.Stellen_Liste.get(index1).anzahl_Marken =
model.Stellen_Liste.get(index1).anzahl_Marken - 1;
}
th = new Simulation(model, this, model.Trans_Liste.get(i).trans_x_kor,
model.Trans_Liste.get(i).trans_y_kor, i);
th.start();
simuLaeuft = true;
//warten bis Marken Ziel erreicht haben
while(simuLaeuft) {
//do nothing
}
th.interrupt();
Hat jemand einen Tipp?
Danke im voraus