Pereiti prie turinio

ttengineer

Nariai
  • Pranešimai

    18
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    0%

ttengineer Pranešimai

  1. Šioje vietoje manau kažkaip pasiliksiu prie paspaudimo pelyte, mažiau atminties naudos ir skaičiavimų mažiau bus, kadangi vienu metų ant žemėlapio gali būti daugybę taškų, tai visi pelės fiksavimai, judėjimai ir perskaičiavimai didintų apkrovą. Ko gero paspaudimai bus optimalu. :)

     

    Pele, be paspaudimų, gali nauodoti MouseMotionListener. Jis reaguoja į pelės judesius, o tiksliau, kada pelė "įeina" ir kada "išeina". Gali sukurti naują klasę, tegul ji "extends JComponent". Ta visa klasė gali būti kaip vienas paveikslas ir tam paveikslui uždėti Mouse Listener arba MouseMotionListener nežinau kurio reikia.

     

    Nors tavo mintis su atstumo nuo koordinatės skaičiavimu irgi nėra bloga. Jei gerai suprantu, tai galima tiesiog padaryti, jog kiekvieną kartą judinant pelę ar spaudžiant būtų gaunamos koordinatės ir vėliau ieškoma atitikimų tarp visų esančių. Jei atitikimas randamas, tada atnaujini informaciją, jei ne, palieki seną.

  2. Taip, būtent to tikriausiai man ir reikia. Labai dėkui kad užvedate ant kelio. Kai yra gerų žmonių ir padeda, tai ir pačiam kyla didelis noras bei motyvacija mokytis, bei ateityje padėti kitiems :)

     

    Šiuo metu nuskaitęs tas savo koordinates vaizduoju vienus taškus paveiksliukais, kitus nusipiešių su apskritimu, stačiakampiu, arka, ir ten spalvas pasidėlioju pagal poreikius. Bet pirma mintis pasidaryti tą funkcionalumą kad jis veiktų, o grožis ir kitka liks galui. Dėl to net ir apie savo žemėlapį negalvojau, o tik mąsčiau kaip iš xml išimti tuos taškus ir paprasčiausiu tekstu išvedinėti kažkur.

     

    Vėliau dar norėtųsi pasidaryti kad pelė aptiktų mano obejektą ir reaguotų į paspaudimą, bet čia turbūt matematikos reikia, nes šiuo atveju fiksuoju kur su pele paspaudžiu, perskaičiuoju atstumus nuo paspaudimo iki mano turimų taškų, ir jei ten spindulys mažesnis už norimą, aktyvuoju tą tašką, bet irgi nežinau kaip padaryti dar geriau, kad tiksliai pavyzdžiui fiksuotų kontūrą Graphics arba paveiksliuką. :)

     

     

    Kaip suprantu tau reikia kažko panašaus į JSlider. Jis yra standartinėj swing bibliotekoj, nieko papildomo nereikės naudoti.

    Koordinates geriausia matyt bus rodyt su JLabel.

  3. Patiko man tas JavaFX, kuriant GUI interfeisą tikrai naudingų dalykų pilna, bet internete mažiau pavyzdžių ir diskusijų.

    Be to man tenka su kitom projekto dalim kompromisų ieškoti todėl ir pasirintas tas swing variantas.

     

     

     

    JavaFX taipogi nėra blogas pasirinkimas. Nesu daug su juo dirbęs, galima sakyti beveik nieko, bet dažnai patariama, tokiam "fancy stuff'ui" naudoti būtent JavaFX, o ne Swing.

  4. Žemėlapio veikimo principas tas, kad jis kraunamas iš openstreetmaps serverio (nemokamas analogas Google Maps, Bing maps, ar Yahoo maps), sudarytas iš 256x256 px dydžio paveiksliukų, 18 ar 19 skirtingų didinimo lygių. Pradžiai paleidus rodomas vaizdas pagal numatytą centrinį tašką ir default didinimą. Ant jo galima piešti Graphic elementus, šiuo atveju taškus ar kažką kitą, tik aš noriu papildomų funkcijų įsidėti :)

    Valdymas tai ten pagal pelės veiksmus ar pagal kontrolės mygtukus vyksta. Gana primityvios ir paprastos funkcijos :)

    Pelės pozicijos ant žemėlapio yra perskaičiuojamos iš UTM projektijų į GEO projekcijas kurios rodo longitude/latitude, na ten jau matematika.

     

    Viską surašiau anoje temoje. Tas žemėlapis tai man panašus į didelį paveikslėlį. Kuris yra piešiamas pagal pelės kursorių. Jei tarkim tik įjungus programą taškas būna (0,0). Paslenki pelę į dešinę, paveikslėlis x ašimi pasislenka į kairę ir pradžios nesimato. Bent jau man susidarė toks įspūdis. Vėl gi, viskas būtų aprašyta minėtoje knygoje Filthy Rich Clients.

  5. :) užskaitau. Geri dalykai tokiose knygose. Pradžiai su ta grafika žaisti pradėjau su JavaFX bet toliau vistiek prie swing teko pereiti :)

    Bandysiu ieškoti sprendimų.

    Grafika ten ir bus nupiešta matomai ir ant jos išdėstoma kas reikia, gal iš to pavyzdžio susigaudysiu kas per kodas yra, nes jis ten su visom klasėm viename faile stovi ir labai ilgas jau esti :)

     

     

     

    Nesu įsitikinęs, bet man rodos, jog čia ta lentelė nėra kažkoks komponentas atskiras, o ji yra nupiešta

    naudojantis Graphics2D objektu. Tarkim sukuri klasę

    public class Lentelė extends JPanel{}

     

    į vidų įdedi

    public void paintComponent(Graphics g){

    }

    naudojantis tuo Graphics objektu pieši tiesiai ant panelės ką tik nori. Daug čia nepapasakosiu. Tiesą sakant siūlyčiau perskaityti knygą "Filthy Rich Clients" čia viskas tikrai bus aprašyta. Čia manau tikrai advanced lygio programa ir teks pasimokyti norint tokią padaryti. Jei netingi atsisiųsk tą knygą ir patirinėk, sužinosi daug naudingų dalykų, padės ne tik šiame projekte.

  6. Šis pavyzdys gana aiškus, dėkoju už pagalbą, bet mano principas šiektiek kitoks.

    Aš gal nemoku išsireikšti teisingais programavimo kalbos terminais, bet man kitokio pobūdžio reikia tos slinkties.

    Esmė: ne kad duomenys netelpa į langą, o kad slinkties juosta vaizduoja vis kitą duomenų porą pagal jos poziciją.

    Jei slinkties juosta sujungiu su mygukais play ir pause, tai vaizdavimas vyksta su taimeriu, kad kas vieną sekundę,

    slinkties juosta pasislenka, ir rodoma nauja pora duomenų. Šiuo atveju aš dirbu su žemėlapiu

    http://wiki.openstreetmap.org/wiki/JMapViewer

    Ir čia noriu vaizduoti ant jo tracking taškų pozicijas.

    Konkrečiau gal tai reiktų vadinti ne slinkties juosta, o kažkokia liniuote.

    Analogas galėtų būti kaip štai tokiame pavyzdyje:

    http://www.leepoint.net/notes-java/GUI-appearance/fonts/22fontdemo.html

    Čia yra slinktis su kuria galima keisti teksto dydį. Tai man analogiškai reiktų nuskaityti xml, tarkim 2000 duomenų vienetų,

    ir pagal tai sukurti liniuotę kuri turi tiek padalų, paslinkus kiekvieną kartą į kitą poziciją, matyčiau vis kitą duomenų porą.

    O jei paspausčiau play, liniuotė nuo esamos vietos kas sekundę slinktūsi pati ir rodytų vis kitą duomenų porą.

    Šiuo atveju kalbu kad rodytų kitą duomenų porą, tai mano konkrečiu atveju ta pora būtų taškas ant žemėlapio vis kitoje vietoje,

    priklausomai pagal koordinates.

    Na nežinau ar aiškiau dabar aprašiau savo bėdą.

     

    Dar kartą dėkui!

     

    Pvz gali susikurti JTextAream į kurį rašysi kas sekundę tas koordinates.

    JTextArea jta = new JTextArea(10,10); // Dydis 10x10. Pasikoreguosi pagal save.
    jta.setEditable(false); // nes nenorim kad useris galėtų į ją rašyti. Bent jau toks įspūdis susidaro iš pasakojimo.

    Tada sukuri JScrollPane:

    JScrollPane  jsp = new JScrollPane(jta); // Tarp konstruktoriaus parametrų iš karto įmesk JTextArea ir viskas.

    Tada ScrollPane įdedi į JPanel ir turėtų veikti.

    Iš pradžių nesimatys tų slinkčių, bet jos atsiranda tada, kai duomenys nebetelpa į langą. Gali nuimt setEditable komandą ir pabandyt parašyt, pamatysi pats, jog paskui jos pačios atsiras.

     

    Dabar Timer. Sukuri objektą:

    Timer t = new Timer(1000,this);

    1000 - milisekundės, kokiais intervalais bus kažkas atliekama. Šiuo atveju kas sekundę.

    Tada nepamiršk prie klasės header prirašyt "implements ActionListener", ir

    public void actionPerformed(ActionEvent e){
    }

    Jei naudoji Eclipse, tai turėtų vienu paspaudimu šitą prirašyti.

    Tada tarp actionPerformed metodo, surašai ką nori kad padarytų. Tarkim:

    nuskaitytiKoordinates();
    surašytiKoordinates();

     

    Surašai koordinates į tą JTextArea ir viskas. Tik nepamiršk po Timer objekto sukūrimo jį paleist.

    t.start();

     

    Analogiškai kai baigiasi koordinatės:

    t.stop();

  7. Na ieškausi kažko paprasto. Jei turi laiko tai gali parsiųsti ir matysi maždaug ko man reikia.

    Čia yra projektėlis kuris vaizduoja žemėlapį:

    http://mappanel.sourceforge.net/

     

    Kairėj pusėj yra searchpanel ir per meniu juostą ji gali būti įjungiama,

    arba įjungti galima Infopanele, tai tas info, ten yra lentelė kuri visada pastovioj vietoj ir priklausomai nuo pelės padėties ir tt, rodo atitinkamus duomenis. Man tokios lentelės reikėtų va kaip tik, ir būti idealu.

     

    Aš pats darau kažką panašaus, savo poreikiam mėginu prisitaikyti šį projektą:

    http://wiki.openstreetmap.org/wiki/JMapViewer

    ir daugko nemoku. Tai ieškau pagalbos. Anoje temoje irgi kur klausiau apie Timel ir scroll ar mygtukus, susija su tuo kad noriu implementuoti į šį projektėlį.

     

    Neteko susidurti su tokiomis lentelėmis. Pasidairyk čia:

    http://www.java2s.com/Questions_And_Answers/Swing/JFrame/Popup.htm

  8. Šis pavyzdys man nesuveikia. Man reiktų iššokančios lentelės programos viduje, o ne apskritai kaip čia atskiras langas.

    Gali tai būti ir kaip kokia papildoma panelė programoj atsidaranti, nors lentelė pagrindiniame lange man geriau tiktų.

     

    Labas. To Point nebūtinai reikia. Tiesiog paimk:

    int x = e.getX();

    int y = e.getY();

     

    Nežinau kokios reikia lentelės, tačiau gali surašyti informaciją į JOptionPane.

    http://docs.oracle.com/javase/tutorial/figures/uiswing/components/InformationalDialogMetal.png

    Jei tau tinka, tada gali pridėti šį fragmentą kodo:

    String zinute = "X : "+x+" Y : "+y;
    final JOptionPane pane = new JOptionPane(zinute);
       final JDialog d = pane.createDialog((JFrame)null, "Pranešimas");
       d.setLocation(10,10);

    setLocation() keiti kordinates į tokias, kurioj vietoj nori, kad atsirastų lentelė.

  9. Dėkoju už mintis ir idėjas. Bet tokį paprastą pavyzdėlį pasimėginau pasidaryti ir man kažkas nefunkcionuoja. Matyt dar nemoku su SWING dirbti, ir maišosi kur Pane, kur Label, kur Dialog ir kaip tai turi veikti. O taip pat ir su scrool, tiesiog man scrool turi inicijuoti jį slenkant vis kitų duomenų rodymą,

    o lange niekas nesislankioti ir su tom laiko reikšmėm nelabai suprantu kaip tai daroma. XML išmokau skaityti tiek su DOM tiek su SAX, gražinu ten objektą, toliau reik jį tik pateikti kažkaip. Mokinuosi ieškodamas pavyzdėlių, o bandau daryti programą kuri ant žemėlapio vaizduoja duomenis.

     

    Gal ir tu turi kokių pavyzdžių į ką konkrečiau pasižiūrėti galėčiau kaip ten su tuo Timer funkcionuotų tokie mygtukai su slinkties juosta šalia?

     

     

     

    Užduotis nėra sudėtinga, jei moki dirbti su XML failais. Mygtukus gali tiesiog sukurti JButton iš javax.swing. bibliotekos.Nelabai įsivaizduoju kokios reiktų slinkties juostos. Jei tinka tokia:

    http://www.java2v.com/Tutorial/JavaImages/JScrollPaneToTopActionDemo.PNG

    Tada gali rašyti duomenis į JScrollPane.

     

    Dėl užduoties greitumo tai manyčiau skirtumo labai didelio nėra. 2000-3000 porų, nuskaityti VIENĄ kartą nėra labai baisi užduotis kompiuteriui. Bet šiaip jei bijai tai gali skaityti po vieną kas sekundę, tada nereikės papildomų masyvų kurti.

     

    Na veikimas tai manau būtų JscrollPane(jei tau tinka), po ja trys mygtukai tavo minėti. Panaudojus Timer iš javax.swing gali nustatyti sekundes tarpus ir, kad kas sekundę nuskaitytų. Tada panaudočiau kokį:

    boolean veikia;

    jei timeris veikia, tada veikia = true. šis loginis kintamasis padėtų valdyti mygtukus.

     

    Kaip jau sakiau, užduotis nėra sunki ir manau įveikiama ir naujokui.

  10. Sveiki.

    Noriu padaryti paprastą dalyką. Noriu paspausti su pele tam tikrą vietą freime (swing JFrame) ir kad man iššoktų popup langelis ar lentelė visada pastovioje vietoje, to freimo apačioj dešinėje. O tam langelyje pagal paspaudimo vietą būtų rodoma informacija, tarkim paspaudimo vietos koordinatės.

     

    Kaip tai gali būti atliekama? Kad aktyvuotųsi paspaudimas ir iššoktų lentelė?

    Kaip suprantu reikia taikyti mouseClicked metodą, bet kaip toliau aktyvuotą tą lentelės iškvietimą?

     

    Kol kas turiu tokį pavyzdį:

     

    public void mouseClicked(MouseEvent e) {
           if (e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON1) {
               Point p = e.getPoint();
               int X = p.x;
               int Y = p.y;
               System.out.println("X: " + X);
               System.out.println("Y: " + Y);
    //
    //.... metodas aktyvuojantis lango iskvietima ir informacijos jame rodyma
    //
       }
    

     

    Su javascript pilna pavyzdžių, tačiau kaip padaryti su JAVA?

  11. Sveiki visi. Turiu klausimą ir nežinau kaip jį išpildyti.

    Turiu didelį masyvą duomenų XML faile. Masyvo ilgis 2000 ar 3000 [x,y] kooordinačių porų.

    Noriu padarayti taip kad kiekvieną naują sekundę swing panelėje būtų rodoma nauja sekanti koordinačių pora.

    pirmą sekundę x1,y1 ... antra sekundę x2,y2 ... trečią sekundę x3,y3.

    Tokiu būdu norėčiau pasidaryti PLAY, PAUSE, STOP mygtukus paleisti automatiniam vaizdavimui, bei slinkties juostą, kurią stumdant pagal masyvo ilgį būtų rodoma atitinkama koordinačių pora. Žinoma kad paspaudus play slinkties juosta judėtų pagal esamą koordinačių porą.

     

    Ar tai sudėtinga užduotis ar kažkas paprasto? Geriau ir greičiau veiktų jei kiekvieną x,y porą kaskart nuskaitytume iš XML failo, ar geriau nuskaityti viską ir pagal masyvo indeksą rodyti?

     

    Kaip sukurti mygtukus ir slinkties juosta? Ar tai naudojama SwingWorker biblioteka? Gal kažkas turi idėjų ar pavyzdžių. Esu gana pradedantis todėl noriu pasisemti patirties ir prašau pagalbos.

     

    Dėkoju visiems :)

  12. Labas, dekoju uz komentarus.

    Kad aiskciau butu, tai programele kaip grafine vartotojo sasaja skirta vaizduoti simuliaciju rezultatus.

    Siuo atveju saltinis yra MATLAB irankiai kurie ir naudoja x,y,z sistemoj duomenis, o man reik perskaiciuot atgal i geografines koordinates. Dar nezinau kaip atrodo papildomi duomenys bet manau jie irgi turetu stoveti XML faile,

    tai kaip ir savotiska duomenu baze gaunasi.

    Spaudziam su pele ant tasko ir matom papildoma info, gal ja ir redaguojam bet tas manau ne butina gali buti, uztektu gal tik perziureti.

    Ieskau zmoniu, bet norinciu neitin yra, o kelis simtus moketi uz toki darba geram zmogui programuotojui manau butu sazininga ir negaila.

     

    Tad dar ieskau ir laukiu komentaru.

     

     

     

    Smagi programėlė turėtų būti, nors pilnai ir nesusidariau vaizdo, ką nori padaryti.

    Iš to ką supratau, veiktų taip:

     


    •  
    • Skaitom XML'us kuriuos gauni matyt iš gps ar iš kokio kito šaltinio
    • Atvaizduojam juose esančias koordinates žemėlapyje naudodami JMapViewer ar panašias bibliotekas
    • Žemėlapyje dar atvaizduojame papildomą info ten, kur vartotojas paspaudžia pele
    • Matyt reikia paprastos duomenų bazės redaguotos informacijos saugojimui

     

    Kiek tai užtruktų?

    Priklauso nuo patirties dirbant su Java ir įvairiom bibliotekom. Spėju ne daugiau nei 2-3 dienas (čia subjektyviai iš savo prizmės vertinu, ~10 metų dirbu su Java). Galbūt iki savaitės, jei norėsi daug 'featuresų' įdėti.

     

    Kiek kainuotų?

    Čia matyt kiti forumiečiai geriau atsakys, aš deja laisvo laiko nelabai turiu...

    Bet galim elementariai paskaičiuot: Java programuotojai gauna vidutiniškai 4-5k Lt/mėn, tai manau be kelių šimtinių neišsiversi, nebent rastum studenčioką norintį paeksperimentuot ;)

     

    Sėkmės su projektu!

  13. Sveiki, turiu užduotį kuriai atlikti neatrandu laiko.

    Mano pačio JAVA kalbos žinios dar tik pradedančio lygyje, todėl klausimų daugiau nei realių sprendimų.

    Ieškau pagalbos kas gerai išmano JAVA, turi patirties ir greičiau žinotų sprendimus kaip susidoroti su užduotimi.

     

    Reikalingos programos idėja:

     

    Veikimas: programa turi nuskaityti XML failą, jame yra X,Y,Z koordinatės metru sistemoj.

    Yra objektų koordinatės, ir yra trackingo koordinatės, pvz:

     

    <?xml version="1.0" encoding="UTF-8"?>

    <ROOT>

    <tx_positions>[0 0 0 433.012701892219 433.012701892219 433.012701892219 3.06161699786838e-14 3.06161699786838e-14 3.06161699786838e-14 -433.012701892219;0 0 0 250 250 250 500 500 500 250;32 32 32 32 32 32 32 32 32 32]</tx_positions>

    <track>

    <initial_position>[165.970803155814 233.600706220959 58.1959355716401 94.5480509050439 214.462891949592 98.415198804376 13.7440912525488 45.1363574304485 55.9639644554242 142.926627901904;-21.8201639277136 -29.7542371358332 7.49672275401147 -177.728437309825 -7.09787375572608 15.0846091396968 -62.7290453053654 -94.7764366826583 -197.266709384561 -234.515716318754;1.5 1.5 1.5 1.5 1.5 1.5 1.5 0 0 0]</initial_position>

    </track>

    </ROOT>

     

    Čia pirmi 10 narių iki kabliataškio yra x vertės, toliau 10 yra y, kiti 10 z.

    Nežinau ar įmanoma išfiltruoti, tačiau šiuo atveju keletas taškų kartojasi, įtariu atmetus pasikartojimus paspartėtų viskas.

    Nuskaičius failą, kitoje klasėje reikia apdoroti duomenis, šiuo atveju konvertuoti pagal taisykles koordinates iš double x,y į GEO (longitude-latitude),

    čia pavyzdys JAVA:http://wiki.openstreetmap.org/wiki/Mercator

     

    Toliau reikia šiuos taškus perduoti į žemėlapį, ir atvaizduoti. Šiuo atveju naudoti reikia OPENSTREETMAPS, pvz: http://www.openstreetmap.org/

    Šis žemėlapis yra nemokamas ir gana lankstus, jį taip pat galima užsikrauti lokaliai iš asmeninio kompiuterio, todėl ir yra naudojamas.

    Šiuo atveju jau yra padarytų programų kaip šį žemėlapį užkrauti su JAVA ir naudoti tolesniems savo veiksmams.

    Patogu naudoti tokius įrankius, kurie jau sukurti ir priimtini testi darbui:

    https://today.java.net/pub/a/today/2007/10/30/building-maps-into-swing-app-with-jxmapviewer.html

    http://wiki.openstreetmap.org/wiki/JXMapViewer

    supaprastinta versija JMapViewer, lengvai padaroma kad krautu is local, yra pvz:

    http://wiki.openstreetmap.org/wiki/JMapViewer

    cia paveiksle matomi taskai kuriu ir man reiktu su papildymais.

     

    Toliau reikia padaryti taip, kad žemėlapis reaguotį į pelės paspaudimus, action.

    Iš esmės yra reikalinga kad paspaudus ant taško iššoktų lentelė ir parodytų taško papildomą informaciją.

    Tą papildomą informaciją gal būt būtų galima krauti iš kito failo, o tuo pačiu toje lentelėje ir redaguoti, bet čia nebūtinai, gal pakaktų tiesiog iš failo pavaizduoti.

     

    Reikalavimai:

    Programa turi veikti su JAVA.

    Žemėlapis Openstreetmaps

    Žemėlapiai kraunami arba iš interneto arba iš komoiuterio, kaip alternatyva, jei naudojami pavyzdiniai įrankiai(JXMapViewer, JMapViewer), manau viskas ok.

    Prie klasių ir metodų aprašymo reiktų šiokių tokių komentarų, kas paaiškintų visą veikimą ir duomenų judėjimą.

    Objektai ant žemėlapio, šiuo atveju taškai, turėtų būtų kaip atskiri sluoksniai (layer) ir juos būtų galima nuimti pelės paspaudimu, ar varnelės nuėmimu.

     

    Pagal tiek kiek aprašiau ir pats susidūręs, tai patogiausiai šiam darbui atrodo būtų naudoti galima KML formato failą: https://developers.google.com/kml/documentation/

    Tai failas skirtas Geografiniam duomenim vaizduoti, jį naudoja Google Maps. Na jis labai lankstus ir daug leidžia nuveikti su duomenim ant žemėlapio,

    kalba eina ir apie sluoksnius, ir trackingus, ir taškus, ir HTML kodo įterpimą, įvairius atributus, stilius, paveiksliukus naudojamus būtent per šį failą.

    Man nėra aišku kaip su nuskaitytom koordinatėm susieti informaciją apie tašką, kuri turėtų būti rodoma iššokančioje lentelėje.

     

    Jei toks sprendimas būtų pasirinktias, KML failą reiktų susigeneruoti pačiam pagal taisykles, generavimą ir info galima rasti čia, irankiai: https://code.google.com/p/javaapiforkml/

    Labai geri pavyzdziai: http://labs.micromata.de/display/jak/Examples

    Bėda kad pats nemoku KML failo vaizduoti su JAVA ant žemėlapio, o pavyzdziu kažką įmanoma rasti su "World Wind Application", ten sluoksniai yra, valdomi varnelės nuėmimu ir vaizduojama iš KML gali būti, ivairus pvz: http://goworldwind.org/demos/

     

    Dėl pavyzdziu, tai atrodo labai patinkantis pvz yra su OpenLayer, HTML ir Openstreetmaps, tačiau čia naudojamas Javascriptas, kuris man šiuo atveju netinka, jau tą buvau pasidaręs, su Java per webengine. Openlayer example: http://openlayers.org/dev/examples/

     

    Minčių ir pvz nemažai turiu, tačiau šiuo atveju ieškau žmogaus kuris turi patirties tame dirbant su swing bibliotekom, ar su javafx bibliotekom, tuomet galėtų pasakyti ar tai reikalauja daug laiko ir kokia galėtų būti kaina jei apsiimtu padaryti?

  14. Viskas neblogai, atrodo spausdina ir tt, bet kai reikia vaizduoti tada problemos.

    Sukuriu dvimatį masyvą, ciklas cikle ir suformuoju double tipą.

    Tačiau nemoku to double tipo atskirai sukištį į tris kintamus,

    tarkim datax[], data[y], data[z], kur vėliau laisvai šiuos kintamuosius pasiimčiau kitame faile... trūksta šiek tiek pagrindų tai pasimečiau.

     

    Dvimatį double masyvą darau taip:

     

    String myArrayList = "[1.0 2.5 3.4;4.5 5.2 6.4;7.7 4.8 9.5]";
    String input = myArrayList.toString().replace(" ", ", ").replace("[", "").replace("]", "");
    String[] x = input.split(";");
    Double[][] result = new Double[x.length][];
    for (int i = 0; i < x.length; i++) {
       String[] row = x[i].split(",");
       result[i] = new Double[row.length];
       for(int j=0; j < row.length; j++) {
       result[i][j] = Double.parseDouble(row[j]);
       System.out.println(result[0][j]);    
       }
    }
    

    Gaunu double tipą taip:

    1.0

    2.5

    3.4

    1.0

    2.5

    3.4

    1.0

    2.5

    3.4

     

    Gal aš jau čia visai grybauju ir patarsite ką nors? Dėkoju!

  15. Geri patarimai, einu link tinkslo, bet šiandien kažkas nepavyksta su pasivertimu stringo į masyvą.

    Tikriausiai susipainiojau.

     

    Kaip pvz: nuskaitau xml, nuimtu skliautus, sudedu kablelius ir tada splitinu.

    Bet dar negaunu trijų skirtingų skaičių masyvų, vis kažkaip eilutė stovi ir blogai vaizduoja.

     

    String myArrayList = "[1.0 2.5 3.4;4.5 5.2 6.4;7.7 8.8 9.9]";
    String input = myArrayList.replace(" ", ",").replace("[", "").replace("]", "");
    
    String[] x = input.split(";");
    String[][] result = new String[x.length][];
    for (int i = 0; i<x.length; i++) {
       result[i] = x[i].split(",");
       System.out.println(result);
    }
    

     

    Kaip suprantu čia turėtų išeiti:

    1.0,2.5,3.4

    4.5,5.2,6.4

    7.7,8.8,9.9

     

    bet gaunu štai tai:

    [[Ljava.lang.String;@140de537

    [[Ljava.lang.String;@140de537

    [[Ljava.lang.String;@140de537

     

    Tai va dar kažko nemoku su konvertavimu. Gal padėti gali?

  16. Sveiki, esu viso labo tik pradedantis Java programuotojas, ir reikalinga sukurti GUI. Principas, kad reikia nuskaityti masyvą iš XML failo, bei jį atvaizduoti grafiškai. Tikriausiai trūksta man kažkokių žinių, arba nerandu konkrečių tinkančių mano atvejui pavyzdžių.

    Turiu XML failą:

    <?xml version="1.0" encoding="UTF-8"?>
    <ROOT>
       <tx_positions>[0 0 0 433.012701892219 433.012701892219 433.012701892219 3.06161699786838e-14 3.06161699786838e-14 3.06161699786838e-14 -433.012701892219 -433.012701892219 -433.012701892219 -433.012701892219 -433.012701892219 -433.012701892219 -9.18485099360515e-14 -9.18485099360515e-14 -9.18485099360515e-14 433.012701892219 433.012701892219 433.012701892219 42.3647765342118 99.7547893898332 11.2054259129501 49.2097314447929 -127.395273171483 -248.14891620048 712.525742586002 523.490468707607 542.173039965725 442.58669499568 235.419084544849 360.314388274723 227.845316373637 84.7591038007133 -106.801551739991 -67.6808496619261 -122.941657556154 -86.6722958319251 -313.485033878617 -278.312734785683 -428.71458546479 -344.276480250725 -673.954191378484 -512.110270350428 -252.974043577397 -216.234293676421 -453.770987334676 -303.256329636033 -554.721136705585 -603.868890016823 165.607003029405 0.82859204205086 7.81100131109548 123.967851251004 -87.521058038606 -269.622525850991 440.579162057008 588.559831914912 531.748515779712 324.520883050137 306.293041352806 211.591447155592;0 0 0 250 250 250 500 500 500 250 250 250 -250 -250 -250 -500 -500 -500 -250 -250 -250 -187.91326287411 -117.744175256443 228.406500132253 139.101600789042 -183.96617030504 16.9148562251789 230.774205223105 292.129717432013 390.369208335017 480.625704650158 278.208557299124 93.4813306881351 399.297842058635 345.925112862116 726.278510979964 663.857719760113 446.435178967761 284.111476275942 138.059756508968 221.26488173993 445.518346833998 382.558945661844 115.921953248502 294.43536373527 -383.700552674053 -410.024036078325 -28.8528340605174 -100.02928884002 -420.991006585657 -198.873493145915 -544.285028793092 -641.118366075968 -380.910079999167 -269.701027494359 -498.178982465844 -498.707937179585 -417.929644132318 -315.726007104745 -156.938773662954 -54.7469095139043 -233.122442439795 -230.964934793741;32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5]</tx_positions>
    </ROOT>
    

    čia yra trimatis masyvas 3x60. Pirmos 60 reikšmių x vertės, antros 60- y, ir sekančios 60- z. Kad būtų paprasčiau ir nesivelti į 3D vaizdavimą, noriu nuskaityti tik x,y vertes ir jas atvaizduoti dvimačiame grafike, kreive ar taškais.

     

    Trūkstą minčių kaip ištraukti tas vertes iš XML. Kokie yra parsing JAVA metodai ir kuris man tinkamas tokiam duomenų srautui?

    Atvaizduot paskui tą masyvą manau tiktų čia parodytas pavyzdys, realizuotas JavaFX kuris puikiai tinkamas GUI, kolkas nieko sudėtingo tam nereiktų:

    http://docs.oracle.com/javafx/2/charts/line-chart.htm

     

    public class AdvancedLineChartSample extends Application {
    
       private void init(Stage primaryStage) {
           Group root = new Group();
           primaryStage.setScene(new Scene(root));
           root.getChildren().add(createChart());
       }
    
       protected LineChart<Number, Number> createChart() {
           final NumberAxis xAxis = new NumberAxis();
           final NumberAxis yAxis = new NumberAxis();
           final LineChart<Number,Number> lc = new LineChart<Number,Number>(xAxis,yAxis);
           // setup chart
           lc.setTitle("Basic LineChart");
           xAxis.setLabel("X Axis");
           yAxis.setLabel("Y Axis");
           // add starting data
           XYChart.Series<Number,Number> series = new XYChart.Series<Number,Number>();
           series.setName("Data Series 1");
           series.getData().add(new XYChart.Data<Number,Number>(20d, 50d));
           series.getData().add(new XYChart.Data<Number,Number>(40d, 80d));
           series.getData().add(new XYChart.Data<Number,Number>(50d, 90d));
           series.getData().add(new XYChart.Data<Number,Number>(70d, 30d));
           series.getData().add(new XYChart.Data<Number,Number>(170d, 122d));
           lc.getData().add(series);
           return lc;
       }
    
       @Override public void start(Stage primaryStage) throws Exception {
           init(primaryStage);
           primaryStage.show();
       }
       public static void main(String[] args) { launch(args); }
    }
    

×
×
  • Pasirinkite naujai kuriamo turinio tipą...