Das Event 'hängt' an der Eigenschaft des SelectionModels. Somit hast du nicht wirklich eine Option zu unterscheiden, von wem die Änderung durchgeführt wurde.

lsendrak hat bereits eine Lösung geschrieben. - Allerdings verstehe  ich den 'Doppelaufruf' hierbei nicht:

du hast eine Variable:

boolean changedByUserCode = false;

In deiner Methode wäre es ja:

changedByUserCode = true;
cbo.getSelectionModel().select(0);

In deinem Event kannst du gegenprüfen:

if (changedByUserCode) {
   eventByUserCode();   
} else {
   eventByUI();
}

womit du keinen Doppelaufruf hättest.

Dir scheint diese Form allerdings nicht zu gefallen, daher sehe ich nur zwei Alternativen hierzu:

Du Schreibst selbst eine Ableitung eines SelectionModels, bei denen du direkt eingreifen und unterscheiden kannst, und hier beispielsweise unterschiedliche Properties anbieten, die eine Auswahl zwischen User und UI Event bieten.

Die andere Option: Du überlegst dir, ob dieses entsprechende Ereignis tatsächlich bei der Auswahl der Combobox erfolgen muss, oder ob es hier nicht einen anderen Weg gibt. - Dazu wäre es gut zu erläutern, was hier geschieht.

...zur Antwort

Wie regex schon geschrieben hat, funktioniert das über die ValueFactory. Aber konkret würde ich die ValueFactory aus dem Konstruktor des Spinners verwenden. könnte dann in etwa so aussehen:

int min = 1;

int max = 10;
int defaultValue = 5;
spinner.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(min, max, defaultValue));
...zur Antwort

Synchronisiert ist nur das inkrementieren des Wertes, nicht jedoch die Ausgabe.

lass also bei der increment den synchronized modifier weg, und synchronisiere einfach direkt in deiner Run-Methode:

@Override

public void run() {
for (int i = 0; i < 50; i++) {
synchronized (this) {
inkrementieren();
System.out.println("Kontostand beträgt: " + kontostand);
}
}
}
...zur Antwort

Das kann viele Ursachen haben. - Manchmal sollte jedoch eine beliebige Codeänderung, wie das einfügen eines Leerzeichens reichen, sofern sich nichts am Code oder FXML geändert hat.

Ich habe jz herausgefunden, dass die zweite FXML Datei nicht gefunden wird (IOException wird im try/catch block getriggered), aber wieso wird die erste FXML eingelesen und die zweite nicht?

Wo befindet sich die FXML-Dateien? Innerhalb deiner JAR-Bibliothek? Sprichst du diese ggf. anders an?

Sofern sich die FXML innerhalb deiner JAR-Datei befindet, sprich diese als Ressource an:

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("DeinView.fxml"));
...zur Antwort

Ich gehe mal davon aus, dass du keine IDE sondern wirklich einen Text-Editor nutzen sollst, einfach um die Grundlagen zu verstehen.

Java in Word [..]

Word würde ich nicht als regulären Texteditor zählen, da dieser oftmals die Rechtsschrift korrigiert, was bei Code durchaus fatal sein kann.

Als Texteditor zählt jede Texteingabe-Möglichkeit, mit der du eine einfache Text-Datei  erstellen kannst wie Notepad. Mit Notepad++ hast du natürlich die Premium-Variante, die dir Entsprechende Syntax schon mal farblich anpasst.

Soll ich das nun einfach abtippen und so speichern? Als Textdokument?

Richtig. Nur nicht auf die Endung: .txt sondern .java.

Außerdem sollen wir das Programm mit javac übersetzen und starten.

Damit ist gemeint dass dein Sourcecode in Maschinencode übersetzt wird. Aus der lesbaren Java-Datei wird dann eine für dich unlesbare .class Datei, welche mit der JavaVM gestartet werden kann.

...zur Antwort

Es gibt mehrere Ansätze um deine Idee umzusetzen mit jeweils Vor- und Nachteilen.

Ich habe es momentan in einer Array

Ich gehe davon aus dass das in etwa so aussieht:

Item[] inventory;

Option 1: Du durchläufst deine Array, speicherst jeden Gegenstand, sowie jede Eigenschaft des Gegenstandes die Variabel ist, in eine Datei zeilenweise.

Vorteile: Du siehst die Items in einer Datei klar, das schritt für schritt zu ergänzen wird nicht schwer sein und die Nachvollziehbarkeit ist gegeben.

Nachteil: Umso mehr Eigenschaften deine Klasse hat, umso mehr Code wird es. Dein Wunsch nach 'nicht so leicht einsehbar' kommt nicht vor.

Option 2: Wie Option 1, nur dass du die jeweiligen Werte verschlüsselst, (z.B.  http://www.logikdev.com/2013/08/16/encrypt-and-decrypt-with-java/)

Vorteil: Struktur ist wie bei 1 identisch, nicht lesbar

Nachteil: Nachvollziehbarkeit schwierig. Änderung wäre theoretisch immer noch möglich, aber schwer. - Nachteil der Codelänge ist hier ebenso gegeben.

Option 3: Du speicherst das Laufzeit-Objekt via Serialisierung in eine Datei und liest es entsprechend wieder:  (z.B. https://stackoverflow.com/questions/17293991/how-to-write-and-read-java-serialized-objects-into-a-file)

Vorteil: Sehr wenig Code, Dein Code funktioniert auch wenn das Objekt (Item) neue Eigenschaften erhält, Lesbarkeit und Manipulation ist so gut wie ausgeschlossen.

Nachteil: Änderst du deine Item-Klasse, lassen sich alte (zuvor erstellte) Serialisierte Dateien nicht mehr lesen.

...zur Antwort

Ich selbst nutze kein Greenfoot und kann daher nur mutmaßen.

Sofern es sich bei deiner Klasse um einen Listener handelt, erzeugst du hier eine Endlosschleife. - Da dieser Prozess vermutlich nicht parallel läuft, wird deine Anwendung hier einfach hängen.

Versuch es doch mal ohne die Schleife, also:

while(x==1){

raus.

...zur Antwort

Eigenschaft vom Aufrufendem Objekt?

Dazu müsste das Aufgerufene Objekt die Aufrufende Klasse kennen. Anderenfalls müssten die Eigenschaften an die Aufgerufene Methode übergeben werden, in Form von Parametern.

...zur Antwort

Bei zwei Tagen Java hast du eventuell schon mit der Scanner Klasse zu tun gehabt. Also weißt du bereits wie man Daten via Konsole einliest.

Im aller einfachsten Falle erwartest du eine Eingabe, welche aus zwei Teilen besteht. Beispielsweise "Fach Leerzeichen Note"

Englisch 2

Die Eingabe 'verwertest du', indem du diese in zwei Teile aufteilst. Siehe String#split() .Hierbei teilst du auf in Fach und Note.

Um deine Noten zu Speichern könntest du sogenannte Properties verwenden.

Mithilfe von Properties lässt sich zu einem Schlüssel jeweils ein Wert speichern. - Mehrere Noten könntest du z.B. Strichpunkt-getrennt als Wert speichern:

Englisch    2;1;1;3;
Mathe       3;1;1;2;1;

Die Klasse Properties eigentlich am Anfang sehr gut für Projekte dieser Art, da die hier verfügbaren Methoden vielerlei Funktionsumfang bieten. Auch wird dir die Implementierung vom Speichern und Lesen der Datei abgenommen, bzw. sehr stark vereinfacht:

Properties#store() 
Properties#load()

wären jeweils Methoden zum Laden und Speichern der Informationen einer Datei.

...zur Antwort

Laut deiner Information liegen die beiden Felder direkt übereinander:

            arma.setBounds(180, 200, 100, 20);
assass.setBounds(180, 200, 100, 20);

Das hat dann nichts mit ersetzen zu tun. - Denn du fügst einfach immer neue Comboboxen mittels add an.

Wenn dein Ziel ist, Abhängig von den Werten weitere Comboboxen ein und auszublenden, wäre es trotzdem ratsam zunächst die Comboboxen erstmal anzufügen, aber auch nur pro Ebene:

Spiel und Spiel-Nummer = 2 Comboboxen.


Du könntest eine Map nutzen um zu Überprüfen ob es zu einem Spiel entsprechende Teile gibt und von dort aus weiter arbeiten: "Gibt es Einträge?" - Wenn ja -> Combobox einblenden -> Combobox mit Abhängigen Werten bestücken. Anderenfalls: Combobox ausblenden.

...zur Antwort

Was soll denn das Ziel des Unterfangens für dich sein?

  • Möchtest du deine Programmier-Kenntnisse verbessern? 
  • Möchtest du damit Geld verdienen?
  • Möchtest du daraus weitere Übungsaufgaben ableiten?
  • Willst du ein bestimmtes Problem damit lösen?

Wenn das nicht hervor geht, fällt es schwierig einen guten Tipp abzugeben. 

...zur Antwort

Gute Frage... ich hatte das Problem auf einem Windows 10 PC ebenso - Sofern es sich um dasselbe handelt.

Bei mir war das Problem tatsächlich: Windows 10.

Netbeans basiert selbst basiert auf Java, unter anderem auch der File-Dialog: Und hier hat sich in Java 8 selbst ein "Bug" eingeschlichen: Windows 10 hat für seine UI andere Variablen-Namen, welche von Java dann nicht abgefragt werden können, sodass hier tatsächlich Java dafür verantwortlich ist, dass es kracht.

Kurz um, die Lösung bei mir: das "Windows-Look and Feel" von netbeans umzustellen:

Tools -> Options-> Appearance -> Look and Feel.

Hier von Windows auf etwas anderes umzustellen, z.B. Nimbus.

...zur Antwort

Das Problem lässt sich aus deinem genannten Code nicht heraus lesen.

Speicherst du möglicherweise die Datei wo anders hin?

...zur Antwort

Java 9 ist noch relativ neu.  - Ich selbst habe bisher da noch keinen Blick rein geworfen.

Java 9 wird jedoch auch auf der offiziellen Oracle-Seite angeboten, siehe auch hier:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Es kann sein, dass aus irgendwelchen Kompatibilitäts-Gründen, Java 9 (noch?) nicht unterstützt wird.

Minecraft sollte auf jeden Fall mit Java 8 Update 144 funktionieren.

...zur Antwort

Persönlich bevorzuge ich netbeans weil ich mich darin besser zurecht finde und einen großen funktionsumfang habe. 

Es gibt natürlich noch andere wie: BlueJ, IntelliJ, JavaEditor.

Sofern du die freie Wahl hast, kannst du dir alle mal ansehen und dich dafür entscheiden, was dir am ehesten gefällt.

...zur Antwort

Du hast jedenfalls nicht unrecht.

Ein Interface besitzt Methoden, die nicht ausformuliert werden können(*).

Diese Methoden gelten dann als 'Vorschrift': Möchte man das Interface Nutzen, so muss man durch Implementierung des Interfaces die Methoden ausformulieren.(*1)

Interfaces können nicht von Klassen erben. Sondern nur von weiteren Interfaces.

*1 = Wie bereits von Q86 erwähnt, gibt es mittlerweile die Möglichkeit eine 'Standard-Implementation via 'default' durchzuführen, sodass die Methode nicht explizit nochmal neu ausformuliert werden muss.

...zur Antwort

Du erhälst aus einer Ressource eine URL.

Zwar erhälst du aus der URL einen String via toString() aber keinen mit den der Filechannel etwas anfangen kann.

Versuche es mal mit: getFile();

File file1 = new File(getClass().getResource("background.jpg").getFile());

PS:

Das wird aber nur so lange gut gehen, wie du dich in der Entwicklungsumgebung befindest. 

Wenn du auf Ressourcen aus deiner .jar Zugreifen möchtest, nachdem du eine jar Erstellt hast, wäre es Ratsamer hier lieber mit ressourceAsStream() zu arbeiten.

...zur Antwort

wenn die obige frage gegeben ist , macht es einen unterschied ob ich schreibe [...] oder [...] ?

Ja. - Das macht einen Unterschied.

Die Spitz-Klammern: <> definieren den Generics-Typen.

Demnach wäre die Lösung:

ArrayList<Boolean> eineListe = new ArrayList<>();

Durch Angabe des Generics Typen lassen sich ausschließlich Werte dieses Typen (oder Ableitungen) Anfügen und Abfragen.

Dieses Beispiel:

ArrayList eineListe = new ArrayList();

ohne Angabe des Generics-Typen erlaubt das Anfügen und Abfragen jeden Wertes, welches von Object ableitet (und natürlich auch Werte via Autoboxing).

ArrayList eineListe = new ArrayList<>();

Exakt so geschrieben würde zwar der Compiler nicht meckern, wäre aber hätte keinen Unterschied zur Object Variante.

Die Spitz-klammer auf und zu stehen eigentlich für die Kurzschreibweise dieser deklaration:

ArrayList<Boolean> list = new ArrayList<Boolean>();

Hierbei wurde mit Java7 ermöglicht doppelten Code zu sparen, sodass die Instanz mit <> abgekürzt werden kann. Dies nennt sich Diamond-Interface.

Was natürlich auch nur dann funktioniert, wenn der Typ in der Variable definiert ist (siehe erstes Beispiel).

...zur Antwort

Verwende die Klasse Date();

Erstellst du eine neue Instanz dieser Klasse, ist hier drin das aktuelle Datum und die Aktuelle Uhrzeit gespeichert:

Date now = new Date();

Mittels getTime() erhälst du nun die Millisekunden, die seit dem 01.01. 1970, 00:00:00 bis jetzt vergangen sind.

long startTime = now.getTime();

Anschließend nimmst du dein Ziel-Datum und speicherst auch hier die Zeit in einer Variable. 

Du subtrahierst die Anfangszeit zur Zielzeit und erhälst somit die Differenz zwischen beiden Zeitpunkten in Millisekunden, die du dann wieder in Tage, Stunden, Minuten, Sekunden umrechnen kannst.

...zur Antwort

Es wäre gut wenn du dein Beispiel etwas genauer formulieren würdest.

Geht es dir darum, eine andere Exception zu werfen? Wie bei der Polymorphie kannst du natürlich auch erbende Exceptions werfen:

class MyEx1 extends Exception {}

class MyExA extends MyEx1 {}
class MyExB extends MyEx1 {}

[...]

void testMethod() throws MyEx1 {

  if (!bedingung1Erfuellt) {
     throw new MyExA();
  } else if (!bedingung2Erfuellt) {
     throw new MyExB();
  }
}
...zur Antwort