Hur delar man fält i Java som är ej statiska? - JavaFX

Permalänk

Hur delar man fält i Java som är ej statiska? - JavaFX

Hej!

Jag har två klasser

public class A() private TableView tableView; public TableView getTable(){ return tableView; }

public class B() private TableView tableView; public B(){ tableView = new A().getTable(); } public void tableSize(){ System.out.println(tableView.getItems.size()); }

Hur kan klass B komma åt den privata fältet i klass A? Notera att tableView är inte statisk då JavaFX tillåter inte FXML-kodgenererade fält att vara statiska. När jag kör detta exempel så får jag NullPointerException, vilket betyder att tableView delar inte samma adress i A och B.

Men på något sätt så borde man kunna dela med sig utav icke-statiska fält i JavaFX?

Permalänk
Medlem

Är du säker på att det inte är något annat som är fel?
Testa att dela upp koden i fler rader och se var du får NullPointer

i B så skapa en A, därefter på ny rad getTable() osv. Kolla med if-satser att objekten inte är null.

Permalänk
99:e percentilen
Skrivet av heretic16:

Hej!

Jag har två klasser

public class A() private TableView tableView; public TableView getTable(){ return tableView; }

public class B() private TableView tableView; public B(){ tableView = new A().getTable(); } public void tableSize(){ System.out.println(tableView.getItems.size()); }

Hur kan klass B komma åt den privata fältet i klass A? Notera att tableView är inte statisk då JavaFX tillåter inte FXML-kodgenererade fält att vara statiska. När jag kör detta exempel så får jag NullPointerException, vilket betyder att tableView delar inte samma adress i A och B.

Men på något sätt så borde man kunna dela med sig utav icke-statiska fält i JavaFX?

Ah, ye olde NullPointerException … Felet är väl just "bara" att du inte initierat tableView i A. (Kul liv när typsystemet inte uttrycker det. Kotlin är vad Java borde ha varit.)

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Skrivet av Pake:

Är du säker på att det inte är något annat som är fel?
Testa att dela upp koden i fler rader och se var du får NullPointer

i B så skapa en A, därefter på ny rad getTable() osv. Kolla med if-satser att objekten inte är null.

Det är inget annat som är fel. Jag har testat. Tror du att det går att "kopiera" adressen till en statisk variabel?

Permalänk
Skrivet av Alling:

Ah, ye olde NullPointerException* … Felet är väl just "bara" att du inte initierat tableView i A. (Kul liv när typsystemet inte uttrycker det. Kotlin är vad Java borde ha varit.)

Vad är det som är bra med Kotlin? Ytterligare att programmeringsspråk!? Det räcker med Java, C och HTML/CSS. Då har man exakt allt.

Permalänk
99:e percentilen
Skrivet av heretic16:

Vad är det som är bra med Kotlin?

Att det har en massa bra saker som Java saknar (exempelvis funktioner, på riktigt) och saknar en massa dåliga saker som Java har (till exempel överdrivet mycket boilerplate-kod och ständiga NullPointerExceptions) – allt detta samtidigt som det är designat för att interoperera sömlöst med Java.

Citat:

Ytterligare att programmeringsspråk!? Det räcker med Java, C och HTML/CSS. Då har man exakt allt.

?

Det räcker med assembly.

Om vi ska snacka programmeringsspråk kan jag säga att något av det bästa man kan göra som programmerare är att lära sig ett purely functional språk som Haskell eller Elm. Både Java och C är (åtminstone så som de i regel används) vad jag skulle kalla smärtsamt imperativa (vilket inte ändrar på det faktum att åtminstone det sistnämnda fyller ett viktigt syfte), och det är i regel inte fördelaktigt att bara kunna tänka imperativt (baserat på omfattande egna erfarenheter av programmering under cirka tio års tid). Typsystemen i Java och C är dessutom tämligen rudimentära.

felaktig negation
Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem

Det är inte så enkelt att tableview behöver initieras för att det ska gå att anropa tableView.getItems.size() ?

Vad händer om du gör samma print från klass A?

Visa signatur

CachyOS | 2x1440p 165Hz IPS | 7800X3D | 6950XT | 64GB@6GHz | 2x4TB SN850x

Permalänk
Medlem

@heretic16: Du har som sagt inte initierat tableView, så new A().getTable() kommer så klart returnera null eftersom det är det värdet som tableView har. Du måste stoppa in tableView = new TableView() någonstans för att det ska fungera, lämpligtvis i konstruktorn för A.

Permalänk
Skrivet av Alling:

Att det har en massa bra saker som Java saknar (exempelvis funktioner, på riktigt) och saknar en massa dåliga saker som Java har (till exempel överdrivet mycket boilerplate-kod och ständiga NullPointerExceptions) – allt detta samtidigt som det är designat för att interoperera sömlöst med Java.

?

Det räcker med assembly.

Om vi ska snacka programmeringsspråk kan jag säga att något av det bästa man kan göra som programmerare är att lära sig ett purely functional språk som Haskell eller Elm. Både Java och C är (åtminstone så som de i regel används) vad jag skulle kalla smärtsamt imperativa (vilket inte betyder att åtminstone det sistnämnda fyller ett viktigt syfte), och det är i regel inte fördelaktigt att bara kunna tänka imperativt (baserat på omfattande egna erfarenheter av programmering under cirka tio års tid). Typsystemen i Java och C är dessutom tämligen rudimentära.

Detta är ju leksaksspråk typ som Python. Riktiga program skrivs i tunga språk.

Permalänk
Skrivet av perost:

@heretic16: Du har som sagt inte initierat tableView, så new A().getTable() kommer så klart returnera null eftersom det är det värdet som tableView har. Du måste stoppa in [cmd]tableView = new TableView()[/url] någonstans för att det ska fungera, lämpligtvis i konstruktorn för A.

Jag löse detta nu!

PlotWindow.java

private static TableView staticTableView; @Override public void start(Stage plotStage) throws Exception { Parent plotParent = FXMLLoader.load(getClass().getResource("/SceneBuilderFXML/PlotWindow.fxml")); plotStage.setTitle("Plot Database"); plotStage.setScene(new Scene(plotParent, 640, 400)); plotStage.show(); staticTableView = MainWindow.staticTableView; // Share the same Table View in MainWindow.java }

MainWindow.java

public static TableView staticTableView; @FXML private TableView tableView; @FXML public void initialize(){ MainWindow.staticTableView = tableView; // For PlotWindow.java }

Permalänk
Medlem

Fast det där är ju statiskt, eller?

Skickades från m.sweclockers.com

Permalänk
Skrivet av Sholdar:

Fast det där är ju statiskt, eller?

Skickades från m.sweclockers.com

Inte tableView. Jag gjorde bara en kopia som delar samma adress. Orsaken är att JavaFX tillåter inte statiska fält om det är genererat med Scene Builder. Scene Builder är ett måste för att skapa grafiska applikationer för Andorid och Windows.

Permalänk
99:e percentilen
Skrivet av heretic16:

Detta är ju leksaksspråk typ som Python.

Inte helt säker på vilka språk du syftar på med "detta", men Haskell har ett av världens mest avancerade typsystem och Elm är kanske det mest väldesignade språket för webbappar som finns (för att inte tala om currying by default och immutability, som båda har, och som i mina ögon är två egenskaper som ligger långt ifrån "leksaksnivå"). I synnerhet Haskell är i princip ren matematik.

Kan faktiskt inte förstå vilka likheter du ser med Python, som jag håller med om förtjänar det av dig givna epitetet.

Citat:

Riktiga program skrivs i tunga språk.

En för mig okänd klassificering, måste jag erkänna. Kan du ge exempel på sådana?

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Skrivet av Alling:

Inte helt säker på vilka språk du syftar på med "detta", men Haskell har ett av världens mest avancerade typsystem och Elm är kanske det mest väldesignade språket för webbappar som finns (för att inte tala om currying by default och immutability, som båda har, och som i mina ögon är två egenskaper som ligger långt ifrån "leksaksnivå"). I synnerhet Haskell är i princip ren matematik.

Kan faktiskt inte förstå vilka likheter du ser med Python, som jag håller med om förtjänar det av dig givna epitetet.

Jag har inte sett några stora program som är skrivna i dessa språk.

Citat:

En för mig okänd klassificering, måste jag erkänna. Kan du ge exempel på sådana?

Nix. Jag har bara lyssnat på vad marknaden kräver. C för hårdvaruprogrammering och C++ för grafik samt Java för applikationer och PHP för servrar.

Jag försökte förklara för en kund att Java går utmärkt att programmera med inbyggda system. Men kunden ville köra allt i C. Jupp, det kostade en del att utveckla Med Java så hade jag endast behövs spendera 30% av tiden.

Permalänk
Medlem
Skrivet av heretic16:

Inte tableView. Jag gjorde bara en kopia som delar samma adress. Orsaken är att JavaFX tillåter inte statiska fält om det är genererat med Scene Builder. Scene Builder är ett måste för att skapa grafiska applikationer för Andorid och Windows.

Jag ser att du använder static lite här och var. Försök undvika det: static är "anti-OOP", och du behöver inte ha det för någon av dina lösningar. Det verkar därtill som om du inte förstår varför du egentligen använder det, vilket är en indikator på att du med stor sannolikhet använder det fel.

Jag skulle gå så långt som att säga att static utan "final"-modifierare inte bara är onödigt utan också farligt. Ur ett kodperspektiv då, inte för din hälsa (såvida du inte bygger mjukvara för tunga maskiner; då är det farligt för bägge delar.)

Visa signatur

Kom-pa-TI-bilitet

Permalänk
99:e percentilen
Skrivet av heretic16:

Jag har inte sett några stora program som är skrivna i dessa språk.

Vilket jag förvisso inte tycker har någon nämnvärd betydelse för huruvida ”leksaksspråk” är en rimlig benämning. Jag bedömer primärt språket som sådant, sedan i andra hand även dess kringliggande ekosystem (vilket i sig förstås korrelerar med hur välanvänt det är).

Kan dock nämna Haxl i sammanhanget. Men framförallt har Haskell haft ovärderliga influenser på många andra, mer utbredda språk, och på programmerares sätt att använda sådana språk.

Citat:

Nix. Jag har bara lyssnat på vad marknaden kräver. C för hårdvaruprogrammering och C++ för grafik samt Java för applikationer och PHP för servrar.

OK. Marknaden är ju i regel trög med den typen av förändringar, men den funktionella snöbollen är i rullning.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Inaktiv
Skrivet av heretic16:

Jag försökte förklara för en kund att Java går utmärkt att programmera med inbyggda system. Men kunden ville köra allt i C. Jupp, det kostade en del att utveckla Med Java så hade jag endast behövs spendera 30% av tiden.

Ursäkta mig, men om du faktiskt programmerar för kunder så förstår jag att han inte ville köra java... Du verkar ju lägga flera trådar per dag med vad kan se ganska elementära frågor och har en inställning till alla språk utom java som inte kan liknas nånting annat än extrem fanboyism och inte objektivt eller lösningsorienterat (som är den inställning programmerare brukar ha när de angriper ett projekt).

Jag som beställare av system... skiter fullständigt i tid eller pris (eller ja till en viss gräns då), utan det är funktion, stabilitet och säkerhet som är det viktiga, det blir även oftast billigast i längden. Har fått intrycket av att du ska föröka utveckla produkter för industriella-system, låter imo som du är ute på galet djupt vatten...

Permalänk
Skrivet av Teknocide:

Jag ser att du använder static lite här och var. Försök undvika det: static är "anti-OOP", och du behöver inte ha det för någon av dina lösningar. Det verkar därtill som om du inte förstår varför du egentligen använder det, vilket är en indikator på att du med stor sannolikhet använder det fel.

Jag skulle gå så långt som att säga att static utan "final"-modifierare inte bara är onödigt utan också farligt. Ur ett kodperspektiv då, inte för din hälsa (såvida du inte bygger mjukvara för tunga maskiner; då är det farligt för bägge delar.)

Intressant! Så hur skulle du ha löst detta? Du menar att static är fusk? Varför är javaprogram fyllda med static här och där?

Permalänk
Skrivet av Alling:

OK. Marknaden är ju i regel trög med den typen av förändringar, men den funktionella snöbollen är i rullning.

Så i framtiden så är det icke OOP som är det mest attraktiva? Kan det inte ha med att folk förstår sig ej på OOP? Jag menar, fulprogrammerare finns det gott om.

Permalänk
Skrivet av anon75480:

Ursäkta mig, men om du faktiskt programmerar för kunder så förstår jag att han inte ville köra java... Du verkar ju lägga flera trådar per dag med vad kan se ganska elementära frågor och har en inställning till alla språk utom java som inte kan liknas nånting annat än extrem fanboyism och inte objektivt eller lösningsorienterat (som är den inställning programmerare brukar ha när de angriper ett projekt).

Jag som beställare av system... skiter fullständigt i tid eller pris (eller ja till en viss gräns då), utan det är funktion, stabilitet och säkerhet som är det viktiga, det blir även oftast billigast i längden. Har fått intrycket av att du ska föröka utveckla produkter för industriella-system, låter imo som du är ute på galet djupt vatten...

Nu jobbar jag inte mot industri när det kommer till mina PC-programmeringar. Men det händer att jag bygger system för automation, men då är det PLC baserade system jag köper in då dem går fortare att jobba med än att skriva kod i Java.

Permalänk
Medlem
Skrivet av heretic16:

Detta är ju leksaksspråk typ som Python. Riktiga program skrivs i tunga språk.

Ja fast det är inte riktigt sant, ibland har man inte behov av att manuellt allokera minne utan Javas garbage collector fungerar utmärkt.

Jag kodar uteslutande i Java i arbetet, och det är ändå relativt stora system jag jobbar med.

Angående din fråga, du får nullpointer för att du aldrig initierar tableview, så getSize har inget värde

Visa signatur

Stationär: Core i9 13900k | Asus X790 ROG Strix Gaming-F | 32GB DDR5 | GeForce RTX 5090 | Lian Li PC-O11 dynamic evo
Laptop: Macbook Pro 16" | Apple M1 Max

Permalänk
Medlem
Skrivet av heretic16:

Intressant! Så hur skulle du ha löst detta? Du menar att static är fusk? Varför är javaprogram fyllda med static här och där?

Static är inte fusk, men det kan användas fel. I ditt exempel blir det fel så snart "klass PlotWindow" används på mer än ett ställe eftersom den andra instansen som skapas kommer skriva över TableViewen. Du kommer alltså inte kunna ha två "PlotWindow"-komponenter igång samtidigt.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av heretic16:

Nix. Jag har bara lyssnat på vad marknaden kräver. C för hårdvaruprogrammering och C++ för grafik samt Java för applikationer och PHP för servrar.

Jag noterar att du helt utelämnar JS från din lista över "vad marknaden kräver", har du någon särskild anledning eller är det så uppenbart att frågan är dum? Vad får C# för "betyg", hamnar det under leksaksspråk det med?

Skulle gärna veta vart du hittar kunder för din programmering? Deras krav verkar obefintliga och med det som extrajobb på sidan av kan man ju inte behöva lägga många timmar på för en månadslön till?

Permalänk
Skrivet av Teknocide:

Static är inte fusk, men det kan användas fel. I ditt exempel blir det fel så snart "klass PlotWindow" används på mer än ett ställe eftersom den andra instansen som skapas kommer skriva över TableViewen. Du kommer alltså inte kunna ha två "PlotWindow"-komponenter igång samtidigt.

Okej!

Så hur tycker du att jag ska göra? Getters och setters för att kommunicera mellan klasserna?

Permalänk
99:e percentilen
Skrivet av heretic16:

Intressant! Så hur skulle du ha löst detta? Du menar att static är fusk? Varför är javaprogram fyllda med static här och där?

Det är inget fel med static, men det gäller att man förstår dess syfte inom OOP. Här är några exempel (med väldigt primitiv affärslogik) på när static är både lämpligt och det enda lämpliga:

import java.util.regex.Pattern; public class Person { private static final int MAX_AGE = 125; private static final Pattern NAME_REGEX = Pattern.compile("\\w+"); private static final String DEFAULT_NAME = "John Smith"; private final int age; private final String name; public Person(String name, int age) { this.age = Math.max(0, Math.min(MAX_AGE, age)); this.name = isValidName(name) ? name : DEFAULT_NAME; } public static boolean isValidName(String name) { return NAME_REGEX.matcher(name).matches(); } }

age och name kan inte vara static, för vi vill kunna modellera att varje person har en egen ålder och ett eget namn. Men MAX_AGE, NAME_REGEX, DEFAULT_NAME och isValidName är uppenbart static, för de är endast relaterade till klassen Person, inte till någon instans.

Skrivet av heretic16:

Så i framtiden så är det icke OOP som är det mest attraktiva?

Jag tror och hoppas att OOP är på en nedåtgående trend. Det finns säkert områden där det verkligen är bra, men det finns också väldigt många där det antingen missbrukas eller där koden blir alltför komplex att förstå (inte minst på grund av statefulness) även om allt görs "rätt" (enligt OOP).

Citat:

Kan det inte ha med att folk förstår sig ej på OOP? Jag menar, fulprogrammerare finns det gott om.

Så är det absolut, och det blir tydligt inte minst i just OOP-kod, där state tyvärr ofta missbrukas ad absurdum.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Datavetare
Skrivet av heretic16:

Så i framtiden så är det icke OOP som är det mest attraktiva? Kan det inte ha med att folk förstår sig ej på OOP? Jag menar, fulprogrammerare finns det gott om.

Om man förstår sig på OOP vet man att det har rätt många begränsningar.

Edsger Dijkstra hade hyfsad koll på datorvetenskap (för att uttrycka det minst sagt milt ), detta är vad han ansåg om OOP:

"Object oriented programs are offered as alternatives to correct ones"

Självklart var det för att spetsa till det hela. Finns fall där OOP är vettigt, men de är faktiskt rätt få och majoriteten av alla ställen det används idag är fel verktyg på fel plats. T.ex. är OOP i princip helt inkompatibelt med program som innehåller mer än en tråd då en av grundbultarna i OOP är inkapsling av det exakta beteendet (vilket nästan alltid då även medför dold data).

En grundförutsättning för att få till korrekt synkronisering data som någonsin under sin livstid kan vara synligt från mer än en tråd är att man explicit kan se hur data är representerat.

Språket Java skulle vi nog må bäst om det började avvecklas (t.ex. till fördel för Kotlin), däremot är plattformen Java högaktuell (d.v.s. standardbibliotek + JVM-definitionen)!

Det skrivet: ingen programmeringsparadigm är svaret på alla problem, därför bör man känna till alla de stora varianterna. Samma sak gäller programspråk, Java trots allt vettigt för en hel del saker men finns en rad domäner där andra språk/plattformar kan lösa problem långt enklare. Övertygad att aldrig skulle hamnat i flera av de gropar du ställ frågor kring här på forumet om du valt ett lite mindre detaljplottrigt språk än Java.

Du kallade Python för leksaksspråk ovan. Håller med om att det inte är lämpligt till mer än lite mindre projekt, upp till ett par tiotusentals rader kod fungerar det dock helt OK enligt min erfarenhet. Är dina projekt större än så (för sådan du frågat om i olika trådar skulle gå att lösa med väsentligt mycket mindre kod i t.ex. Python)?

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Skrivet av Alling:

Det är inget fel med static, men det gäller att man förstår dess syfte inom OOP. Här är några exempel (med väldigt primitiv affärslogik) på när static är både lämpligt och det enda lämpliga:

import java.util.regex.Pattern; public class Person { private static final int MAX_AGE = 125; private static final Pattern NAME_REGEX = Pattern.compile("\\w+"); private static final String DEFAULT_NAME = "John Smith"; private final int age; private final String name; public Person(String name, int age) { this.age = Math.max(0, Math.min(MAX_AGE, age)); this.name = isValidName(name) ? name : DEFAULT_NAME; } public static boolean isValidName(String name) { return NAME_REGEX.matcher(name).matches(); } }

age och name kan inte vara static, för vi vill kunna modellera att varje person har en egen ålder och ett eget namn. Men MAX_AGE, NAME_REGEX, DEFAULT_NAME och isValidName är uppenbart static, för de är endast relaterade till klassen Person, inte till någon instans.

Jag tror och hoppas att OOP är på en nedåtgående trend. Det finns säkert områden där det verkligen är bra, men det finns också väldigt många där det antingen missbrukas eller där koden blir alltför komplex att förstå (inte minst på grund av statefulness) även om allt görs "rätt" (enligt OOP).

Så är det absolut, och det blir tydligt inte minst i just OOP-kod, där state tyvärr ofta missbrukas ad absurdum.

Är detta bra OOP?

public class PlotWindow extends Application { private static SimpleStringProperty simpleStringProperty = new SimpleStringProperty(""); @FXML private TextField axsisXcolumnName; @FXML private TextField axsisYcolumnName; @FXML private ToggleButton areaChartSelectXaxis; @Override public void start(Stage plotStage) throws Exception { Parent plotParent = FXMLLoader.load(getClass().getResource("/SceneBuilderFXML/PlotWindow.fxml")); plotStage.setTitle("Plot Database"); plotStage.setScene(new Scene(plotParent, 640, 400)); plotStage.show(); } @FXML public void initialize(){ simpleStringProperty.addListener(e -> { if(areaChartSelectXaxis.isSelected()){ axsisXcolumnName.setText(simpleStringProperty.getValue()); areaChartSelectXaxis.setSelected(false); } }); } public static void setColumnName(String columnName) { simpleStringProperty.get(); // Need to be here or else it won't work. simpleStringProperty.set(columnName); } }

Vad tror du om detta då?

Först så läses alla fält in.
Sedan körs start(). Där efter körs initialize().

Jag anropar setColumnName() från en annan klass och när värdet uppdateras axsisXcolumnName om toggleknappen areaChartSelectXaxis är aktiverad.

Det jag har gjort är en kolumnväljare. Tryck på en knapp, sedan tryck på kolumn och därmed så skall det finnas en text i ett textfält på en annat fönster.

EDIT:

Väldigt lite kod för en "välj kolumn"-väljare som skickar det till ett textfält automatiskt.

Permalänk
Medlem
Skrivet av heretic16:

Okej!

Så hur tycker du att jag ska göra? Getters och setters för att kommunicera mellan klasserna?

Standardsättet är att man vid skapandet av ett nytt objekt skickar med andra komponenter som objektet behöver för att kunna fylla sin funktion (detta kallas dependency injection.).

Exempel:

public class PlotWindow { final private TableView tableView; public PlotWindow(TableView tableView) { this.tableView = tableView; } }

Det går även att skriva sin klass så att beroenden kan sättas i efterhand, men det är inte lika "snyggt"; det är lätt att på något ställe i sin kod glömma skriva plotWindow.setTableView(tableView); och sedan blir det null-fel när programmet kör och plotWindow försöker arbeta med sin TableView.

Dessvärre blir processen för JavaFX krångligare eftersom vyer laddas in dynamiskt från FXML-filer. En snabb googling visar att många använder sig av Springs dependency injection-ramverk, men det verkar snabbt bli överkurs tyvärr :\

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av Teknocide:

Standardsättet är att man vid skapandet av ett nytt objekt skickar med andra komponenter som objektet behöver för att kunna fylla sin funktion (detta kallas dependency injection.).

Exempel:

public class PlotWindow { final private TableView tableView; public PlotWindow(TableView tableView) { this.tableView = tableView; } }

Det går även att skriva sin klass så att beroenden kan sättas i efterhand, men det är inte lika "snyggt"; det är lätt att på något ställe i sin kod glömma skriva plotWindow.setTableView(tableView); och sedan blir det null-fel när programmet kör och plotWindow försöker arbeta med sin TableView.

Dessvärre blir processen för JavaFX krångligare eftersom vyer laddas in dynamiskt från FXML-filer. En snabb googling visar att många använder sig av Springs dependency injection-ramverk, men det verkar snabbt bli överkurs tyvärr :\

Tack. Detta känner jag till. Jag brukar oftast se klasser som en "typ sammling utav verktyg". Så jag är oftast van med funktionell programmering än objektorienterad programmering.

Jag har svårt att strukturera upp programmet direkt, utan jag brukar mest bara koda och förhoppningsvis så blir det bra. Skämt och sidå. Jag brukar inte planera så mycket vid OOP, utan jag använder de verktyg när jag känner när jag har behov utav det.

JavaFX är både krångligt och lätt. Det är lätt att skapa applikationer men man får vara medveten om att fälten och metoderna i JavaFX kan aldrig vara statiska. Så man får trixa lite med koden för att det ska fungera. Själv älskar jag JavaFX för det sparar så mycket tid.

Hur tyckte du min javalösning var?

Permalänk
Medlem
Skrivet av heretic16:

Hur tyckte du min javalösning var?

Jag ser inte hur du skulle behöva ha static på fältet. Som sagt, det kommer sluta funka om du använder komponenten två gånger.

Skickades från m.sweclockers.com

Visa signatur

Kom-pa-TI-bilitet