WorldWindJava+JOGL soll einen animierten Graphen anzeigen, wie?

-horn-

Bekanntes Mitglied
moien,

ich möchte für mein projekt Constellation einen eigenen bildschirmschoner machen und mitliefern. dazu möchte ich auch nasa worldwind zurückgreife, weil es dazu ja das tolle WWJ gibt. WWJ nutzt ja auch jogl, und nun würde ich gerne wissen, wie ich es am besten anstellen sollte, wenn ich einen graphen auf die canvas von WWJ lege, der sich regelmässig updated, also neuzeichnet, damit er die aktuellen berechnungsdaten des projektes anzeigen kann.

ich muss dazu sagen, dass GUis mir nicht liegen und ich sehr wenig erfahrung mit graphik und vor allem graphik bei java habe.
WWJ und co laufen soweit in netbeans mit einem test.java, allerdings finde ich die offizielle doku recht dürftig, was einsteigerfreundlichkeit angeht.
ich dachte mir halt, dass wenn schon jogl genutzt wird, man vielleicht daraus was nutzen könnte und es garantiert welche hier gibt, die sich damit auskennen.

ich hoffe, dass das der fall ist, und mir jemand einen tipp geben kann, wie ich das am besten anstelle.

es soll halt nachher so aussehen http://dl.dropbox.com/u/20044292/constellation_screensaver_infolayout.png
und den globus stellt ja WWJ, die logos unten kriege ich auch schon hin, nur die im bild angedeuteten graphen kriege ich noch nicht gezeichnet und vor allem animiert.

grüße und danke im voraus,

Andreas
 

-horn-

Bekanntes Mitglied
moien,

ich habe nun jfreechart gefunden http://www.java2s.com/Code/Java/Chart/CatalogChart.htm und schaue da gerade durch.
allerdings habe ich noch nicht gefunden, wie ich da den graphen periodisch mit neuen werten neuzeichnen lassen kann.

und wie ich das auf die worldwindjava canvas zeichnen lassen kann weis sich auch noch nicht.

mag mir da bitte jemand helfen?

danke im voraus,

Andreas
 
S

SlaterB

Gast
auf die Nachfrage in
http://www.java-forum.org/awt-swing-swt/116064-jfreechart-aktualisieren-ausgangsdaten-aendern.html
bezogen:

poste doch selber erstmal ein vollständiges, aber eben auch kurzes lesbares Beispiel, welches man dann nur noch modifizieren muss,
alles mit wenigen Dummy-Werten, z.B. abhängig von Zufall/ Random, nicht noch 5000 Zeilen die irgendeine Datenbank/ Datei/ Benutzereingaben/ umständliche Berechnungen malträtieren,

hast du überhaupt schon einen Thread/ Timer für das periodische, der bisher die geänderten Ergebnisse z.B. einfach nur mit System.out.println ausgibt?
wenn nicht, dann ist das ein Thema für sich vor JFreeChart,
für Threads gibts eigene Lehrbuchkapitel
Galileo Computing :: Java ist auch eine Insel – 14 Threads und nebenläufige Programmierung
 

-horn-

Bekanntes Mitglied
moien,

also soweit konnte ich jfreechart in mein worldwindjava einbauen, aber wie ich das nun "updaten" soll verstehe ich noch nicht.
mag wer helfen?

Andreas

Java:
package screensaver;

import gov.nasa.worldwind.BasicModel;
import gov.nasa.worldwind.avlist.AVKey;
import gov.nasa.worldwind.awt.WorldWindowGLCanvas;
import gov.nasa.worldwind.geom.Angle;
import gov.nasa.worldwind.geom.Position;
import gov.nasa.worldwind.layers.RenderableLayer;
import gov.nasa.worldwind.render.Offset;
import gov.nasa.worldwind.render.ScreenImage;
import gov.nasa.worldwind.render.Size;
import gov.nasa.worldwind.view.firstperson.BasicFlyView;
import gov.nasa.worldwind.view.firstperson.FlyToFlyViewAnimator;

import java.awt.Frame;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;

import javax.imageio.ImageIO;

///
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;

import java.awt.image.BufferedImage;

public class FullScreenTest{

    public static double test = 0;

	/**
	 * The animated view
	 */
	public static BasicFlyView view;

	/**
	 * The ScreenSaver entry point, should run in windowed mode
	 * with interactivity or fullscreen mode depending on flags
	 * [url=http://boinc.berkeley.edu/trac/wiki/ScreensaverEnhancements]ScreensaverEnhancements ? BOINC[/url]
	 * @param args
	 */
	public static void main(String[] args) {

            view = new BasicFlyView();
		Frame frame = new Frame("WorldwindFull");
		final WorldWindowGLCanvas worldWindowGLCanvas = new WorldWindowGLCanvas();
		worldWindowGLCanvas.setModel(new BasicModel());
		worldWindowGLCanvas.setView(view);

		worldWindowGLCanvas.addKeyListener(new java.awt.event.KeyListener() {
			public void keyTyped(KeyEvent e) {
			}

			public void keyReleased(KeyEvent e) {
			}

			public void keyPressed(KeyEvent e) {
				if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
					System.exit(0);
				}
			}
		});

		RenderableLayer creditsLayer = new RenderableLayer();
		creditsLayer.setName("Credits");
		try {
			creditsLayer.addRenderables(createCredits());
		} catch (IOException ioEx) {

			ioEx.printStackTrace();
		}
		worldWindowGLCanvas.getModel().getLayers().add(creditsLayer);
                
                ////
                RenderableLayer chartsLayer = new RenderableLayer();
		chartsLayer.setName("Charts");
		try {
			chartsLayer.addRenderables(createCharts());
		} catch (IOException ioEx) {

			ioEx.printStackTrace();
		}
		worldWindowGLCanvas.getModel().getLayers().add(chartsLayer);



		frame.add(worldWindowGLCanvas);
		frame.setSize(640, 480);
		frame.setUndecorated(true);
		int size = frame.getExtendedState();
		size |= Frame.MAXIMIZED_BOTH;
		frame.setExtendedState(size);

		frame.setVisible(true);
		worldWindowGLCanvas.requestFocus();

		setUpTimer();
	}

	/**
	 * Static method to produce credits for all involved
	 * organisations
	 * @return
	 * @throws IOException
	 */
	public static List<ScreenImage> createCredits() throws IOException
	{
		List<ScreenImage> allCredits = new ArrayList<ScreenImage>();
		ScreenImage creditWWC = new ScreenImage();
		creditWWC.setImageSource(ImageIO.read(
				new File("src/images/worldwindcentral.gif")));
		//TODO: More flexible out of code layout policy
		creditWWC.setScreenOffset(new Offset(0.10, 0.90, AVKey.FRACTION, AVKey.FRACTION));
		creditWWC.setSize(new Size(Size.MAINTAIN_ASPECT_RATIO, 0.05,
				AVKey.FRACTION,Size.MAINTAIN_ASPECT_RATIO, 0.05,
		        AVKey.FRACTION));

                ScreenImage creditRKN = new ScreenImage();
		creditRKN.setImageSource(ImageIO.read(
				new File("src/images/logo_selfnet1.png")));
		//TODO: More flexible out of code layout policy
		creditRKN.setScreenOffset(new Offset(0.50, 0.90, AVKey.FRACTION, AVKey.FRACTION));
		creditRKN.setSize(new Size(Size.MAINTAIN_ASPECT_RATIO, 0.05,
				AVKey.FRACTION,Size.MAINTAIN_ASPECT_RATIO, 0.05,
		        AVKey.FRACTION));

		allCredits.add(creditWWC);
                allCredits.add(creditRKN);
		return allCredits;
	}

        public static List<ScreenImage> createCharts() throws IOException
	{

            // create a dataset...
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("Category 1", 43.2-test);
dataset.setValue("Category 2", 27.9+test);
dataset.setValue("Category 3", 79.5);
// create a chart...
JFreeChart chart = ChartFactory.createPieChart(
"Sample Pie Chart",
dataset,
true, // legend?
true, // tooltips?
false // URLs?
);
//chart.createBufferedImage(100, 100);
// create and display a frame...

//ChartFrame frame1 = new ChartFrame("First", chart);
//frame1.pack();
//frame1.setVisible(true);
//frame1.createImage(100, 100);

final BufferedImage image = chart.createBufferedImage(400, 300);

		List<ScreenImage> allCharts = new ArrayList<ScreenImage>();
		ScreenImage chart1 = new ScreenImage();
		chart1.setImageSource(image);
		//TODO: More flexible out of code layout policy
		chart1.setScreenOffset(new Offset(0.17, 0.60, AVKey.FRACTION, AVKey.FRACTION));
		chart1.setSize(new Size(Size.MAINTAIN_ASPECT_RATIO, 0.05,
				AVKey.FRACTION,Size.MAINTAIN_ASPECT_RATIO, 0.05,
		        AVKey.FRACTION));

		allCharts.add(chart1);
		return allCharts;
	}

	/**
	 * The globe auto-rotate animator
	 * @param pos
	 */
	public static void moveToLocation(Position pos) {
		if (pos == null) {
			return;
		}
		double elevation = view.getGlobe().getElevation(pos.getLatitude(),
				pos.getLongitude());
		FlyToFlyViewAnimator animator = FlyToFlyViewAnimator.
				createFlyToFlyViewAnimator(view, view.getEyePosition(),
						new Position(pos.latitude, pos.longitude, elevation),
						view.getHeading(), view.getHeading(), view.getPitch(),
						view.getPitch(), view.getEyePosition().getElevation(),
						view.getEyePosition().getElevation(), 10000, 0);
		view.addAnimator(animator);
		animator.start();
		view.firePropertyChange(AVKey.VIEW, null, view);
	}

	/**
	 * Convenience timer set-up to periodically rotate the globe
	 */
	public static void setUpTimer()
	{
		int delay = 5000;   // delay for 5 sec.
		int period = 10000;  // repeat every sec.
		Timer timer = new Timer();

		timer.scheduleAtFixedRate(new TimerTask() {
		        public void run() {
		        	Position pos = new Position(Angle.fromDegrees(
		        			180*new Random().nextFloat()-90.0),
		        								Angle.fromDegrees(
		        			360*new Random().nextFloat()-180.0),
		        								0.0);
		            moveToLocation(pos);

                            Random rn = new Random();
int n = 10 - 0 + 1;
int i = rn.nextInt() % n;
FullScreenTest.test =  0 + i;
System.out.println(FullScreenTest.test);

		        }
		    }, delay, period);
	}
}
 
S

SlaterB

Gast
dein Code ist leider für mich unbenutzbar mit den vielen unbekannten Klassen, ich verstehe auch nicht was du da machst,

wieso wird quasi eine Liste von Charts erstellt, wenn auch nur mit einem Element,
wieso wird diese Methode createCharts() nur einmal in der main-Methode aufgerufen, geht es nicht um ständiges Update einer Chart per Timer?
wieso gibt es die komplizierte moveToLocation()-Methode, ist die für irgendwas hinsichtlich Update der Chart relevant?

alles läßt du unverständlicherweise ohne Erklärungen
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
berserkerdq2 Mein Rechteck hat 4 Seiten, ich soll je nach dem, welche Seite berührt wurde, etwas ausführen, wie prüfe ich das? AWT, Swing, JavaFX & SWT 12
Zeppi Swing Button soll Spiel zurücksetzen AWT, Swing, JavaFX & SWT 5
A Titelleiste soll Pfad ausgeben AWT, Swing, JavaFX & SWT 16
G Eintrag soll nur einmal in Listview zu sehen sein AWT, Swing, JavaFX & SWT 3
SvenPittelkow Programm soll auf JButton warten bis der geklickt wurde AWT, Swing, JavaFX & SWT 1
W JavaFX CSS - was soll mir das sagen? AWT, Swing, JavaFX & SWT 2
D JavaFX Menu soll nicht bei jedem Click verschwinden AWT, Swing, JavaFX & SWT 8
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
O Soll ich einen JEditorPane verwenden ? AWT, Swing, JavaFX & SWT 5
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
S JavaFX Node soll auch nach Skalierung zentriert platziert sein AWT, Swing, JavaFX & SWT 3
T JavaFX Dialog schließt ohne dass es schließen soll AWT, Swing, JavaFX & SWT 1
W Javafx - Image soll sich mit der Camera mitbewegen AWT, Swing, JavaFX & SWT 1
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
A Swing GUI - Button soll Frame verändern AWT, Swing, JavaFX & SWT 4
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
L Swing JButton soll link öffnen AWT, Swing, JavaFX & SWT 1
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
S Zwei JTree, ein Model, bei Selection im ersten JTree soll der zweite die Inhlate anzeigen AWT, Swing, JavaFX & SWT 2
M JavaFX StackedBarChart y-Axis soll nur Integerwerte anzeigen AWT, Swing, JavaFX & SWT 1
A Slider soll einen Wert übergeben AWT, Swing, JavaFX & SWT 1
P JavaFX Slider soll Value erst ab einer bestimmten Bedinung aendern AWT, Swing, JavaFX & SWT 19
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
V JScrollBar soll weiterscrollen, wenn Inhalt von JTextArea erweitert wird AWT, Swing, JavaFX & SWT 7
V Swing Button soll unter anderem Button sein AWT, Swing, JavaFX & SWT 2
P Fenstergröße ändern, Panel soll gleich bleiben AWT, Swing, JavaFX & SWT 2
F JavaFX Timeline Animation soll X- und Y-Position während Animation ändern AWT, Swing, JavaFX & SWT 2
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
T MausClick soll TExt ändern AWT, Swing, JavaFX & SWT 6
J JavaFX Tabelle soll ganze Seite ausfüllen AWT, Swing, JavaFX & SWT 2
D Swing Schließen von JDialog soll auch JFrame schließen. AWT, Swing, JavaFX & SWT 4
T SWT SWTBot Test: Dialog soll sich öffnen,wenn button gedrückt AWT, Swing, JavaFX & SWT 3
T SWT Button soll nur sichbar sein,wenn im Textfeld der Focus ist AWT, Swing, JavaFX & SWT 4
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
C 2D Grafik ein Bild soll permanent durchlaufen AWT, Swing, JavaFX & SWT 2
windl Warum soll ich zu JavaFX? AWT, Swing, JavaFX & SWT 18
H Java3D, ViewP Translattform soll sich nach einerformgroup richten. AWT, Swing, JavaFX & SWT 5
S Hauptfenster soll geöffnet bleiben AWT, Swing, JavaFX & SWT 4
M JDialog soll JFrame "blockieren" AWT, Swing, JavaFX & SWT 2
D Image soll langsam sichtbar werden AWT, Swing, JavaFX & SWT 4
F Swing JTextfield Beispieltext soll nach Klick verschwinden AWT, Swing, JavaFX & SWT 3
TheJavaKid DocumentListener soll Text in JTextField ändern AWT, Swing, JavaFX & SWT 4
J Zwei GUIs - Nach button-Klick soll ein Wert an die andere GUI übergeben werden AWT, Swing, JavaFX & SWT 15
J Swing String soll als Variable dienen AWT, Swing, JavaFX & SWT 11
M EditorPane Inhalt anders als er soll! AWT, Swing, JavaFX & SWT 2
C LayoutManager Grafik soll nicht im GridLayout Skalieren AWT, Swing, JavaFX & SWT 3
M Swing ActionEvent soll von Anderem ActionEvent abhängen AWT, Swing, JavaFX & SWT 3
J Button soll nach Klick Text ändern und Programm in 3 Sekunden beenden AWT, Swing, JavaFX & SWT 6
H Swing Button Klick soll "Untermenü-Buttons" erzeugen AWT, Swing, JavaFX & SWT 2
Z Swing JPanel soll größer werden als Parent Container (überlappen) AWT, Swing, JavaFX & SWT 5
D Swing jSlider soll selber weiterwandern, je nach zeit der musik AWT, Swing, JavaFX & SWT 5
A SWT Tooltip soll nicht verschwinden, solange User mit Maus auf Control ist AWT, Swing, JavaFX & SWT 5
D Swing JProgressBar soll ende erkennen AWT, Swing, JavaFX & SWT 4
S JVM von Oracle/Sun soll für AWT/SWING Elemente die die Optimierungen der NVidia Treiber verwenden AWT, Swing, JavaFX & SWT 3
J Swing JDialog blokiert mehrere JFrames - soll aber nur den aufrufenden blockieren AWT, Swing, JavaFX & SWT 4
N Applet JButton soll html Datei aus einem Ordner öffnen AWT, Swing, JavaFX & SWT 2
Z Bei Klick auf JButton soll ein anderer JButton erscheinen AWT, Swing, JavaFX & SWT 4
S Swing Eigene Komponente (JPanel) soll ChangeEvents verteilen AWT, Swing, JavaFX & SWT 12
X Swing Bei Buttonklick soll PopupMenu erscheinen AWT, Swing, JavaFX & SWT 2
M Dialog soll etwas an "Oberklasse" übergeben AWT, Swing, JavaFX & SWT 3
qwerqer Swing Anwendung soll blinken (Taskleiste) AWT, Swing, JavaFX & SWT 3
2 Anfänger problem: Buttenklick soll reagieren AWT, Swing, JavaFX & SWT 9
D JTextField soll nur Integer als Eingabewert annehmen AWT, Swing, JavaFX & SWT 5
N JFreeChart: Plot soll mit skalieren AWT, Swing, JavaFX & SWT 5
J Schließen über x soll zwei Prozesse beenden AWT, Swing, JavaFX & SWT 7
T disabled Checkbox soll trotzdem Focus bekommen AWT, Swing, JavaFX & SWT 9
R Button soll nach dem er gedrückt wurde auf setVisible(false) gestellt werden. AWT, Swing, JavaFX & SWT 3
F JTable soll mit Buttons befüllt werden, aber nicht in jede Zelle einer Spalte AWT, Swing, JavaFX & SWT 3
P 2D-Grafik String übergeben, PNG soll rauskommen AWT, Swing, JavaFX & SWT 9
B Text soll nich über das Frame hinausgehen AWT, Swing, JavaFX & SWT 5
Y JRadioButton soll JTextBox aktivieren UND deaktivieren AWT, Swing, JavaFX & SWT 3
M Swing JTable soll auf ArrayList zugreifen AWT, Swing, JavaFX & SWT 8
GianaSisters Swing jTable - Feldtext soll mehrere Zeilen haben AWT, Swing, JavaFX & SWT 3
H Applet JApplet soll neues Tab im Browser öffnen AWT, Swing, JavaFX & SWT 2
T Swing jTextArea soll sich der Fenstergröße anpassen beim ziehen?? AWT, Swing, JavaFX & SWT 2
S Swing JTabbedPane: Inhalt soll oben links anfangen AWT, Swing, JavaFX & SWT 6
kodela Clipboard übernimt mehr als es soll AWT, Swing, JavaFX & SWT 15
N Button soll die Größ eines Icons haben AWT, Swing, JavaFX & SWT 5
M Menübar soll bestehen bleiben, wenn andere Masken geöffnet werden AWT, Swing, JavaFX & SWT 4
J Swing Kalender soll auf Buttondruck einen Monat weiterblättern AWT, Swing, JavaFX & SWT 7
F Rechte Maustaste auf TreeNode soll den Fokus auf diese setzen AWT, Swing, JavaFX & SWT 6
M Combobox soll Farbe einer Komponente setzen AWT, Swing, JavaFX & SWT 2
S Item einer JComboBox soll variabel sein AWT, Swing, JavaFX & SWT 3
D GridBagLayout macht nicht das was es soll AWT, Swing, JavaFX & SWT 12
M Swing JTextPane mit JScrollPane soll aussehen wie JLabel AWT, Swing, JavaFX & SWT 3
X JTable soll im JScrollpane bei .add mitscrollen. AWT, Swing, JavaFX & SWT 4
O Button (ActionPerformed) soll neues JFrame erzeugen AWT, Swing, JavaFX & SWT 8
X Eingabe in Textfeld soll Button aktivieren... AWT, Swing, JavaFX & SWT 12
reibi SWT Fenster in SWT soll nicht bewegt werden AWT, Swing, JavaFX & SWT 2
D Eigene Methode soll Gerade zeichnen AWT, Swing, JavaFX & SWT 5
J Swing JScrollPane fasst JPanel und Groesse des JPanels soll sich aendern AWT, Swing, JavaFX & SWT 2
P JList verhält sich anders als sie soll -.- AWT, Swing, JavaFX & SWT 2
S JEditorPane soll HTML und dann Text anzeigen..? AWT, Swing, JavaFX & SWT 5
B Swing Einzelne Zelle in JTable soll NICHT auswählbar sein AWT, Swing, JavaFX & SWT 9
B SWT Linie soll in Abhängigkeit der aktuellen Uhrzeit gezeichnet werden AWT, Swing, JavaFX & SWT 16
Pithecanthropus [gelöst ]ActionListener soll nur Änderungen "bemerken" AWT, Swing, JavaFX & SWT 2
K Wenn Mauszeiger in der Nähe vom Kreis, soll Kreis an eine andere Stelle springen AWT, Swing, JavaFX & SWT 8
F Button soll automatisch geklickt werden AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben