【问题标题】:Duration.millis symbol not found? [duplicate]未找到 Duration.millis 符号? [复制]
【发布时间】:2019-08-02 01:25:18
【问题描述】:

我是 JavaFX 新手,尤其是内置 API,即 Timeline

但我想使用时间轴为事件添加一个计时器

                Timeline timeline;
                timeline = new Timeline(new KeyFrame(Duration.millis(2500),
                        (evt) -> {
                            System.out.println("hello");
                        }));
                timeline.setCycleCount(Animation.INDEFINITE);
                timeline.play();

错误:找不到符号 持续时间.毫秒(2500), 符号:方法millis(int) 地点:上课时长 1 个错误

这是它的完整代码,只是想测试时间线的东西来为事件创建一个计时器。

在这种情况下,我尝试添加一个简单的 println "Hello" 以查看它是否有效,但它没有。

import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXPasswordField;
import com.jfoenix.controls.JFXTextField;
import javafx.scene.image.Image;
import java.io.IOException;
import java.net.URL;
import java.time.Duration;
import java.util.ResourceBundle;
import java.util.TimerTask;
import java.util.Timer;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.animation.Animation;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import javafx.stage.Window;
import javax.swing.*;

public class Scene2Controller implements Initializable  {

@FXML
private JFXButton btn_submit;
@FXML
private JFXTextField txt_email;
@FXML
private JFXPasswordField txt_pass;
@FXML
private ImageView img1;
@FXML
private ImageView img2;
@FXML
private Pane pane_loader;

@FXML
private void handleButtonAction(ActionEvent event) throws IOException, Exception {
    if (event.getSource() == btn_submit) {
        if (txt_email.getText().equals("") && txt_pass.getText().equals("")) 
        {
            JOptionPane.showMessageDialog(null, "Please fill in the field", "Error", JOptionPane.ERROR_MESSAGE);
        } 
        else 
        {
            pane_loader.setVisible(true);
            pane_loader.toFront();
            if (txt_email.getText().equals("root") && txt_pass.getText().equals("test1234")) 
            {

                Timeline timeline;
                timeline = new Timeline(new KeyFrame(Duration.millis(2500l),
                        (evt) -> {
                            System.out.println("hello");
                        }));
                timeline.setCycleCount(Animation.INDEFINITE);
                timeline.play();
            }                          

            else 
                JOptionPane.showMessageDialog(null, "Invalid Username or Password", "Error", JOptionPane.ERROR_MESSAGE);
        }

    }
}

@Override
public void initialize(URL url, ResourceBundle rb) {
    // TODO
    Image image = new Image ("/image/business_care_clinic_1282308.jpg");
    Image image2 = new Image ("/image/815.gif");
    img1.setImage(image);
    img2.setImage(image2);

    }
}

【问题讨论】:

  • 为什么你认为java.time.Duration 有一个millis() 方法? 文档,即javadoc,没有列出一个。
  • @Andreas 因为他/她应该使用 Fx 版本的 Duration ... :)
  • 您正在使用wong Duration 类。查看您的导入并使用此one。旁注:在 fx 应用程序线程中使用 swing 是一个糟糕的主意。
  • @kleopatra 天哪,这行得通!因为我对这个时间线的东西很陌生,所以我只是点击了 NetBeans 建议我导入的任何内容,没有意识到它暗示了错误。非常感谢!! :)

标签: java javafx duration milliseconds symbol-not-found


【解决方案1】:

非常感谢@kleopatra 和@Pagbo,我才意识到我导入了错误的类。 我的坏.. :)

import java.time.Duration;

import javafx.util.Duration;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-04
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 2021-12-17
    • 2021-07-18
    • 2014-08-31
    相关资源
    最近更新 更多