Hi Leute,
ich schreib gerade ein kleines Grafik-Programm, in dem man unter anderem auch Strings zeichnen kann (also in einer JTextArea Text eingeben, der wird dann in einer ArrayList gespeichert und mit drawString in ein Canvas gezeichnet).
Mein Problem ist, dass, wenn ich das Fenster maximiere, die Strings, die in der ArrayList gespeichert sind, nicht gezeichnet werden.
Ich habe probeweise auch ein Oval in dieselbe Funktion geschrieben, in der auch der String gezeichnet werden solte. Das wird ja auch gezeichnet.
Ich lasse mir ebenfalls die Daten aus der ArrayList über System.out.println() mitprotokollieren; es sind immer die richtigen Daten, es werden immer die richtigen Funktionen aufgerufen. Nur der drawString()-Befehl wird offensichtlich nicht aufgerufen.
Programmfragmente:
Aus paint() in Canvas:
displayText in von JTextArea abgeleiteten Klasse:
Wie gesagt sind die Daten von location (Point) und text (String) völlig in Ordnung, nur drawString() will nicht so recht.
Ich bin hier völlig ratlos und hoffe, ihr könnt mir weiterhelfen.
PS: Während das Fenster auf einer Größe (egal, ob Startgröße oder Maximalgröße) ist, funktioniert das Stringzeichen.
ich schreib gerade ein kleines Grafik-Programm, in dem man unter anderem auch Strings zeichnen kann (also in einer JTextArea Text eingeben, der wird dann in einer ArrayList gespeichert und mit drawString in ein Canvas gezeichnet).
Mein Problem ist, dass, wenn ich das Fenster maximiere, die Strings, die in der ArrayList gespeichert sind, nicht gezeichnet werden.
Ich habe probeweise auch ein Oval in dieselbe Funktion geschrieben, in der auch der String gezeichnet werden solte. Das wird ja auch gezeichnet.
Ich lasse mir ebenfalls die Daten aus der ArrayList über System.out.println() mitprotokollieren; es sind immer die richtigen Daten, es werden immer die richtigen Funktionen aufgerufen. Nur der drawString()-Befehl wird offensichtlich nicht aufgerufen.
Programmfragmente:
Aus paint() in Canvas:
Code:
if(!textObjekte.isEmpty()) // textObjekte: ArrayList mit von JTextArea abgeleiteter Klasse
{
int b = 0;
System.out.println("In DrawArea.paint() - textObjekte");
for(Textfeld t : textObjekte)
{
b++;
System.out.println(b + " DrawArea.paint() -> Textfeld");
// g.setColor(t.getColor());
t.displayText(getGraphics());
}
}
displayText in von JTextArea abgeleiteten Klasse:
Code:
public void displayText(Graphics g)
{
color = g.getColor();
System.out.println("In displayText");
g.setFont(new Font(fontName, Font.BOLD, size));
g.setColor(Color.BLACK);
g.drawString(text, (int)location.getX(), (int)location.getY()); // Wird nach Fenster maximieren und wieder-
// herstellen NICHT gezeichnet!
g.drawOval(50, 50, 50, 50); // Wird bei Fenster maximieren und wiederherstellen
// gezeichnet!
System.out.println("Textlänge: " + text.length() + text + " " + location.getX() + " " + location.getY());
}
Wie gesagt sind die Daten von location (Point) und text (String) völlig in Ordnung, nur drawString() will nicht so recht.
Ich bin hier völlig ratlos und hoffe, ihr könnt mir weiterhelfen.
PS: Während das Fenster auf einer Größe (egal, ob Startgröße oder Maximalgröße) ist, funktioniert das Stringzeichen.