Inhoudsopgave:
- Stap 1: Wat heb je nodig
- Stap 2: Uw database instellen
- Stap 3: NetBeans instellen
- Stap 4: Onze hoofdklasse coderen
- Stap 5: Onze Create()-methode definiëren
- Stap 6: Onze applicatie coderen
- Stap 7: Ons Jar-bestand samenstellen en verpakken
- Stap 8: Gefeliciteerd
Video: Java-toepassing liep op een Google Drive-database: 8 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Heb je ooit een applicatie willen maken die draait op een dynamische database die gemakkelijk is om mee te werken, waarmee niet-technisch onderlegde gebruikers gegevens kunnen invoeren, en die de bedrijfsmiddelen niet belast? Nou, dan heb ik een oplossing voor je. Vandaag gaan we een applicatie bouwen die draait op Google Drive (nou ja, specifiek Google Spreadsheets) en die voor verschillende doeleinden kan worden gebruikt. Hoewel deze tutorial zich zal richten op het bouwen van een op gebeurtenissen gebaseerde app om een lijst te tonen van gebeurtenissen die plaatsvinden rond een universiteitscampus, kan dit project gemakkelijk worden herschreven om op verschillende manieren te functioneren, of het nu een rekenmachine-app is tot een app die controleert voorraden voor producten. Ik heb een kopie van mijn aanvraag bijgevoegd als u wilt zien wat we gaan maken. Pak het zip-bestand uit en voer de JAR erin uit. En nu, zonder verder oponthoud, laten we beginnen!
Stap 1: Wat heb je nodig
Om met dit project aan de slag te gaan, heeft u de volgende bronnen nodig:
-
Netbeans
Ik raad de Java EE-download aan omdat deze serverondersteuning biedt, maar als u geen onnodige bestanden of extra schijfruimte wilt, werkt Java SE ook. Netbeans zal dienen als IDE voor het coderen en compileren van onze applicatie
-
Jsoep
Ik heb dit opgenomen in de Instructables die u kunt downloaden. Het is een HTML-parser waarmee we informatie uit de gepubliceerde spreadsheet kunnen halen
-
Java-SDK (V8)
Download het bestand dat bij uw systeem past. Als je de Java SDK al in een eerdere versie hebt, raad ik aan om te updaten. Sommige van mijn functies gebruiken nieuwe lambda-expressies die eigen zijn aan v8, en de code werkt mogelijk niet zonder deze, afhankelijk van wat je doet
-
Visuele Studio (Optioneel)
Volledig optioneel. Hoewel NetBeans geweldig werkt voor het compileren en verpakken van onze app, ben ik geen grote fan van de ontwikkelstudio. Ik codeer het liefst in VS, omdat het een mooiere interface heeft. Als je dit niet leuk vindt, zijn er tal van andere IDE's online, dus zoek wat je het leukst vindt
-
Startcode
Ik heb de startercode in de bronnen hiervan opgenomen en deze ook op GitHub gepubliceerd. Hierin heb ik het hoofdbestand (Event) dat de structuur biedt voor het bestand dat de app daadwerkelijk uitvoert, evenals EventTester, dat JavaFX gebruikt om de GUI voor de app te maken. Als je de volledige ervaring wilt, raad ik kopiëren en plakken niet aan. Neem de tijd en lees dit door
anderen:
Basiskennis van Java. Het is handig om kennis te hebben van Java, zoals het schrijven van functies, het maken van objecten, enz
Stap 2: Uw database instellen
Om het project te starten, moeten we eerst naar Google Drive gaan en het blad maken dat we zullen gebruiken om onze applicatie uit te voeren. Ga naar drive.google.com en klik op het pictogram 'Nieuw' in de linkerbovenhoek en selecteer daaronder 'Spreadsheets'.
Zodra je blad is geladen, ga je gang en hernoem je dit naar iets dat gemakkelijk herkenbaar is. Nadat u dit heeft gedaan, gaat u verder en vult u de bovenste rij in met uw gegevensnamen, zoals de dingen die u in elke kolom gaat plaatsen. Als ik naar mijn voorbeeld hier kijk, heb ik de bovenste rij gelabeld met dingen als 'Naam gebeurtenis', 'Datum', enz.
Nadat u dit heeft gedaan, begint u uw spreadsheet te vullen met de gegevens die u wilt invullen. Vergeet niet om al uw gegevens op dezelfde manier te formatteren, zodat de code ermee kan werken zonder fouten te veroorzaken. Als u bijvoorbeeld van plan bent om datums in uw code te gebruiken, zorg er dan voor dat u elke datum hetzelfde opmaakt, anders kan de code deze niet ontleden.
Nadat u uw gegevens heeft ingevoerd, publiceert u de spreadsheet door naar "Bestand" -> "Publiceren op internet" te gaan. Vanaf hier wil je het hele document selecteren en ervoor zorgen dat het wordt gepubliceerd als een HTML-bestand, zodat onze app de gegevens correct kan tekenen. Zorg ervoor dat u de link noteert nadat u uw spreadsheet heeft gepubliceerd. Dit is later in de app nodig.
Stap 3: NetBeans instellen
Nu we onze spreadsheet hebben, is het tijd om NetBeans in te stellen, zodat we kunnen beginnen met coderen. Nadat u NetBeans en uw Java SDK hebt gedownload en geïnstalleerd, kunt u doorgaan en een nieuw project maken. Kies bij het kiezen van een type de categorie "Java" en het project "Java Application". Kies hoe je je project ook wilt noemen (ik noemde de mijne gewoon "Evenement"). Selecteer het selectievakje naast "gebruik speciale map voor het opslaan van bibliotheken", evenals het selectievakje naast "Hoofdklasse maken". Hierna zou NetBeans een project- en projectdirectory moeten maken waarin we kunnen beginnen te werken, net zoals op de afbeelding.
Voordat we beginnen met coderen, moeten we er ook voor zorgen dat NetBeans de JSoup-bibliotheek heeft die nodig is om onze spreadsheet te ontleden. Klik in NetBeans met de rechtermuisknop op het pictogram "Bibliotheken" onder de map van uw project. Selecteer in het pop-upmenu de knop om een .jar-bestand toe te voegen. Navigeer nu naar waar u uw jsoup-download hebt geplaatst (hoogstwaarschijnlijk uw map Downloads, tenzij u elders hebt aangegeven). Kies dit bestand en voeg het toe aan de bibliotheek. Als u uw bibliothekenmap in NetBeans uitvouwt, zou u nu jsoup.jar in dit gebied moeten zien. Als we dit hebben gedaan, kunnen we nu beginnen met het coderen van onze app.
Stap 4: Onze hoofdklasse coderen
Dus de eerste stap bij het coderen van onze app is het maken van je hoofdklasse. Je hoofdklasse zal zijn waar we onze objecten maken, de methoden hebben die communiceren met JSoup en meer. Ervan uitgaande dat iedereen die dit leest ervaring heeft met coderen, ga je gang en gebruik de volgende invoer:
java.util. Collecties importeren;
import java.util. Lijst;
java.util. ArrayList importeren;
import java.util. Datum;
java.util.stream. Stream importeren;
java.util.stream. Verzamelaars importeren;
import java.text. SimpleDateFormat;
import java.text. ParseException;
org.jsoup. Jsoup importeren;
org.jsoup.nodes. Document importeren;
org.jsoup.nodes. Element importeren;
import org.jsoup.select. Elements;
import javafx.beans.property. SimpleStringProperty;
Dit lijkt misschien veel, en afhankelijk van uw project is misschien niet alles nodig. Terwijl we doorgaan met coderen, laat NetBeans je weten of je ongebruikte importen hebt, zodat we ze later altijd kunnen verwijderen. Dit is echter wat we nu nodig hebben.
Nu we onze importverklaringen hebben, gaan we verder en verklaren onze klasse. Als u van plan bent om Datums of een niet-basisobject te gebruiken bij het ontwikkelen van uw klasse-specifieke object, raad ik aan om een "implementeert vergelijkbaar" toe te voegen aan uw klassedeclaratie. Hiermee kunt u objecten vergelijken, waardoor u later een lijst met klassenobjecten kunt sorteren. Nadat je dit hebt gedaan, ga je gang en declareer je alle instantievariabelen die je nodig hebt. Voor elke openbare tekenreeks die u maakt, moet u er ook SimpleStringProperty voor maken. Dit zijn JavaFX-objecten waarmee we later met onze hoofdklasse-objecten kunnen werken.
Ga je gang en verklaar je toegang tot functies. Wat uw basisvariabelen betreft, u kunt uw functies een naam geven die u maar wilt. Voor SSP-toegangsfuncties moet u echter de indeling getFunctionNameHere() gebruiken. Dit komt omdat we later JavaFX zullen gebruiken om verbinding te maken met deze functies, en de functies die we zullen gebruiken, vereisen dat we onze SSP-functies beginnen met get. Een voorbeeld zie je hierboven.
Nadat u al uw toegangsvariabelen hebt gedefinieerd, gaat u verder en definieert u eventuele andere functies die u mogelijk nodig hebt. Dit is zeer gebruikersspecifiek, aangezien de functies die je nodig hebt van project tot project verschillen. Als je wat inspiratie nodig hebt, bekijk dan mijn Javadoc of de eigenlijke code en bekijk enkele van de functies die ik heb gemaakt. Ik heb bijvoorbeeld een sorteerfunctie gemaakt die een lijst op datum sorteert, evenals functies die alleen gebeurtenissen teruggaven met groepsstatussen van openbaar, en meer. Hoewel het oké is om deze statisch te maken, zodat je wat kunt testen, raad ik aan om geen statische methoden te gebruiken als je klaar bent met debuggen, om fouten te voorkomen wanneer we bij de volgende stap van het project komen.
Stap 5: Onze Create()-methode definiëren
Nu komt mogelijk het belangrijkste deel van de code, waar we onze create()-methode gaan definiëren, wat daadwerkelijk toegang zal krijgen tot onze webpagina en ons de gegevens zal bezorgen. Het is belangrijk op te merken dat je een throws Exception-regel aan je methodedeclaratie moet toevoegen, zodat we geen try-blokken in onze code hoeven te schrijven. Om te beginnen, ga je gang en declareer een lege lijst van je object. In mijn geval zag het eruit als
Gebeurtenisgebeurtenissen = nieuwe ArrayList()).
Ga nu op zoek naar die URL die u eerder naar de gepubliceerde spreadsheet hebt gekopieerd. Declareer deze link als een string in Java en noem hem zoals je wilt. Ga je gang en declareer een nieuw Jsoup-document. U kunt dit doen door een nieuw documentobject te maken, zoals:
Document doc = nieuw document();
Ga je gang en stel je document in om verbinding te maken met onze URL en de gegevens op te halen. Probeer hiervoor:
Document doc = Jsoup.connect(url).get();
Nu moeten we de hoofdtekst van ons document ophalen, waar de daadwerkelijke gegevens worden opgeslagen.
String body = doc.body().text();
Nu moeten we beginnen met het uit het lichaam halen van gegevens. Omdat onze gegevens in een tabel staan (omdat het een spreadsheet was), moeten we de tabel uit de body halen. Laten we proberen
Elementtabel = doc.select("tabel").get(0);
Hiermee wordt de eerste tabel geselecteerd. In dit geval is er maar één. Typ nu
Elementenrijen = table.select("tr");
Hiermee krijgen we alle rijen in de tabel.
Dus nu bevinden al onze gegevens zich in deze rijvariabele. Dat is goed en zo, maar het hele punt bij het schrijven van deze functie binnen deze klasse is dat we er objecten van kunnen maken. Dus voordat we dit kunnen retourneren, moeten we een lijst maken van onze rijen. Om dit te doen, kunnen we een for-lus gebruiken. Ik moet opmerken dat dit me een beetje vallen en opstaan kostte om goed te krijgen. Ik realiseerde me dat wanneer we uit de rijen trekken, sommige van onze gegevens niet nuttig zijn voor deze situatie, omdat het dingen biedt zoals de naam van het individuele blad, de eerste rij met onze gegevensideeën erop, enz. Uiteindelijk heb ik de eerste het invoeren van nummer voor de for-lus naar 2, zodat deze items worden omzeild en onze items kunnen worden gemaakt. Uiteindelijk heb ik een look ontwikkeld met de code
for (int i = 2; i < rows.size(); i++) {
Elementrij = rijen.get(i);
Elementen cols = row.select("td");
Om nu een object te maken, doe je zoiets als
Objectnaam = nieuw Object(cols.get(0).text());
In wezen haalt de cols.get(0) de gegevens uit row(i) column(0) en verandert deze in een string die vervolgens kan worden doorgegeven aan de constructor van het object.
Nadat je je constructie hebt opgezet, voeg je deze toe aan de lijst die we eerder hebben gemaakt met list.add(), zoals
evenementen.add(naam);
Sluit nu je for-lus en roep alle functies aan die je nu nodig hebt. Ik heb bijvoorbeeld mijn sorteerfunctie aangeroepen om de gebeurtenissen in volgorde van datum te krijgen. Nadat je dit hebt gedaan, stuur je je lijst terug en ben je klaar met dit gedeelte!
Stap 6: Onze applicatie coderen
Maak een nieuw bestand en noem het wat je maar wilt. U heeft de volgende invoer nodig:
import java.util. Lijst;
java.util. ArrayList importeren;
import java.util. Datum;
javafx.geometry. Pos importeren;
javafx.scene.layout. HBox importeren;
javafx.applicatie importeren. Applicatie;
import javafx.collections.transformation. FilteredList;
import javafx.scene.text. Font; import javafx.scene.control.*;
javafx.collections. FXCollections importeren;
javafx.collections. ObservableList importeren;
import javafx.geometry. Insets;
import javafx.scene. Group;
import javafx.scene. Scène;
javafx.scene.control. Label importeren;
import javafx.scene.control.cell. PropertyValueFactory;
javafx.scene.layout. VBox importeren;
javafx.stage. Stage importeren;
Ik weet dat dit misschien veel lijkt, maar geloof me, ze zijn nodig voor ons om onze applicatie te maken. Ga je gang en declareer je klasse, en zorg ervoor dat het Application uitbreidt, want dit is een noodzakelijk onderdeel van het project. Declareer in het begin een nieuwe instantievariabele die een TableView van uw object is, zoals:
private TableView-tabel = nieuwe TableView();
Verklaar ook een hoofdmethode, die we zullen gebruiken om de app te starten. In wezen zou het eruit moeten zien als de afbeelding bovenaan.
Nu moeten we onze startmethode maken. Zorg ervoor dat Exception wordt gegenereerd, aangezien we de methode create() uit onze vorige klasse zullen aanroepen. Maak een nieuwe gebeurtenis met lege parameters, gewoon zodat we de create-methode ermee kunnen aanroepen. Definieer een nieuwe lijst en stel deze in op het resultaat van create(). Maak nu een nieuwe ObservableList, die zal worden gebruikt om onze tabel met onze gegevens te vullen. Definieer het als:
ObservableList data = FXCollections.observableArrayList();
Maak nu een nieuwe scène met:
Scènescène = nieuwe scène (nieuwe groep ());
Stel de titel, breedte, hoogte en al het andere in dat u nodig heeft voor wat voor u werkt. Je kunt mijn waarden zien in de afbeelding bovenaan. Nu kunnen we beginnen met het opzetten van onze tafel. Voor alle informatie die u wilt weergeven, maakt u een TableColumn, zoals:
TableColumn eventCol = new TableColumn("Event Name");eventCol.setMinWidth(100); eventCol.setCellValueFactory (nieuwe PropertyValueFactory ("sName"));
De parameter "sName" moet worden gevuld met de naam van uw SSP-toegangsfuncties, zodat deze de waarden kan krijgen die u nodig hebt voor de gegeven objecten. Maak zoveel kolommen als je nodig hebt en voeg ze toe aan een tabel met
FilteredList flEvent = nieuwe FilteredList(data, p -> true);
tabel.setItems(flEvent);
table.getColumns().addAll(eventCol, statCol, groupCol, datingCol, descCol, locationCol);
Als je een zoekbalk wilt toevoegen zoals ik deed, bekijk dan de code voor informatie over het maken van een keuzevak en een tekstveld, waarmee je gebruiker de tabel kan filteren op specifieke waarden. Als je ervoor hebt gekozen om dit te doen, moet je ook een hBox maken om deze te bevatten, met
HBox hBox = nieuwe HBox(choiceBox, textField);
hBox.setAlignment(Pos. CENTER);
U moet ook hBox toevoegen aan de.addAll()-methode hieronder.
Maak anders gewoon een nieuwe vBox om onze gegevens in te bewaren door te doen
definitieve VBox vbox = nieuwe VBox();
vbox.getChildren().addAll(label, tabel);
((Groep) scene.getRoot()).getChildren().addAll(vbox);
stage.setScene (scène); toneelstuk();
Compileer nu uw code en voer deze uit, en kijk of het werkt. Gebruik NetBeans om eventuele fouten te vinden, die als rode balken aan de rechterkant van het scherm verschijnen. Blijf dit uitvoeren totdat u geen fouten meer hebt en het project wordt uitgevoerd.
Na het voltooien van uw codering, raad ik u aan een Javadoc van uw code te maken, zodat mensen kunnen zien wat uw code doet. Om dit te doen, klikt u onder de knop "Uitvoeren" bovenaan het scherm op "Javadoc genereren". U kunt een kopie van mijn Javadoc vinden door in het zip-bestand op de eerste pagina te kijken en het index.html-bestand te kiezen.
Stap 7: Ons Jar-bestand samenstellen en verpakken
Als je eenmaal voldoende fouten hebt gemaakt en het succesvol hebt uitgevoerd, kun je dit uiteindelijk compileren in een JAR-bestand, dat vervolgens kan worden gepubliceerd, zodat anderen deze software kunnen uitvoeren zonder dat NetBeans of Jsoup nodig is.
Voordat u uw app gaat compileren, moet u ervoor zorgen dat alles is voltooid. Als je documentatie wilt toevoegen en een JavaDoc wilt maken, ga je gang en doe dat. Als je System.out-opdrachten hebt die naar je console worden afgedrukt, verwijder ze dan. Zorg er in wezen voor dat uw app geen ongewenste opdrachten of functies heeft en dat deze alles heeft wat nodig is om te worden verpakt.
Klik daarna met de rechtermuisknop op de projectnaam in NetBeans. Er zou een menu moeten verschijnen. Klik op eigenschappen (helemaal onderaan het menu) en klik vervolgens op "Verpakking" aan de linkerkant van het nieuwe pop-upmenu. Zorg er nu voor dat alle selectievakjes zijn gemarkeerd. Uw scherm zou eruit moeten zien als hierboven.
Nadat u dit hebt gedaan, klikt u nogmaals met de rechtermuisknop op uw project in NetBeans. Klik op dit punt op de knop "Opschonen en bouwen", en NetBeans zal beginnen met het nemen van uw bibliotheken en bestanden en deze te compileren in een werkend JAR-bestand. Als alles goed gaat, zou je na enkele ogenblikken een bericht in de console moeten zien dat je JAR klaar is met compileren en dat het bestand nu kan worden uitgevoerd. Voer deze app uit en zorg ervoor dat alles werkt. Zo niet, debug en herstart het proces totdat de fouten zijn opgelost.
Stap 8: Gefeliciteerd
Gefeliciteerd! Als je alle instructies correct hebt gevolgd en alles goed hebt gecodeerd, zou je je eigen werkende applicatie moeten hebben. Het leuke is dat wanneer jij of iemand anders die toegang heeft tot je spreadsheet de gegevens bewerkt, je app de nieuwe gegevens kan wijzigen en erop kan reageren. Hier is een korte video van hoe de mijne is geworden.
Als u op zoek bent naar manieren om te blijven verbeteren en bouwen, raad ik u aan enkele van de meer geavanceerde functies van JavaFX te bekijken, zoals FancyText of FancyButton, die wat geavanceerdere afbeeldingen aan uw toepassing kunnen toevoegen. Veel succes, en laat een reactie achter als je hulp nodig hebt of een fout in mijn code opmerkt!
Aanbevolen:
Ik heb een oude cd-drive in een wifi-robot gemaakt met behulp van Nodemcu, L298N Motor Drive en nog veel meer: 5 stappen
Ik heb een oude cd-drive in een wifi-robot gemaakt met behulp van Nodemcu, L298N-motoraandrijving en nog veel meer .: VX Robotics & Elektronica Aanwezig
Een Arduino programmeren Een andere Arduino gebruiken om een scrollende tekst weer te geven zonder een bibliotheek - Ajarnpa
Een Arduino programmeren Een andere Arduino gebruiken om een scrollende tekst weer te geven zonder een bibliotheek: Sony Spresense of Arduino Uno zijn niet zo duur en vereisen niet veel stroom. Als uw project echter beperkingen heeft op het gebied van stroom, ruimte of zelfs budget, kunt u overwegen om Arduino Pro Mini te gebruiken. In tegenstelling tot Arduino Pro Micro, is Arduino Pro Mi
Een While-lus gebruiken om een array in Java te herhalen: 9 stappen
Een While-lus gebruiken om een array in Java te herhalen: Vandaag laat ik u zien hoe u Java kunt gebruiken om een While-lus te maken die kan worden gebruikt om een lijst met getallen of woorden te doorlopen. Dit concept is bedoeld voor beginnende programmeurs en iedereen die Java Loops en arrays snel wil opfrissen
Bouw een amateurradio APRS RX Only IGate met behulp van een Raspberry Pi en een RTL-SDR-dongle in minder dan een half uur - Ajarnpa
Bouw een amateurradio APRS RX Alleen IGate met behulp van een Raspberry Pi en een RTL-SDR-dongle in minder dan een half uur: Houd er rekening mee dat dit nu vrij oud is, dus sommige onderdelen zijn onjuist en verouderd. De bestanden die u moet bewerken, zijn gewijzigd. Ik heb de link bijgewerkt om je de nieuwste versie van de afbeelding te geven (gebruik 7-zip om het te decomprimeren) maar voor volledige instru
Hoe maak je een schijfspinner van een oude cd-drive: 6 stappen
Hoe maak je een schijfspinner van een oude cd-drive: dit leert je hoe je een gemotoriseerde schijfspinner maakt