возникла такая проблема. Мне нужно нарисовать график по Машине Тьюринга(зависимость кол-ва шагов от длины слова), когда я пытаюсь его нарисовать из метода initialize() то он рисует корректно
Но как только я пытаюсь сделать так, чтобы график рисовался при нажатии на кнопку, происходит такое
Сам класс, который рисует график
package sample;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.XYChart;
import java.util.HashMap;
public class FourGraphic extends Thread{
LineChart<Number, Number> chart;
HashMap<String, HashMap<Integer, String>> rules;
FourGraphic(LineChart<Number, Number> chart, HashMap<String, HashMap<Integer, String>> rules){
this.chart = chart;
this.rules = rules;
}
public void run(){
System.out.println(Integer.toString(7, 2));
XYChart.Series<Number, Number> series = new XYChart.Series();
series.getData().add(new XYChart.Data(0, 0));
chart.getData().add(series);
int n = 0;
while(true){
int max = 0;
for(long i = (int)Math.pow(2, n); i < Math.pow(2, n+1); i++){
FourRibbersMT mt = new FourRibbersMT(new StringBuffer(Long.toString(i, 2)), rules);
mt.start();
try{
synchronized (mt) {
while(!mt.ready){
mt.wait();
}
}
} catch(InterruptedException e){
e.printStackTrace();
}
synchronized (mt) {
if (mt.getStepsCount() > max) max = mt.getStepsCount();
}
}
series.getData().add(new XYChart.Data<Number, Number>(n + 1, max));
n++;
}
}
}
Метод initalize()
@FXML
public void initialize(){
readSingleRules();
readFourRibbRules();
singleRibbonField.setOnKeyTyped(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
char c = event.getCharacter().charAt(0);
if(((c < '0') || (c > '1')) && c != java.awt.event.KeyEvent.VK_PERIOD && c != 45){
singleRibbonField.deleteText(singleRibbonField.getText().length() - 1, singleRibbonField.getText().length());
}
}
});
fourRibbonField.setOnKeyTyped(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
char c = event.getCharacter().charAt(0);
if(((c < '0') || (c > '1')) && c != java.awt.event.KeyEvent.VK_PERIOD && c != 45){
fourRibbonField.deleteText(fourRibbonField.getText().length() - 1, fourRibbonField.getText().length());
}
}
});
singleStartBtn.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
singleGraphic.getData().clear();
// graph = new SingleGraphic(singleGraphic, singleRules);
FourGraphic graph = new FourGraphic(fourGraphic, fourRibbRules);
graph.start();
stopSingleBtn.setVisible(true);
}
});
}
Подскажите в чем проблема
Наверное поздно, но попробуй создать новый метод. В нём создай поток:
Platform.runLater(()-> {
//код по отрисовке графика
});
Виртуальный выделенный сервер (VDS) становится отличным выбором
Хочу создать приложение-книжкуНа данный момент пришёл к решению использовать HorizontalWebView (нашёл на просторах stackoverflow)
Как известно, Java использует таблицу Unicode для кодировки символовНо при попытке привести символ к int, получается его значение этого символа...
Имеется следующий функционал: при запуске программы открывается стартовый фрейм, в котором пользователю необходимо задать некоторые параметрыПо...
Когда запускаю task gulp-watch в bash , то вылетает ошибка : Error: watching app/sass/**/*sass: watch task has to be a function (optionally generated by using gulp