Die zwei beiliegenden Klassen zeichnen mir zwei Ovale. Kann mir jemand Quellcode so einfügen, dass ich sehe, wie diese beiden Ovale auch auf einer bestehenden jpg- oder png-Datei dargestellt werden können ?
Vielen Dank im voraus,
mit freundlichen Grüßen,
Arndt Weber
import javax.swing.*;
import java.awt.*;
/** Spezielle JPanel-Klasse */
public class ZeichenPanel extends JPanel {
public void paintComponent(Graphics g) {
g.drawOval(110,60,30,15);
g.fillOval(60,130,30,30);
/** Erzeuge ein Swing-Fenster mit einer Zeichnung */
public class Zeichnung extends JFrame {
Container c; // Container dieses Frames
ZeichenPanel z; // Zeichnung auf dem Zeichen-Panel
public Zeichnung() { // Konstruktor
c = getContentPane();
// Erzeuge neue Zeichnung und fuege sie dem Frame hinzu
z = new ZeichenPanel();
c.add(z);
}
public static void main(String[] args) { // main-Methode
Zeichnung fenster = new Zeichnung();
fenster.setTitle(„Zeichnung“);
fenster.setSize(200,200);
fenster.setVisible(true);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Objektiv gesehen hat punpkin recht. Sinnigerweise hatte ich den Code auch mal auf Suse Linux 9.0 & JDK 1.4 & Standardgrafikkarte getestet. Das Ergebnis innerhalb des Fensters war jedenfalls kaum eine Augenweide (im Ggs. zur Darstellung unter XP+SP1 & JRE 1.4 & richtigen GraKa Treibern). Von daher ist Vorsicht anzuraten… Oder da spielt jemand „Wer sieht was ?“
Das Ergebnis innerhalb des
Fensters war jedenfalls kaum eine Augenweide (im Ggs. zur
Darstellung unter XP+SP1 & JRE 1.4 & richtigen GraKa
Treibern). Von daher ist Vorsicht anzuraten… Oder da spielt
jemand „Wer sieht was ?“
Die java.awt-API eh nicht gerade bekannt für besonders schöne Ergebnisse. Kanns aber mal mit den Parametern von java.awt.Graphics spielen. Da gibt’s irgendwo auch SoftwareAA (was unter windows glaub ich automatisch immer eingeschaltet ist … ?)
Leider gibt’s nur die Fehlermeldung „cannot resolve symbol“.
Kannst Du mir nicht irgendwoher ein Beispiel kopieren oder mir sagen wo ich ein solches finde, in dem ein bestehendes Bild angezeigt wird und dort anhand einer XY-Koordinate eine Markierung eingefügt wird ?
Ich versuch’s jetzt schon seit vielen Tagen und schaffe das einfach nicht.
Gruß,
Arndt
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Leider gibt’s nur die Fehlermeldung „cannot resolve symbol“.
Das ist eine Compilerfehlermeldung. D.h. im Klartext: der weiss nicht welche Klasse du da gerade verwenden willst. D.h. es fehlt ein import, so in der Art:
import javax.swing.*;
import java.imagio.*;
Kannst Du mir nicht irgendwoher ein Beispiel kopieren oder mir
sagen wo ich ein solches finde, in dem ein bestehendes Bild
angezeigt wird und dort anhand einer XY-Koordinate eine
Markierung eingefügt wird ?
Eigentlich hatte ich doch aber mit „import“ alle Packages geladen. Wie dem auch sei, ich habe anbei zwei Klassen, die sich auch kompilieren lassen und die auf einem Bild (110.jpg) zwei Ellipsen zeichnen sollen.
Die Klassen werden richtig kompliert, das Bild wird auch richtig dargestellt, allerdings die Ellipsen nicht eingezeichnet. Kannst Du mir sagen, warum nicht ? Anbei die beiden Klassen:
/** Erzeuge ein einfaches Swing-Fenster mit einem Label */
public class FrameMitBild2 extends JFrame {
Container c; // Container dieses Frames
JLabel lab; // Label das im Frame erscheinen soll
ZeichenPanel z; // Elipsen auf dem Bild
// Konstruktor fuer unseren Frame mit Textlabel
public FrameMitBild2() {
c = getContentPane(); // Container bestimmen
c.setLayout(new FlowLayout()); // Layout setzen
z = new ZeichenPanel();
// Bildobjekt erzeugen
Icon bild = new ImageIcon(„110.jpg“);
// Label mit Text und Bild beschriften
lab = new JLabel(„Bild“, bild, JLabel.CENTER);
// Text unter das Bild setzen
lab.setHorizontalTextPosition(JLabel.CENTER);
lab.setVerticalTextPosition(JLabel.BOTTOM);
// Fuege das Label und die Zeichnung dem Frame hinzu
c.add(lab);
c.add(z);
}
public static void main(String[] args) {
FrameMitBild2 fenster = new FrameMitBild2();
fenster.setSize(700,600);
fenster.setVisible(true);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}