2014-10-09 3 views
0

나는 FXML 응용 프로그램을 사용하여 궁극적으로 거기에 사용될 다른 응용 프로그램에 텍스트 파일을 보내는 간단한 UI를 만들려고합니다. 이 탭 창에서 첫 번째 탭을 사용하는 나의 목표는 사용자가 자신의 그룹 이름을 입력하고 기본적으로 입력 한 모든 그룹 이름 목록에 추가 할 수있게하는 것입니다. 사용자가 textField에 그룹 이름을 입력하게하고 추가 버튼을 클릭하면 그룹 이름이 textArea로 이동 한 다음 새 행으로 이동합니다. 나는 액션 핸들러를 제대로 잡은 것 같지만 프로그램을 실행할 때 아무 것도 나타나지 않기 때문에 테스트 할 수 없다! 어떤 도움을 주시면 감사하겠습니다.JavaFX 탭 창이 나타나지 않습니다.

자바 코드 :

package pipeline.ui; 

import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 

/** 
* 
* @author Pat 
*/ 
public class PipelineUI extends Application { 

    @Override 
    public void start(Stage stage) throws Exception { 
     Parent root = FXMLLoader.load(getClass().getResource("PipelineUI.fxml")); 

     Scene scene = new Scene(root, 1000, 1000); 

     stage.setTitle("Pipeline Welcome"); 
     stage.setScene(scene); 
     stage.show(); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 

} 

컨트롤러 코드 :

package pipeline.ui; 

import java.net.URL; 
import java.util.ResourceBundle; 
import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.control.Button; 
import javafx.scene.control.Label; 
import javafx.scene.control.Tab; 
import javafx.scene.control.TextArea; 
import javafx.scene.control.TextField; 

/** 
* 
* @author Pat 
*/ 
public class PipelineUIController implements Initializable { 

    private Label label; 
    @FXML 
    private Tab groupsTab; 
    @FXML 
    private Button addGroup; 
    @FXML 
    private Button removeGroup; 
    @FXML 
    private Button proceedButton1; 
    @FXML 
    public TextArea groupsList; 
    @FXML 
    private TextField groupName; 
    private static final String newline = "\n"; 

    public void handleButtonAction(ActionEvent event) { 
     if (groupName.getText() != "") 
     { 
      String name = groupName.getText(); 
      groupsList.appendText(name); 
      groupsList.appendText(newline); 
     } 
    } 

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 
     // TODO 
    }  

} 

FXML 코드 : 누군가가 도움이 될 수 있다면 그 모두가 필요했지만, 경우

<?xml version="1.0" encoding="UTF-8"?> 

<?import javafx.scene.text.*?> 
<?import java.lang.*?> 
<?import java.util.*?> 
<?import javafx.scene.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 

<TabPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity"  prefHeight="1000.0" prefWidth="1000.0" tabClosingPolicy="UNAVAILABLE"  xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8"  fx:controller="pipeline.ui.PipelineUIController"> 
    <tabs> 
    <Tab fx:id="groupsTab" text="Experimental Groups"> 
     <content> 
     <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0"> 
       <children> 
        <Button fx:id="addGroup" layoutX="253.0" layoutY="100.0"  mnemonicParsing="false" onMouseClicked="handleButtonAction" text="Add Group &gt;&gt;" /> 
        <Button fx:id="removeGroup" layoutX="242.0" layoutY="173.0"  mnemonicParsing="false" text="&lt;&lt; Remove Group" /> 
        <Button fx:id="proceedButton1" layoutX="534.0" layoutY="332.0"  mnemonicParsing="false" text="OK" /> 
        <TextArea fx:id="groupsList" layoutX="367.0" layoutY="86.0" prefHeight="200.0"  prefWidth="200.0" /> 
        <TextField fx:id="groupName" layoutX="77.0" layoutY="100.0" /> 
        <Text layoutX="77.0" layoutY="82.0" strokeType="OUTSIDE" strokeWidth="0.0"  text="Add experimental groups to be examined:" /> 
       </children></AnchorPane> 
     </content> 
    </Tab> 
    <Tab text="Untitled Tab 2"> 
     <content> 
     <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" /> 
     </content> 
    </Tab> 
    </tabs> 
</TabPane> 

확실하지 않음 나 여기 정말 고마워. 감사!

답변

1

FXML에 오류가 있기 때문에 이것은 나를 위해 실행되지 않습니다. addGroup 버튼의 핸들러는 "#handleButtonAction"이어야합니다 ("#"은 컨트롤러에 속하며 스크립트임을 나타냄). 이 파라미터 인 것에 핸들러 메소드가 ActionEvent 걸리므

또한, 그것은

onAction="#handleButtonAction" 

(되지 onMouseClicked)이어야한다.

+0

답변을 upvote 할 수는 없지만 도움이되었습니다. 감사합니다. –

+0

반갑습니다. 질문에 답한 경우 대답을 수락 할 수 있습니다 (upvote 할 수없는 경우에도). 앞으로 코드를 실행할 때 예외가 발생한다면 그렇게 말하고 스택 추적을 질문의 일부로 게시해야합니다. –

관련 문제