Wir sollen im Rahmen unseres Studiums ein Programm schreiben, welches DNA- Files einliest und als Grafiken wieder ausgibt. Dies funktioniert auch bereits. Dazu habe ich eine Klasse zum zeichnen der einzelnen Aminosäuren(AS) erstellt und mich an das hier im Forum herumschwirrende Tutorial gehalten. Diese Klasse wird wiederum in einer anderen genutzt um alle einzelnen AS "über" ein Array zu zeichnen. (Welche(Klasse) dann wiederum von einer Main aufgerufen wird.)
Nun aber zu meinem Problem. Der nächste Schritt besteht nun darin die einzelnen AS entweder nach links oder rechts per Maus zu verschieben. (Dabei muss die Nachbar-AS in die andere Richtung verschoben werden). Nun tue ich mich mit diesem Array allerdings schwer und weiß nicht so recht wie ich dieses umsetzen soll. Meine Frage daher, muss ich etwas anderes beachten als wenn ich nur ein Grafikobjekt hätte (Dafür gibt es ja ausreichend vorlagen)? Oder ist meine Struktur der verschiedenen Klassen nicht der richtige Weg? Irgendwie steh ich mal wieder aufm Schlauch :/
Klasse Read (liest textdatei ein) --> Draw erzeugt Array der Grafikobjekte(von Klasse paintAminoAcid) und projeziert sie --> welches von Display alles ausgeführt wird um schließlich von Main die Display zu starten.
kurze Ausschnitte:
Zeichenfunktion - Zeichnen AS-Klasse - paintAminoAcid-Klasse:
Zeichne AS über Schleife - erzeuge Array - Draw-Klasse
Display Klasse
BufferedStrategy etc. wird später noch eingepflegt....
Nun aber zu meinem Problem. Der nächste Schritt besteht nun darin die einzelnen AS entweder nach links oder rechts per Maus zu verschieben. (Dabei muss die Nachbar-AS in die andere Richtung verschoben werden). Nun tue ich mich mit diesem Array allerdings schwer und weiß nicht so recht wie ich dieses umsetzen soll. Meine Frage daher, muss ich etwas anderes beachten als wenn ich nur ein Grafikobjekt hätte (Dafür gibt es ja ausreichend vorlagen)? Oder ist meine Struktur der verschiedenen Klassen nicht der richtige Weg? Irgendwie steh ich mal wieder aufm Schlauch :/
Klasse Read (liest textdatei ein) --> Draw erzeugt Array der Grafikobjekte(von Klasse paintAminoAcid) und projeziert sie --> welches von Display alles ausgeführt wird um schließlich von Main die Display zu starten.
kurze Ausschnitte:
Zeichenfunktion - Zeichnen AS-Klasse - paintAminoAcid-Klasse:
Code:
public class PaintAminoAcid extends JComponent {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setColor(new Color(cc.getR(), cc.getG(), cc.getB()));
g2.drawString(name, xpos, ypos);
// g2.fillRect(xpos, ypos, aawidth, aaheight);
g2.fill(new Rectangle2D.Double(xpos, ypos, aawidth, aaheight));
}
Code:
if(Read.aminoacids.get(y).getAminoAcid() == 'A') {
System.out.println("A");
paintaminoacid[xpos][ypos] = new PaintAminoAcid( xpos, ypos, aawidth, aaheight, "A", ColorCode.A);
paintaminoacid[xpos][ypos].paintComponent(g);
// g.setColor(new Color(ColorCode.R.getR(), ColorCode.R.getG(), ColorCode.R.getB()));
// g.drawString("A", xpos, ypos);
// g.fillRect(xpos, ypos, aawidth, aaheight);
//aintingAminoAcid[xpos][ypos].repaint();
} else if(Read.aminoacids.get(y).getAminoAcid() == 'R') {
System.out.println("R");
paintaminoacid[xpos][ypos] = new PaintAminoAcid( xpos, ypos, aawidth, aaheight, "R", ColorCode.R);
paintaminoacid[xpos][ypos].paintComponent(g);
// g.setColor(new Color(ColorCode.R.getR(), ColorCode.R.getG(), ColorCode.R.getB()));
// g.drawString("R", xpos, ypos);
// g.fillRect(xpos, ypos, aawidth, aaheight);
// System.out.println(xpos);
} else if.... // undso weiter
Code:
public class Display extends Canvas {
private int o;
private int ypos = 150;
public void paint (Graphics g) {
try {
new Read();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Read.prepareSequence();
for (o = 0; o < 4; o++) { // statt 4 - Anzahl der Seqs
Read.prepareAminoAcid(o); // o = sequenz 0-3
new Draw(g, ypos);
ypos+=150;
}