Talaan ng mga Nilalaman:

Ang Application ng Java ay Tumakbo sa isang Google Drive Database: 8 Hakbang
Ang Application ng Java ay Tumakbo sa isang Google Drive Database: 8 Hakbang

Video: Ang Application ng Java ay Tumakbo sa isang Google Drive Database: 8 Hakbang

Video: Ang Application ng Java ay Tumakbo sa isang Google Drive Database: 8 Hakbang
Video: SuperPower Rings Origin Story! SHK HeroForce Full Movie Compilation | SuperHeroKids 2024, Nobyembre
Anonim
Tumakbo ang Java Application sa isang Google Drive Database
Tumakbo ang Java Application sa isang Google Drive Database
Tumakbo ang Java Application sa isang Google Drive Database
Tumakbo ang Java Application sa isang Google Drive Database
Tumakbo ang Java Application sa isang Google Drive Database
Tumakbo ang Java Application sa isang Google Drive Database

Nais mo na bang lumikha ng isang application na tumatakbo sa isang pabago-bagong database na madaling magtrabaho, pinapayagan ang mga gumagamit na walang kaalamang tech na mag-input ng data, at hindi pinapatakbo ang mga mapagkukunan ng kumpanya? Kaya, pagkatapos ay mayroon akong solusyon para sa iyo. Ngayon, magtatayo kami ng isang application na tumatakbo sa Google Drive (mabuti, partikular sa Google Sheets) at magagamit para sa iba't ibang mga iba't ibang layunin. Bagaman ang tutorial na ito ay tututuon sa pagbuo ng isang app na Batay sa kaganapan upang ipakita ang isang listahan ng mga kaganapan na nangyayari sa paligid ng isang campus sa kolehiyo, ang proyektong ito ay madaling maisulat muli upang gumana sa maraming mga paraan, maging isang calculator app sa isang app na sinusubaybayan mga stock para sa mga produkto. Nag-attach ako ng isang kopya ng aking aplikasyon kung nais mong makita kung ano ang gagawin namin. I-zip ang zip file at patakbuhin ang JAR sa loob nito. At ngayon, nang walang karagdagang pagtatalo, magsimula tayo!

Hakbang 1: Ano ang Kakailanganin Mo

Upang makapagsimula sa proyektong ito, kakailanganin mo ang mga sumusunod na mapagkukunan:

  • Netbeans

    Inirerekumenda ko ang pag-download ng Java EE dahil nagbibigay ito ng suporta sa server, ngunit kung hindi mo nais ang ilang mga hindi kinakailangang mga file o ang labis na puwang sa disk, gagana rin ang Java SE. Ang Netbeans ay magsisilbing out IDE para sa pag-coding at pag-compile ng aming application

  • Jsoup

    Isinama ko ito sa Mga Instructionable para ma-download mo. Ito ay isang HTML parser na magpapahintulot sa amin na kumuha ng impormasyon mula sa nai-publish na spreadsheet

  • Java SDK (V8)

    Mag-download ng anumang file na umaangkop sa iyong system. Kung mayroon ka ng Java SDK sa isang nakaraang bersyon, inirerekumenda kong i-update. Ang ilan sa aking mga pagpapaandar ay gumagamit ng mga bagong expression ng lambda na katutubong sa v8, at ang code ay maaaring hindi gumana nang wala ang mga ito depende sa iyong ginagawa

  • Visual Studio (Opsyonal)

    Ganap na opsyonal. Bagaman ang NetBeans ay gumagana nang kamangha-mangha para sa pag-iipon at pag-packaging ng aming app, hindi ako isang malaking tagahanga ng development studio. Mas gusto kong mag-code sa VS, dahil mayroon itong mas mahusay na interface. Kung hindi mo gusto ito, maraming iba pang mga IDE sa online, kaya hanapin ang kahit anong gusto mo

  • Starter Code

    Isinama ko ang starter code sa mga mapagkukunan nito, at nai-publish din ito sa GitHub. Sa ito, mayroon akong pangunahing file (Kaganapan) na nagbibigay ng istraktura para sa file na talagang nagpapatakbo ng app, pati na rin ang EventTester, na gumagamit ng JavaFX upang likhain ang GUI para sa app. Kung nais mong makuha ang buong karanasan, hindi ko inirerekumenda ang pagkopya at pag-paste. Dalhin ang iyong oras at basahin ito

Iba pa:

Pangunahing kaalaman sa Java. Makakatulong na maging may kaalaman sa Java, tulad ng mga pag-andar sa pagsulat, paglikha ng mga bagay, atbp

Hakbang 2: Pag-set up ng Iyong Database

Pag-set up ng Iyong Database
Pag-set up ng Iyong Database

Upang simulan ang proyekto, kailangan muna naming pumunta sa Google Drive at lumikha ng sheet na gagamitin namin upang patakbuhin ang aming application. Tumungo sa drive.google.com at i-click ang icon na "Bago" sa kaliwang sulok sa itaas, at piliin ang "Mga Sheet" sa ilalim nito.

Kapag na-load na ang iyong sheet, magpatuloy at palitan ang pangalan na ito sa isang bagay na madaling makilala. Pagkatapos gawin ito, magpatuloy at punan ang tuktok na hilera ng iyong mga pangalan ng data, tulad ng mga bagay na ilalagay mo sa bawat haligi. Sa pagtingin sa aking halimbawa dito, nilagyan ko ng label ang nangungunang hilera ng mga bagay tulad ng "Pangalan ng Kaganapan," "Petsa," atbp.

Pagkatapos gawin ito, simulang i-populate ang iyong spreadsheet sa data na nais mong punan. Tandaang i-format ang lahat ng iyong data nang magkatulad, upang ang code ay magagawang gumana kasama nito nang hindi nagtatapon ng mga error. Halimbawa, kung balak mong gumamit ng mga petsa sa iyong code, mag-ingat na mai-format ang bawat petsa ng pareho, kung hindi man ay hindi ma-parse ito ng code.

Matapos mailagay ang iyong data, i-publish ang spreadsheet sa pamamagitan ng pagpunta sa "File" -> "I-publish sa web." Mula dito, gugustuhin mong piliin ang buong dokumento at tiyaking nai-publish ito bilang isang HTML file, sa ganoong paraan nakaguhit ng tama ang data ng aming app. Matapos mai-publish ang iyong spreadsheet, siguraduhing tandaan ang link na ibinibigay nito. Kakailanganin ito sa paglaon sa app.

Hakbang 3: Pag-set up ng Mga NetBeans

Pag-set up ng NetBeans
Pag-set up ng NetBeans

Ngayong mayroon na kami ng aming spreadsheet, oras na upang i-set up ang NetBeans upang makapagsimula kaming mag-coding. Matapos mong i-download at mai-install ang NetBeans at ang iyong Java SDK, magpatuloy at lumikha ng isang bagong proyekto. Kapag pumipili ng isang uri, pinili ang kategoryang "Java", at ang proyektong "Java Application". Pinili kung ano ang nais mong tawagan ang iyong proyekto (Pinangalanan ko nang simple ang "Minahan"). Piliin ang checkbox sa tabi ng "gumamit ng nakalaang folder para sa pagtatago ng mga aklatan," pati na rin ang isa bukod sa "Lumikha ng pangunahing klase." Pagkatapos nito, ang NetBeans ay dapat lumikha ng isang proyekto at direktoryo ng proyekto upang magsimula kaming magtrabaho, tulad ng sa larawan.

Bago namin simulan ang pag-coding, kakailanganin din naming tiyakin na ang NetBeans ay mayroong JSoup library na kakailanganin nito upang ma-parse ang aming spreadsheet. Sa NetBeans, i-right click ang icon na "Mga Aklatan" sa ilalim ng direktoryo ng iyong proyekto. Sa ilalim ng pop-up menu, piliin ang pindutan upang magdagdag ng isang.jar file. Ngayon, mag-navigate sa kung saan mo inilagay ang iyong pag-download ng jsoup (malamang na iyong folder ng Mga Pag-download, maliban kung tinukoy mo sa ibang lugar). Piliin ang file na ito at idagdag ito sa library. Kung pinalawak mo ang iyong folder ng Mga Aklatan sa NetBeans, dapat mo na ngayong makita ang jsoup.jar sa lugar na ito. Sa tapos na, maaari na nating simulan ang pag-coding ng aming app.

Hakbang 4: Pag-coding ng aming Pangunahing Klase

Coding Ang aming Pangunahing Klase
Coding Ang aming Pangunahing Klase

Kaya, ang unang hakbang sa pag-coding ng aming app ay ang paglikha ng iyong pangunahing klase. Ang iyong pangunahing klase ay magiging kung saan lumilikha kami ng aming mga object, may mga pamamaraan na nakikipag-ugnay sa JSoup, at higit pa. Ipagpalagay na ang lahat na nagbabasa nito ay may karanasan sa pag-coding, magpatuloy at gamitin ang mga sumusunod na pag-import:

i-import ang java.util. Collection;

import java.util. List;

import java.util. ArrayList;

import java.util. Date;

import java.util.stream. Stream;

import java.util.stream. Collector;

i-import ang java.text. SimpleDateFormat;

i-import ang java.text. ParseException;

i-import ang org.jsoup. Jsoup;

import org.jsoup.nodes. Document;

import org.jsoup.nodes. Element;

import org.jsoup.select. Elemen;

import javafx.beans.property. SimpleStringProperty;

Maaaring mukhang marami ito, at nakasalalay sa iyong proyekto, maaaring hindi kinakailangan ang lahat. Habang nagpapatuloy kaming mag-code, ipapaalam sa iyo ng NetBeans kung mayroon kang anumang hindi nagamit na pag-import, upang palagi namin itong matanggal sa paglaon. Gayunpaman, ito ang kailangan natin para sa ngayon.

Pagkuha ng aming mga pahayag sa pag-import, sige na ideklara natin ang aming klase. Kung balak mong gamitin ang Mga petsa o anumang di-pangunahing bagay kapag binubuo ang iyong bagay na tukoy sa klase, inirerekumenda kong magdagdag ng isang "nagpapatupad na Maihahambing" sa iyong deklarasyon sa klase. Papayagan ka nitong ihambing ang Mga Bagay, na magbibigay-daan sa iyo upang ayusin ang isang Listahan ng ClassObjects sa paglaon. Matapos gawin ito, magpatuloy at ideklara ang lahat ng mga variable ng halimbawa na kakailanganin mo. Para sa bawat pampublikong string na nilikha mo, kakailanganin mo ring lumikha ng SimpleStringProperty para dito. Ito ang mga bagay na JavaFX na magpapahintulot sa amin na gumana kasama ang aming pangunahing mga bagay sa klase sa paglaon.

Ngayon, sige at ideklara kang mag-access ng mga pag-andar. Hangga't napupunta ang iyong pangunahing mga variable, maaari mong pangalanan ang iyong mga pagpapaandar kahit anong gusto mo. Gayunpaman, para sa iyo ang mga pag-andar ng pag-access ng SSP, dapat mong gamitin ang format getFunctionNameHere (). Ito ay dahil sa kalaunan ay gagamitin namin ang JavaFX upang kumonekta sa mga pagpapaandar na ito, at ang mga pagpapaandar na gagamitin ay nangangailangan sa amin upang simulan ang aming mga pagpapaandar ng SSP na may get. Maaari kang makakita ng isang halimbawa sa itaas.

Matapos tukuyin ang lahat ng iyong variable ng pag-access, magpatuloy at tukuyin ang anumang iba pang mga pagpapaandar na maaaring kailanganin mo. Ito ay napaka tukoy ng gumagamit, dahil ang mga pagpapaandar na kailangan mo na naiiba sa bawat proyekto. Kung kailangan mo ng ilang inspirasyon, suriin ang aking Javadoc o ang aktwal na code at tingnan ang ilan sa mga pagpapaandar na ginawa ko. Halimbawa, lumikha ako ng isang pag-uuri na pag-uuri kung saan nai-uri ang isang Listahan ayon sa Petsa, pati na rin ang mga pagpapaandar na bumalik lamang sa Mga Kaganapan na may mga katayuan sa pangkat ng publiko, at higit pa. Bagaman OK lang na gawin ang mga ito static upang makagawa ka ng ilang pagsubok, inirerekumenda kong hindi magkaroon ng anumang mga static na pamamaraan sa oras na matapos mo ang pag-debug, upang maiwasan ang mga pagkakamali pagdating sa susunod na hakbang ng proyekto.

Hakbang 5: Pagtukoy sa Aming Lumikha () na Paraan

Pagtukoy sa Aming Lumikha () na Paraan
Pagtukoy sa Aming Lumikha () na Paraan

Dumarating marahil ang pinakamahalagang bahagi ng code, kung saan matutukoy namin ang aming paraan ng paglikha (), na kung saan ay talagang a-access ang aming webpage at makuha sa amin ang data. Mahalagang tandaan na kakailanganin mong magdagdag ng isang throws linya ng Exception sa iyong deklarasyon ng pamamaraan, kaya hindi namin kailangang isulat ang mga pagsubok na bloke sa aming code. Upang magsimula, magpatuloy at magdeklara ng isang walang laman na Listahan ng iyong object. Sa aking kaso, parang

Mga kaganapan sa kaganapan = bagong ArrayList ()).

Ngayon, pumunta at hanapin ang URL na iyong kinopya nang mas maaga sa nai-publish na spreadsheet. Ipahayag ang link na ito bilang isang string sa Java, at tawagan ito kung ano ang gusto mo. Ngayon, magpatuloy at magdeklara ng isang bagong dokumento ng Jsoup. Maaari mo itong gawin sa pamamagitan ng paglikha ng isang bagong object ng dokumento, tulad ng

Document doc = bagong Dokumento ();

Ngayon, sige at itakda ang iyong dokumento upang kumonekta sa aming URL at makuha ang data. Upang magawa ito, subukan:

Document doc = Jsoup.connect (url).get ();

Ngayon, kailangan naming makuha ang katawan ng aming dokumento, kung saan nakaimbak ang aktwal na data.

String body = doc.body (). Text ();

Ngayon, kailangan nating simulang hilahin ang data sa katawan. Dahil ang aming data ay nasa isang talahanayan (dahil ito ay isang spreadsheet), kailangan naming hilahin ang mesa mula sa katawan. Subukan Natin

Element table = doc.select ("table"). Kumuha (0);

Pinipili nito ang Unang talahanayan. Sa kasong ito, mayroon lamang isa. Ngayon, type

Mga hilera ng elemento = table.select ("tr");

Nakukuha sa amin ang lahat ng mga hilera sa nasabing talahanayan.

Kaya, ngayon, lahat ng aming data ay nasa loob ng variable na mga hilera na ito. Mabuti iyon at lahat, ngunit ang buong punto sa pagsulat ng pagpapaandar na ito sa loob ng klase na ito ay upang makalikha tayo ng mga bagay dito. Kaya, bago namin ibalik ito, kailangan naming lumikha ng isang Listahan mula sa aming mga hilera. Upang magawa ito, maaari kaming gumamit ng isang para sa loop. Dapat kong tandaan na tumagal ito sa akin ng kaunting pagsubok at mga pagkakamali upang makakuha ng tama. Napagtanto ko na kapag kumukuha mula sa mga hilera, ang ilan sa aming data ay hindi kapaki-pakinabang para sa sitwasyong ito, dahil nagbibigay ito ng mga bagay tulad ng pangalan ng indibidwal na sheet, ang unang hilera kasama ang aming mga ideya sa data dito, atbp. Sa huli, itinakda ko ang paunang pagpasok ng numero para sa para sa loop sa 2, kaya't dumadaan ito sa mga item na ito at maaaring lumikha ng aming mga item. Sa huli, nakabuo ako ng isang hitsura kasama ang code

para sa (int i = 2; i <row.size (); i ++) {

Element row = row.get (i);

Mga elemento ng cols = row.select ("td");

Ngayon, upang lumikha ng isang bagay, gumawa ng isang bagay tulad ng

Pangalan ng object = bagong Bagay (cols.get (0).text ());

Mahalaga, ang cols.get (0) ay makakakuha ng data mula sa row (i) haligi (0), at gawing isang String na maaaring maipasa sa tagapagbuo ng bagay.

Matapos i-set up ang iyong konstruksyon, idagdag ito sa Listahan na nilikha namin nang mas maaga sa list.add (), tulad ng

mga kaganapan.add (pangalan);

Ngayon, isara ang iyong para sa loop, at tawagan ang anumang mga pagpapaandar na maaaring kailangan mo ngayon. Halimbawa, tinawagan ko ang aking pagpapaandar na pag-uuri upang makuha ang mga Kaganapan sa pagkakasunud-sunod ng petsa. Pagkatapos gawin ito, ibalik ang iyong Listahan at pagkatapos ay tapos ka na sa seksyong ito!

Hakbang 6: Pag-coding ng aming Application

Coding Ang aming Application
Coding Ang aming Application
Coding Ang aming Application
Coding Ang aming Application

Lumikha ng isang bagong file at pangalanan ito kahit anong pipiliin mo. Kakailanganin mo ang mga sumusunod na pag-import:

import java.util. List;

import java.util. ArrayList;

import java.util. Date;

i-import ang javafx.geometry. Pos;

i-import ang javafx.scene.layout. HBox;

i-import ang javafx.application. Application;

i-import ang javafx.collection.transformation. FilteredList;

i-import ang javafx.scene.text. Font; i-import ang javafx.scene.control. *;

i-import ang javafx.collection. FXCollection;

i-import ang javafx.collection. ObservableList;

i-import ang javafx.geometry. Insets;

i-import ang javafx.scene. Group;

import javafx.scene. Scene;

i-import ang javafx.scene.control. Label;

import javafx.scene.control.cell. PropertyValueFactory;

i-import ang javafx.scene.layout. VBox;

i-import ang javafx.stage. Stage;

Alam kong ito ay maaaring mukhang marami, ngunit maniwala ka sa akin, kinakailangan ang mga ito upang patakbuhin natin ang paglikha ng aming application. Sige at ideklara ang iyong klase, at tiyaking pinahaba nito ang Application, dahil ito ay isang kinakailangang sangkap ng proyekto. Sa simula, ideklara ang isang bagong variable ng halimbawa na isang TableView ng iyong object, tulad ng

pribadong mesa ng TableView = bagong TableView ();

Gayundin, ideklara ang isang pangunahing pamamaraan, na gagamitin namin upang ilunsad ang app. Mahalaga, dapat itong magmukhang larawan sa itaas.

Ngayon, kailangan naming lumikha ng aming paraan ng pagsisimula. Tiyaking nagtatapon ito ng Exception, dahil tatawagin namin ang paraan ng paggawa () mula sa aming dating klase. Gumawa ng isang bagong kaganapan na may walang laman na mga parameter, simpleng sa gayon maaari naming tawagan ang paraan ng paglikha kasama nito. Tukuyin ang isang bagong Listahan, at itakda itong katumbas ng resulta ng lumikha (). Ngayon, lumikha ng isang bagong ObservableList, na gagamitin upang mapunan ang aming talahanayan sa aming data. Tukuyin ito tulad ng:

ObservableList data = FXCollection.observableArrayList ();

Ngayon, lumikha ng isang bagong eksena sa:

Tagpo ng eksena = bagong Eksena (bagong Pangkat ());

Itakda ang pamagat, lapad, taas, at anumang bagay na kailangan mo para sa anumang gumagana para sa iyo. Maaari mong makita ang aking mga halaga sa imahe sa itaas. Ngayon, maaari na nating simulang i-set up ang aming mesa. Para sa lahat ng impormasyon na nais mong ipakita, lumikha ng isang TableColumn, tulad ng:

TableColumn eventCol = bagong TableColumn ("Pangalan ng Kaganapan"); eventCol.setMinWidth (100); eventCol.setCellValueFactory (bagong PropertyValueFactory ("sName"));

Ang parameter na "sName" ay dapat punan ng anuman ang pangalan ng iyong mga pag-andar sa pag-access ng SSP, upang makuha nito ang mga halagang kailangan mo para sa mga ibinigay na object. Gumawa ng maraming mga Haligi hangga't kailangan mo, pagkatapos ay idagdag ang mga ito sa isang talahanayan na may

FilteredList flEvent = bagong FilteredList (data, p -> totoo);

table.setItems (flEvent);

table.getColumns (). addAll (eventCol, statCol, groupCol, datingCol, descCol, locationCol);

Kung nais mong magdagdag ng isang search bar tulad ng ginawa ko, suriin ang code para sa impormasyon sa kung paano lumikha ng isang pagpipilianBox at isang textField, na magbibigay-daan sa iyong gumagamit na salain ang talahanayan ayon sa mga tukoy na halaga. Kung napili mong gawin ito, kakailanganin mo ring gumawa ng isang hBox upang maglaman ng mga ito, kasama ang

HBox hBox = bagong HBox (choiceBox, textField);

hBox.setAlignment (Pos. CENTER);

Kakailanganin mo ring idagdag ang hBox sa.addAll () na pamamaraan sa ibaba.

Kung hindi man, lumikha lamang ng isang bagong vBox upang i-hold ang aming data sa pamamagitan ng paggawa

pangwakas na VBox vbox = bagong VBox ();

vbox.getChapters (). addAll (label, talahanayan);

((Pangkat) eksena.getRoot ()). GetChapters (). AddAll (vbox);

yugto.setScene (eksena); yugto.pakita ();

Ngayon, ipunin ang iyong code at patakbuhin ito, at tingnan kung gumagana ito. Gumamit ng NetBeans upang makahanap ng anumang mga error, na lilitaw bilang mga pulang bar sa kanang bahagi ng screen. Patuloy na patakbuhin ito hanggang sa wala ka nang mga error, at tatakbo ang proyekto.

Matapos makumpleto ang iyong pag-coding, inirerekumenda ko ang paglikha ng isang Javadoc ng iyong code upang makita ng mga tao kung ano ang ginagawa ng iyong code. Upang magawa ito, sa ilalim ng pindutang "Run" sa tuktok ng screen, pindutin lamang ang "Bumuo ng Javadoc." Maaari kang makahanap ng isang kopya ng aking Javadoc sa pamamagitan ng pagtingin sa loob ng zip file sa unang pahina at pagpili ng index.html file.

Hakbang 7: Pagbuo at Pagbalot ng aming Jar File

Pag-iipon at Pagbalot ng aming Jar File
Pag-iipon at Pagbalot ng aming Jar File

Sa sandaling nai-debug mo nang sapat ang iyong at matagumpay itong napatakbo, maaari mo rin itong wakasan sa isang JAR file, na maaaring mai-publish upang mapapatakbo ng iba ang software na ito nang hindi kailangan ng NetBeans o Jsoup.

Bago i-compile ang iyong app, tiyaking tapos na ang lahat. Kung nais mong magdagdag ng dokumentasyon at lumikha ng isang JavaDoc, magpatuloy na gawin ito. Kung mayroon kang anumang mga System.out utos na aling naka-print sa iyong console, alisin ang mga ito. Mahalaga, siguraduhin na ang iyong app ay walang mga hindi kanais-nais na mga utos o pag-andar, at mayroon ito ng lahat ng kailangan nito upang mai-package.

Pagkatapos gawin ito, mag-right click sa pangalan ng proyekto sa NetBeans. Dapat itong mag-pop up ng isang menu. Pindutin ang mga pag-aari (sa pinakailalim ng menu), pagkatapos ay pindutin ang "Packaging" sa kaliwang bahagi ng bagong pop up menu. Ngayon, tiyaking minarkahan ang lahat ng mga checkbox. Ang iyong screen ay dapat magmukhang isa sa itaas.

Matapos gawin ito, sa sandaling muling i-right click ang iyong proyekto sa NetBeans. Sa puntong ito, pindutin ang pindutan na "Malinis at Bumuo", at magsisimulang makuha ng NetBeans ang iyong mga silid-aklatan at mga file at iipon ang mga ito sa isang gumaganang file na JAR. Kung maayos ang lahat, dapat mong makita ang isang mensahe sa console pagkatapos ng ilang sandali na nagsasabi sa iyo na natapos na ang iyong JAR sa pag-compile, at ang file ay maaari nang patakbuhin. Patakbuhin ang app na ito at tiyaking gumagana ang lahat. Kung hindi, i-debug at i-restart ang proseso hanggang sa magawa ang mga error.

Hakbang 8: Congrats

Binabati kita! Kung nasunod mo nang tama ang lahat ng mga tagubilin at naka-code nang maayos ang lahat, dapat ay mayroon kang sarili mong application na nagtatrabaho. Ang cool na bagay ay na ngayon tuwing ikaw o ang sinumang may access sa iyong spreadsheet ay nag-e-edit ng data, ang iyong app ay maaaring magbago at mag-react sa bagong data. Narito ang isang mabilis na video kung paano naging aking.

Kung naghahanap ka ng mga paraan upang mapanatili ang pagpapabuti at pagbuo, inirerekumenda kong suriin ang ilan sa mga mas advanced na tampok ng JavaFX, tulad ng FancyText o FancyButton, na maaaring magdagdag ng ilang mga mas mataas na end graphics sa iyong application. Good luck, at mag-drop ng isang puna kung kailangan mo ng anumang tulong o mapansin ang isang error sa aking code!

Inirerekumendang: