Avatar billede duno Nybegynder
17. april 2005 - 13:28 Der er 60 kommentarer og
1 løsning

kan man lave kurver

Jeg har 3 tekstfelter hvor man kan skrive tal fra 0.0 - 99.99

jeg vil så gerne vide om det er muligt at vise en kurve ud fra de 3 tal i tekstfelterne..

altså med en streg fra 1 til 2, fra 2 til 3

kender i nogen gode steder, har i et script.. hvadsomhelst.. kan det lade sig gøre skal det laves :-)

Hilsen

Duno
Avatar billede arne_v Ekspert
17. april 2005 - 14:05 #1
Du kan enten selv tegne linier mellem punkter eller finde noget mere færdigt.

http://www.jfree.org/jfreechart/ er rimeligt godt
Avatar billede duno Nybegynder
17. april 2005 - 14:57 #2
hmmm.. jeg har lige kigget på deres demo, men jeg kan ikke helt forstå det, er det meningen at man så skal have installeret plugins på serveren eller??

og hvad med indtastning af egne kordinater? jeg får ike rigtig noget frem når jeg prøver deres demo...
Avatar billede arne_v Ekspert
17. april 2005 - 15:38 #3
hvor meget erfaring har du med java ?
Avatar billede duno Nybegynder
17. april 2005 - 17:54 #4
hmmm.. ikke nok...

slet ikke nok til at kunne lave ting.. jeg kan måske rette til osv.. men ikke bygge
Avatar billede arne_v Ekspert
17. april 2005 - 18:11 #5
Det er ikke så svært igen.

Men det kræver alligevel lidt Java erfaring.

Udover den Java applet (jeg antager at det er client side java ikke
server side java) skal du bruge et server side script til at generere
applet tag med - skal det være PHP eller ASP eller ?
Avatar billede duno Nybegynder
18. april 2005 - 16:04 #6
asp...

erfaring kan man vel få hen af vejen ""GG""
Avatar billede duno Nybegynder
26. april 2005 - 19:23 #7
hmm.. den skulle gerne ligne noget i stil med denne, dog bare uden animationen

http://www.infosoftglobal.com/FusionCharts/Demos/DynamicChange/Index.html
Avatar billede duno Nybegynder
26. april 2005 - 19:24 #8
hey det slog mig lige da jeg gennemlæste hele tråden, hvis du siger at det ikke er så svært igen, hvad skulle du så have for at lave det?, du får naturligvis din reference de steder jeg bruger den

Hilsen

Duno :-)
Avatar billede arne_v Ekspert
27. april 2005 - 08:43 #9
Penge er næppe en mulighed. Jeg er dyr og betaler en uhyggelig høj marginalskat, så
jeg er med 98% sandsynelighed for dyr.

Jeg vil måske nok lave det for point, men det kræver lige en ledig time, hvor jeg
ikke har noget sjovere at lave.

Spørgsmålet er ikke glemt. Bare midlertidigt standby.
Avatar billede arne_v Ekspert
27. april 2005 - 23:27 #10
curveinput.html
---------------

<form method="POST" action="curve.asp">
<input type="TEXT" name="values">
<br>
<input type="SUBMIT" value="Show curve">
</form>

curve.asp
---------

<APPLET CODEBASE="." CODE="CurveApplet.class" ARCHIVE="curve.jar" WIDTH="500" HEIGHT="300">
<PARAM NAME="title" VALUE="Curve Demo">
<PARAM NAME="data" VALUE="test data">
<PARAM NAME="values" VALUE="<%=Request("values")%>">
</APPLET>

CurveApplet.java
-----------------

import java.awt.*;
import java.util.*;

import javax.swing.*;

import org.jfree.chart.*;
import org.jfree.chart.axis.*;
import org.jfree.chart.plot.*;
import org.jfree.chart.renderer.xy.*;
import org.jfree.data.xy.*;

public class CurveApplet extends JApplet {
    public void init() {
        String title = getParameter("title");
        String data = getParameter("data");
        StringTokenizer st = new StringTokenizer(getParameter("values"), ",");
        double[] x = new double[st.countTokens()];
        int ix = 0;
        while (st.hasMoreTokens()) {
            x[ix] = Double.parseDouble(st.nextToken());
            ix++;
        }
        init(title, data,x);
    }

    public void init(String title, String data, double[] val) {
        XYSeries ser = new XYSeries(data);
        for (int i = 0; i < val.length; i++) {
            ser.add(i + 1, val[i]);
        }
        XYSeriesCollection dataset = new XYSeriesCollection();
        dataset.addSeries(ser);
        JFreeChart chart = ChartFactory.createXYLineChart(title, "X", "Y", dataset, PlotOrientation.VERTICAL, true, true, false);
        XYPlot plot = chart.getXYPlot();
        XYItemRenderer renderer = plot.getRenderer();
        if (renderer instanceof StandardXYItemRenderer) {
            StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;
            rr.setPlotShapes(true);
            rr.setShapesFilled(true);
        }
        NumberAxis axis = (NumberAxis) plot.getDomainAxis();
        axis.setTickUnit(new NumberTickUnit(1.0));
        ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new Dimension(500, 300));
        getContentPane().add(chartPanel);
        setVisible(true);
    }
}
Avatar billede arne_v Ekspert
04. maj 2005 - 20:13 #11
Ikke interesseret ?
Avatar billede duno Nybegynder
04. maj 2005 - 22:25 #12
Ikke interesseret ? .... ?????

Nej det må du ikke sige, hvis der er noget jeg er .. så er det overrasket, og MEGET interesseret, men jeg har først set dit indlæg nu, jeg vil straks tjekke det, vender tilbage senere :-)

Men tak fordi at du skrev igen, jeg må have overset den sidste mail fra eksperten, da den muligvis har været omklamret af utallige spammails..

Kigger med det samme
Avatar billede duno Nybegynder
04. maj 2005 - 22:34 #13
hmm.. jeg får en grå kasse???

men mangler jeg ikke også noget??
blandt andet curve.jar eller er det mig der er helt ude i skoven??

men jeg takker dig for din store hjælp indtil nu, MEGET :-)

Duno
Avatar billede duno Nybegynder
04. maj 2005 - 22:41 #14
der er vist også noget med CurveApplet.class, men det kan stadig godt være at det er mig der fra den, har ingen anelse/forståelse for det du har sendt mig.

Jeg nøjes med at kigge, og forhåbentlig lære en del af det, jeg kan godt følge systemet :-)
Avatar billede arne_v Ekspert
04. maj 2005 - 22:41 #15
du skal have compilet CurveApplet.java til CurveApplet.class og så skal
du have pakket den ind i curve.jar med et manifest som peger på
de 2 JFreeChart jar filer som skal ligge i samme dir som curve.jar
Avatar billede arne_v Ekspert
04. maj 2005 - 22:43 #16
curve.mf
--------

Class-Path: jfreechart-1.0.0-pre2.jar jcommon-1.0.0-pre2.jar

build.bat
---------

javac -classpath jfreechart-1.0.0-pre2.jar;jcommon-1.0.0-pre2.jar CurveApplet.java
jar cvfm curve.jar curve.mf CurveApplet.class
Avatar billede duno Nybegynder
04. maj 2005 - 22:51 #17
hmm.. jeg må ikke lægge bat filer op, kan man bruge et alternativ, som ikke er exe eller bat??
Avatar billede arne_v Ekspert
04. maj 2005 - 22:56 #18
bat filen skal ikke bruges på serveren

den skal kun bruges på din PC til at builde med:

CurveApplet.java -> CurveApplet.class -> curve.jar

det er kun curve.jar (og så .html og .asp som skal deployes)
Avatar billede arne_v Ekspert
04. maj 2005 - 22:56 #19
Jeg har iøvrigt lavet det så at der kun er et felt hvor tallene angives
komma separeret, men det er jo ret nemt at ændre til et andet koncept
Avatar billede duno Nybegynder
04. maj 2005 - 23:09 #20
jeg får følgende udskrift

c:\> javac -classpath jfreechart-1.0.0-pre2.jar;jcommon-1.0.0-pre2.jar CurveApplet.java
'javac' blev ikke genkendt som en intern eller ekstern kommando, et program eller batchfil

c:\> jar cvfm curve.jar curve.mf CurveApplet.class
'jar' blev ikke genkendt som en intern eller ekstern kommando, et program eller batchfil
Avatar billede duno Nybegynder
04. maj 2005 - 23:10 #21
at det hele er kommasepereret er bare helt fint, jeg vedlægger jo bare alle de felter jeg eventuelt skal bruge.
Avatar billede arne_v Ekspert
04. maj 2005 - 23:11 #22
du skal lige installere java sdk (jdk) inden du kan bygge en applet
Avatar billede duno Nybegynder
04. maj 2005 - 23:18 #23
kan det passe at filen skal fylde 102 MB???
Avatar billede arne_v Ekspert
04. maj 2005 - 23:21 #24
nej kun 55 MB

(tag den *uden* NetBeans)
Avatar billede duno Nybegynder
05. maj 2005 - 00:07 #25
hmm.. nu har jeg hentet, installeret, genstartet og prøvet igen, men jeg får stadig samme fejlmeddelelse..

c:\> javac -classpath jfreechart-1.0.0-pre2.jar;jcommon-1.0.0-pre2.jar CurveApplet.java
'javac' blev ikke genkendt som en intern eller ekstern kommando, et program eller batchfil

c:\> jar cvfm curve.jar curve.mf CurveApplet.class
'jar' blev ikke genkendt som en intern eller ekstern kommando, et program eller batchfil

hvad gør jeg galt??
Avatar billede arne_v Ekspert
05. maj 2005 - 00:11 #26
Så mangler du nok kun at tilføje java bin dir til PATH.

Prøv:

\hvorduinstalleredejava\bin\javac -classpath jfreechart-1.0.0-pre2.jar;jcommon-1.0.0-pre2.jar CurveApplet.java

\hvorduinstalleredejava\bin\jar cvfm curve.jar curve.mf CurveApplet.class
Avatar billede duno Nybegynder
05. maj 2005 - 00:27 #27
ok.. skal jeg åbne CMD og skrive

c:\>Programmer\Java\j2re1.4.2_08\bin\jar cvfm curve.jar curve.mf CurveApplet.class

så får jeg samme fejl som altid
Avatar billede arne_v Ekspert
05. maj 2005 - 15:15 #28
Du skal bruge SDK/JDK ikke JRE
Avatar billede duno Nybegynder
05. maj 2005 - 15:21 #29
hvor kan man hente det???
Avatar billede arne_v Ekspert
05. maj 2005 - 15:24 #30
Hos java.sun.com kan du hente:
  JDK + netbeans
  JDK
  JRE
det er JDK (på ca. 55 MB) du skal have
Avatar billede duno Nybegynder
05. maj 2005 - 22:10 #31
hmm

Nu kan jeg oprette curve.jar ved at skrive

jar cvfm curve.jar curve.mf CurveApplet.class

Men jeg får en besked lydende :

CurceApplet.class : no such fire or directory
added manifest

men jeg kan ikke oprette CurveApplet.class ved hjælp af

javac -classpath jfreechart-1.0.0-pre2.jar;jcommon-1.0.0-pre2.jar CurveApplet.java

så får jeg 22 cannot find symbol beskeder. send mig en email på bhn22@hotmail.com, så skal jeg sende dig et screenshot.. (der er over 100 linier)

men du får lige en første her

Linie 6:

package org.jfree.chart does not exist
der er pil under første tegn i nedenstående linie

Import org.jfree.chart.*;
^
Avatar billede duno Nybegynder
05. maj 2005 - 22:55 #32
ok jeg kommer da fremaf

nu er jeg nede på en fejl..

Jeg har fundet jfreechart-1.0.0-pre2.jar på nettet

men nu mangler jeg en ting som hedder drawable.class

Du får lige fejlbeskeden

CurveApplet.java:43: cannot access org.jfree.ui.Drawable
file org\jfree\ui\drawable.class not found
chartpanel chartpanel = new Chartpanel<chart>;

fejlen udpeges til at opstå ved n´et i new Chartpanel<chart>;

Søger jeg i JDK mappen finder jeg

Drawcontrols.class
drawpanel.class
Drawtest.class
Drawtest.java

Men ingen

drawable.class
Avatar billede arne_v Ekspert
05. maj 2005 - 23:05 #33
Har du jcommon-1.0.0-pre2.jar ?
Avatar billede duno Nybegynder
06. maj 2005 - 01:30 #34
ja
Avatar billede arne_v Ekspert
06. maj 2005 - 14:19 #35
Hvis du har begge jar filer i classpath så bør den også kunne finde
alle org.jfree klasserne
Avatar billede duno Nybegynder
08. maj 2005 - 21:25 #36
hmm.. hvad mener du med classpath???
Avatar billede arne_v Ekspert
08. maj 2005 - 22:39 #37
-classpath parameteren til javac

Class-Path direktiv i manifest
Avatar billede duno Nybegynder
09. maj 2005 - 19:46 #38
ok.. nu er der lavet en class fil

men jeg får fejlen

Applet CurveApplet notinited

Hvad betyder det nu??
Avatar billede duno Nybegynder
10. maj 2005 - 17:32 #39
Arne min hjælpende ånd...

Hvor er du??
Avatar billede arne_v Ekspert
10. maj 2005 - 17:36 #40
jeg er her

hvilken fejl får du i Java Console ?
Avatar billede duno Nybegynder
10. maj 2005 - 17:43 #41
Jeg ved ikke hvad du skal bruge.. så du får lige det hele

Java Plug-in 1.5.0_03
Using JRE version 1.5.0_03 Java HotSpot(TM) Client VM
User home directory = C:\Documents and Settings\brian


----------------------------------------------------
c:  clear console window
f:  finalize objects on finalization queue
g:  garbage collect
h:  display this help message
l:  dump classloader list
m:  print memory usage
o:  trigger logging
p:  reload proxy configuration
q:  hide console
r:  reload policy configuration
s:  dump system and deployment properties
t:  dump thread list
v:  dump thread stack
x:  clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------

java.lang.NoClassDefFoundError: org/jfree/data/xy/XYDataset
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at sun.applet.AppletPanel.createApplet(Unknown Source)
    at sun.plugin.AppletViewer.createApplet(Unknown Source)
    at sun.applet.AppletPanel.runLoader(Unknown Source)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Avatar billede arne_v Ekspert
10. maj 2005 - 17:58 #42
3 muligheder:
  - du har skrevet forkert i manifest
  - du har ike fået manifestet ind i din jar fil
  - de 2 jfree jar filer ligge ikke i samme dir som din jar fil
Avatar billede duno Nybegynder
10. maj 2005 - 18:10 #43
1 : nej
2 : når jeg står i C:\Programmer\Java\jdk1.5.0_03\bin i CMD og skriver build.bat giver den følgende tilbagemelding..

added manifest
adding: CurveApplet.class<in = 2471> <out= 1301> <deflated 47%>

jeg har brugt den kode du har skrevet til build.bat

et kopi af CurveApplet.java

Min curve.jar fil kommer til at fylde 1.816 byte jeg har lagt ALT op.. også de jar filer jeg har hentet fra nettet.. build.bat er den enste der ikke ligger der
Avatar billede duno Nybegynder
10. maj 2005 - 20:00 #44
hmm.. nu giver jeg sku snart op.. jeg kan ikke se hvad fejlen skulle være.. men nu er jeg kommet frem til en fejl hvor der står

load :class.CurveApplet not found

forskellen er ukendt!

Hmm.. kunne du måske sende mig din version af filerne, bare så jeg kan se forskellen, alle andre applets som jeg tester virker fint, så der er noget i den vi tester nu som fejler..

Min email adresse er kontakt@linkzonen.dk

Jeg fordobler gerne points antallet når den virker!!!
Avatar billede duno Nybegynder
10. maj 2005 - 21:19 #45
arne.. hjælp maaaiiiiggggg :o(

vi er så tæt.. og alligevel føles det så langt væk for mig
Avatar billede arne_v Ekspert
10. maj 2005 - 21:26 #46
Det hele kan downloades herfra:
  http://www.vajhoej.dk/arne/eksperten/JFREECHART/

[du kan dog ikke køre curve, da der ikke er ASP på serveren]
Avatar billede duno Nybegynder
10. maj 2005 - 22:57 #47
så er pointtallet sat op, stik mig et svar så betaler jeg..

tak for hjælpen,. det ser sku godt ud!!!

men lige et spørgsmål, lige nu står der 1 2 3 osv på X aksen, ville jeg kunne hente en alternativ tekst fra en database og indsætte istedet?? bare et spørgsmål

men stort tak for hjælpen, mange tak :o)

husk nu at svar så jeg kan betale ;-)

Duno
Avatar billede arne_v Ekspert
10. maj 2005 - 23:00 #48
svar
Avatar billede arne_v Ekspert
10. maj 2005 - 23:02 #49
Det er:

        for (int i = 0; i < val.length; i++) {
            ser.add(i + 1, val[i]);
        }

som sætter tallene på X aksen.

Du kan sætte de tal som du vil.

Vil du have noget andet en tal, så skal du bruge noget andet end XYSeries.

(prøv lige og kig på MoveingAverage eksemplet ! det kan også køres fra web !)
Avatar billede duno Nybegynder
11. maj 2005 - 19:02 #50
hej igen

jwg ville lige fremvise curven på arbejdet, men fik en besked om at UnsupportedClassVersionError CurveApplet(unsupported major minor version)

kan de passe at alle besøgende på min side skal hente de 55 MB installere det plugin og genstarte før det vil virke..

Hvis ja, hvordan hulen kan man slippe for det?

Hilsen

Duno
Avatar billede arne_v Ekspert
11. maj 2005 - 19:06 #51
JFreeChart bruger Swing og kræver derfor en nyere SUN Java. Den kan ikke
køre med MS Java fra sidste i 90'erne.

Man behøver ikke 55 MB - det er kun for development - man kan klare sig med væsentligt
mindre.

Iøvrigt mener jeg at man kan lave noget i HTML filen så man bliver promptet
for download & install, hvis man mangler SUN Java.
Avatar billede duno Nybegynder
11. maj 2005 - 20:08 #52
hmm.. er det helt umuligt at lave det serverbaseret??

for det med at folk skal installere plugins det er vist ikke det største hit .. :-)
Avatar billede arne_v Ekspert
11. maj 2005 - 20:12 #53
Nej - det kan sagtens laves server baseret.

JFreeChart kan bruges server side med servlets.

Hvis din web server understøtter JSP og servlets.
Avatar billede duno Nybegynder
20. maj 2005 - 10:59 #54
min server understøtter hvad jeg vil have :o) men hvordan får man den så til at køre der?

og vil brugeren så stadig være tvunget til at hente plugin osv?? eller kan de så vises som gif/jpg osv???
Avatar billede arne_v Ekspert
20. maj 2005 - 11:02 #55
så installerer du Tomcat og omskriver applet til en servlet, så kan grafikken
ses af en hvilken som helst browser der kan vise JPEG billeder - browseren
skal ikke bruge Java overhovedet.
Avatar billede duno Nybegynder
20. maj 2005 - 15:13 #56
ok ... hmm tak.. men øøhh hvordan?

hvis jeg nu opretter et nyt spørgsmål til en værdi af 100 pt kunne du så lokkes til at kigge på det?
Avatar billede arne_v Ekspert
20. maj 2005 - 18:05 #57
ja - jeg prøver lige at finde noget frem
Avatar billede arne_v Ekspert
20. maj 2005 - 22:41 #58
CurveServlet.java
------------------

import java.awt.image.*;
import java.io.*;
import java.util.*;

import javax.imageio.*;
import javax.servlet.*;
import javax.servlet.http.*;

import org.jfree.chart.*;
import org.jfree.chart.axis.*;
import org.jfree.chart.plot.*;
import org.jfree.chart.renderer.xy.*;
import org.jfree.data.xy.*;

public class CurveServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("image/jpeg");
        String title = request.getParameter("title");
        String data = request.getParameter("data");
        StringTokenizer st = new StringTokenizer(request.getParameter("values"), ",");
        double[] val = new double[st.countTokens()];
        int ix = 0;
        while (st.hasMoreTokens()) {
            val[ix] = Double.parseDouble(st.nextToken());
            ix++;
        }
        XYSeries ser = new XYSeries(data);
        for (int i = 0; i < val.length; i++) {
            ser.add(i + 1, val[i]);
        }
        XYSeriesCollection dataset = new XYSeriesCollection();
        dataset.addSeries(ser);
        JFreeChart chart = ChartFactory.createXYLineChart(title, "X", "Y", dataset, PlotOrientation.VERTICAL, true, true, false);
        XYPlot plot = chart.getXYPlot();
        XYItemRenderer renderer = plot.getRenderer();
        if (renderer instanceof StandardXYItemRenderer) {
            StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;
            rr.setPlotShapes(true);
            rr.setShapesFilled(true);
        }
        NumberAxis axis = (NumberAxis) plot.getDomainAxis();
        axis.setTickUnit(new NumberTickUnit(1.0));
        BufferedImage bi = chart.createBufferedImage(200, 200);
        ImageIO.write(bi, "JPEG", response.getOutputStream());
    }
}
Avatar billede arne_v Ekspert
20. maj 2005 - 22:42 #59
curveinput.html
---------------

<form method="POST" action="CurveServlet">
Title: <input type="TEXT" name="title">
<br>
Data: <input type="TEXT" name="data">
<br>
Values: <input type="TEXT" name="values">
<br>
<input type="SUBMIT" value="Show curve">
</form>
Avatar billede arne_v Ekspert
20. maj 2005 - 22:42 #60
web.xml
-------

<web-app>
  <servlet>
    <servlet-name>CurveServlet</servlet-name>
    <servlet-class>CurveServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CurveServlet</servlet-name>
    <url-pattern>/CurveServlet</url-pattern>
  </servlet-mapping>
</web-app>
Avatar billede arne_v Ekspert
20. maj 2005 - 22:45 #61
C:\Jakarta\tomcat-5.5.7\webapps\test>dir /B /s
C:\Jakarta\tomcat-5.5.7\webapps\test\curveinput.html
C:\Jakarta\tomcat-5.5.7\webapps\test\WEB-INF
C:\Jakarta\tomcat-5.5.7\webapps\test\WEB-INF\classes
C:\Jakarta\tomcat-5.5.7\webapps\test\WEB-INF\lib
C:\Jakarta\tomcat-5.5.7\webapps\test\WEB-INF\web.xml
C:\Jakarta\tomcat-5.5.7\webapps\test\WEB-INF\classes\CurveServlet.class
C:\Jakarta\tomcat-5.5.7\webapps\test\WEB-INF\lib\jcommon-1.0.0-pre2.jar
C:\Jakarta\tomcat-5.5.7\webapps\test\WEB-INF\lib\jfreechart-1.0.0-pre2.jar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

SOS International

IT Procurement Manager

Netcompany A/S

IT Manager

Kongeå Trailercenter A/S

IT-Ansvarlig med bredt teknisk kendskab

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Afdelingsdirektør for Digital Enablement