Ich mache Twitch Chat mit Twitch API Wrapper und JavaFx. Aber ich habe ein Problem mit der Übergabe von Parametern, wenn ich eine Nachricht im Chat bekomme. Ich habe einen Thread gemacht. Es sollte so funktionieren:Parameter zwischen 2 Klassen übergeben. Javafx
- 1) Ein Programm startet
- 2) Start neue "Aufgabe" (new Thread in main-Methode) einen Bot
- 3) Abrufen einer Nachricht über onMessage Methode zu starten
- 4)
Das Problem, das Etikett zu dem Nachrichtentext zu ändern, ist, dass ich nicht verstehen kann, wie Nachricht String aus onMessage Methode Controller zu übergeben, so kann ich die Text der Bezeichnung ändern.
Hier ist der Code:
Bot Klasse:
public class Bot extends TwitchBot {
public Bot() {
}
public static String message2;
@Override
public void onMessage(User user, Channel channel, String message) throws IOException {
System.out.println("Message is:" + message);
setMessage2(message);
}
private void setMessage2(String message) {
message2 = message;
}
}
Controller.java
public class Controller implements Initializable {
@FXML private Label labelChat;
@FXML private TextArea textArea;
@FXML private GridPane gridPane;
@Override
public void initialize(URL location, ResourceBundle resources) {
System.out.println("MADE");
}
public void messagePrint(String message) {
System.out.println("LABEL!!!");
labelChat.setText(message);
}
}
Main.java
public class Main extends Application {
public static Controller c;
@Override
public void start(Stage primaryStage) throws Exception{
System.out.println("Launched");
// Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
FXMLLoader loader = new FXMLLoader(getClass().getResource("sample.fxml"));
Parent root = loader.load();
Controller c = loader.getController();
Main.c = c;
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 450, 550));
primaryStage.show();
}
public static void main(String[] args) {
TwitchBot bot = new Bot();
bot.connect();
bot.joinChannel("#artek_tv");
Task task = new Task() {
@Override
protected Object call() throws Exception {
bot.start();
return null;
}
};
new Thread(task).start();
Task task2 = new Task() {
@Override
protected Object call() throws Exception {
c.messagePrint(Bot.message2);
return null;
}
};
new Thread(task2).start();
launch(args);
}
}
Sie könnten diese api Schlüssel entfernen möchten ... – corsiKa
Aber sie arbeiten, ich brauche nur irgendwie Dinge richtig machen mit javafx –
Ich glaube, Sie missverstehen mich - Sie wollen nicht, dass jemand Ihre API-Schlüssel stehlen !! – corsiKa