2014-10-09 69 views
0

我想创建一个简单的用户界面使用FXML应用程序的应用程序,最终将文本文件发送到另一个应用程序在那里使用。我在此选项卡窗格中的第一个选项卡的目标是允许用户输入自己的组名,并将它们添加到他们输入的所有组名称列表中。我希望让用户将组名称输入到一个textField中,然后他们单击一个添加按钮,这会将组名称移动到一个textArea然后进入一个新行。我想我已经得到了行动处理程序,但我无法测试它,因为当我运行该程序时,什么也没有显示出来!任何帮助,将不胜感激。JavaFX标签窗格不显示

的Java代码:

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你的答案,但它确实有帮助,谢谢! – 2014-10-10 00:32:15

+0

不客气。如果它回答了你的问题,你可以接受答案(即使你不能高举)。将来,如果您在执行代码时收到异常,则应该这样说,并将堆栈跟踪作为问题的一部分。 – 2014-10-10 11:49:42