1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
514
514
EMPFEHLEN
-
Hallo!
Ich bin gerade dabei ein Schreibprogramm zu entwickeln. Schreiben nicht per Tastatur, sondern mit der Maus oder per Touchscreen / Tablet, also so etwas wie Xournal oder Jarnal. Da mir dort einige Funktionen fehlen mach ich es lieber selber
Leider habe ich mit den Malfunktionen von Java null Erfahrungen. BIsher habe ich eine Klasse, die Canvas extendet, und male dort hinein. Das funktioniert auch ganz gut; beim vergrößern und verkleinern des Fensters wird aber komischerweise immer der Inhalt des Canvases gelöscht, woran könnte das liegen?
Außerdem möchte ich nicht einfach einen Malbereich machen, sondern das Ganze auf Seiten aufteilen, wie es auch in Word o.Ä. ist. Ich dachte da an eine Liste von Canvases, jeder repäsentiert eine Seite, die irgendwie untereinander in einer JScrollPane angezeigt werden. Allerdings weiß ich nicht, wie ich die Canvases in der JScrollPane genau positionieren kann und ob das überhaupt eine gute Idee ist?
Sollte ich vielleicht lieber irgendeine andere Klasse als Canvas benutzen? Ich finde sie ist sehr umständlich zu benutzen udn ich kenne bisher auch keinen Weg um an die Daten darin ranzukommen.
Code ist recht lang, es geht hier ja auch eher ums Prinzip.
Danke für eure Hilfe!
-
13.05.11 16:38 #2
- Registriert seit
- Jun 2009
- Beiträge
- 870
Statt Canvas würde ich JPanel nehmen und davon erben.
scheint so, als würdest du nicht in der paint() / paintComponent() -Methode zeichnen, sondern irgendwo anders.beim vergrößern und verkleinern des Fensters wird aber komischerweise immer der Inhalt des Canvases gelöscht, woran könnte das liegen?
Einführungen in das Zeichnen auf graphischen Komponenten gibts z.B. http://openbook.galileocomputing.de/...83a10ee741dbaa und http://download.oracle.com/javase/tu.../2d/index.html
Zu der Liste an Canvas-Objekten:
Um dein Schreibprogramm sinnvoll zu entwickeln, so dass du den Inhalt auch abspeichern kannst, würde ich eine andere Vorgehensweise wählen: Ein JPanel innerhalb eines anderen JPanels mit JScrollBars, also so:
Und nur die aktuelle Seite(n) darstellen. Wenn du für jede Seite ein eigenes Canvas oder JPanel erzeugst, ist das nicht ansatzweise skalierbar: Du wirst viel Speicher verbrauchen und bei jeder Änderung z.B. auf der 1. von 300 Seiten würde dazu führen, dass jede Seite neu berechnet werden muss.Code :1 2 3 4 5 6 7 8 9 10 11 12
|J |S |c |r |o |l |l JPanel |B |a |r _________________________ JScrollBar
Tipp: schau dir den Quellcode von http://jedit.org/ und des Editors von Netbeans an. Vielleicht können die auch schon, was du willst.Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Hallo nochmal,
danke für deine Hilfe! Werde jetzt wohl die Ansicht auf 2 Seiten gleichzeitig beschränken, das macht denke ich Sinn. Habe jetzt über JPanels gezeichnet, allerdings wird immernoch der Inhalt beim vergrößern des Fensters gelöscht.
Bin schon auf die Idee gekommen alle Zeichenschritte manuell zu speichern und diese dann bei jedem Fenstervergrößern komplett nachzuzeichnen, aber das ist ja Quatsch, was? Hier ein Teil meines bisherigen Codes:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
class TestCanvas extends JPanel { TestCanvas() { } @Override public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setStroke(new BasicStroke(thickness, CAP_ROUND, JOIN_BEVEL)); g2.setColor(getCol(color)); g2.drawLine(last_x, last_y, xvalue, yvalue); } } .... // "master" ist eine Instanz obiger Klasse master.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged( MouseEvent event ) { last_x = (last_x == -10 ? event.getX() : xvalue); last_y = (last_y == -10 ? event.getY() : yvalue); xvalue = event.getX(); yvalue = event.getY(); master.repaint(); } });
Das ist natürlich nur ein Codeausschnitt, alle Variablen werden wo anders gültig eingeführt. Darum geht es ja auch nicht
thickness und color werden über die Werkzeugwahl gesetzt.
Danke.
Ähnliche Themen
-
Aus einer SQL Tabelle mehrere verschiedene Werte einer Spalte auslesen
Von supercat1510 im Forum PHPAntworten: 5Letzter Beitrag: 02.06.10, 12:52 -
ScrollPane 2 lässt ScrollPane 1 verschwinden
Von hinotenshi im Forum Flash PlattformAntworten: 1Letzter Beitrag: 31.01.10, 15:50 -
mehrere Tabellen in einem ScrollPane
Von Biergamasda im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 19.07.07, 07:40 -
Mehrere Abfragen, Mehrere Auswertungen -> Alles auf einer Seite?
Von uwee im Forum PHPAntworten: 6Letzter Beitrag: 10.12.04, 14:04 -
mehrere Var. in einer?
Von jan im Forum PHPAntworten: 3Letzter Beitrag: 20.02.02, 16:58






Zitieren
Login





