Hallo ich versuche Gerade Punkte in einem Raster auf einem jPanel in einem JFrame auszugeben. Dies soll nach drücken eines ersten Buttons zunächst die Punkte ausgeben und nach drücken eines 2ten Buttons die zugehörige Route. Ausgabe der Punkte geht auch soweit halbwegs. drücke ich allerdings den 2ten Button blinkt nach kurzer zeit die gewünschte Route auf und verschwindet sofort wieder. Ich habe schon mehrfach gelesen das für eine dauerhaft Darstellung im Panel man die printComponent irgendwie überschreiben muss. Aber irgendwie bekomme ich das als blutiger Java-Anfänger nicht zum funktionieren. Hier mal mein Kode ohne meine verzweifelten Versuche( Die 3 meiner Meinung nach ausschlaggebenden Stellen):
Erster Button und zeichnen der Punkte:
Zweiter Button:
Zeichnen der Route:
An welcher stelle müsste ich denn dann printComponent überschreiben und wie. Und ist das überhaupt der richtige Ansatz?? Oder wo finde ich (für Beginner geeignete) gute Hinweise dazu?
Ach so meine Hauptklasse: public class test extends javax.swing.JFrame.
Danke schon mal im Voraus.
Gruß Max
Erster Button und zeichnen der Punkte:
Java:
private void CreateMouseClicked(java.awt.event.MouseEvent evt) {
Graphics g = jPanel1.getGraphics();
test=new TSP(probsize,seed);
g.setColor(Color.RED);
for(int i=0;i<test.getKoordX().size();i++){
int x= (int) test.getKoordX().get(i);
int y= (int) test.getKoordY().get(i);
g.fillOval(10+10 * (x), 10+10 * (y) ,6,6);
g.drawString(""+i, 10+10 * (x), 10+10 * (y));
}
}
Zweiter Button:
Java:
private void solveMouseClicked(java.awt.event.MouseEvent evt) {
getcomboboxen();
GA main=new GA(probsize,vpopsize,vgenerationGap,vmutationsrate,selektion,rekombination,mutation,vrunmean,fitness,test,"test");
Chromosom best=new Chromosom();
best = main.getBest();
List<Integer> lBest= new ArrayList();
lBest=best.getChromosom();
distanz.setText(best.getbewertung()+"");
iterationen.setText(main.getIterationen()+"");
laufzeit.setText("");
Graphics g = jPanel1.getGraphics();
zeichneRoute(lBest,g);
}
Zeichnen der Route:
Java:
private void zeichneRoute(List<Integer> lBest,Graphics g){
g.setColor(Color.RED);
for(int i=0;i<lBest.size()-1;i++){
int c1 = lBest.get(i);
int x= (int) test.getKoordX().get(c1);
int y= (int) test.getKoordY().get(c1);
int c2 = lBest.get(i+1);
int xx= (int) test.getKoordX().get(c2);
int yy= (int) test.getKoordY().get(c2);
g.drawLine(10+(x*10),10+(y*10),10+(xx*10),10+(yy*10));
}
}
An welcher stelle müsste ich denn dann printComponent überschreiben und wie. Und ist das überhaupt der richtige Ansatz?? Oder wo finde ich (für Beginner geeignete) gute Hinweise dazu?
Ach so meine Hauptklasse: public class test extends javax.swing.JFrame.
Danke schon mal im Voraus.
Gruß Max
Zuletzt bearbeitet: