2017-10-16 12 views
0

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> 

답변

0

당신이 재산 mouseTransparent="true"에서 설정 때문입니다 귀하의 TitledPane.

JavaFX에서 MouseTransparent 속성을 사용하면 노드 과 그의 모든 자식이 마우스 상호 작용을 무시하므로 버튼을 클릭 할 수 없습니다. 그냥 제거하고 작동합니다.

Node - MouseTransparentProperty