Splash Screen을 사용하여 Scene Builder를 사용하여 프로그램을 작성하는 코드가 혼합되어 있습니다. 앵커 창 맨 위에 TitledPane에 버튼을 만들었습니다. fx : id를 설정하고 실행하면 아무 것도 클릭 할 수 없습니다. 제목이있는 창이나 다른 버튼의 탭조차 없습니다. 재미있는 점은 탭 키로 클릭하여 실제로 마우스를 클릭 할 수 있다는 것입니다. 무슨 일이 벌어지고 어떻게해야합니까?Javafx 및 fxml 버튼을 클릭 할 수 없습니다.
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.animation.FadeTransition;
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.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.TitledPane;
import javafx.scene.layout.AnchorPane;
import javafx.stage.FileChooser;
import javafx.util.Duration;
/** * * @author heecheonpark */ 공용 클래스 FXMLDocumentController이 Initializable {
@FXML
private Label label;
@FXML
private AnchorPane root;
@FXML
private TitledPane tPane;
@FXML
private AnchorPane aPane1;
@FXML
private ListView listView;
@FXML
private Button addBtn;
@FXML
private void addButtonAction(ActionEvent event) {
FileChooser fc = new FileChooser();
File selectedFile = fc.showOpenDialog(null);
if (selectedFile != null){
listView.getItems().add(selectedFile.getName());
}
else{
System.out.println("The file is not valid.");
}
}
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
if (!MajorProject.isSplashLoaded){
loadSplashScreen();
}
}
private void loadSplashScreen(){
try {
AnchorPane aPane = FXMLLoader.load(getClass().getResource("SplashFXML.fxml"));
root.getChildren().addAll(aPane);
FadeTransition fadeIn = new FadeTransition(Duration.seconds(3), aPane);
fadeIn.setFromValue(0);
fadeIn.setToValue(1);
fadeIn.setCycleCount(1);
FadeTransition fadeOut = new FadeTransition(Duration.seconds(3), aPane);
fadeOut.setFromValue(1);
fadeOut.setToValue(0);
fadeOut.setCycleCount(1);
fadeIn.play();
fadeIn.setOnFinished((e) -> {
fadeOut.play();
MajorProject.isSplashLoaded = true;
});
fadeOut.setOnFinished((e) -> {
try {
Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
} catch (IOException ex) {
Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
}
});
} catch (IOException ex) {
Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
}
}
}을 구현
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.effect.*?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane fx:id="root" focusTraversable="true" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="majorproject.FXMLDocumentController">
<children>
<ListView fx:id="listView" layoutX="302.0" layoutY="53.0" prefHeight="304.0" prefWidth="248.0">
<effect>
<Glow />
</effect>
</ListView>
<TitledPane fx:id="tPane" animated="false" mouseTransparent="true" text="Product">
<content>
<AnchorPane fx:id="aPane1">
<children>
<Button layoutY="131.0" mnemonicParsing="true" text="Button" />
<Button fx:id="addBtn" layoutY="104.0" mnemonicParsing="false" onAction="#addButtonAction" text="Add" />
</children>
</AnchorPane>
</content>
</TitledPane>
</children>
</AnchorPane>