2015-02-23 8 views
1

Я новичок в JavaFx, и я просто создал графический интерфейс с использованием JavaFx и файла FXML. Проблема заключается в том, после того, как я вызвать функцию из моего контроллера все текстовые поля сломаться (см pitures)Графический интерфейс JavaFx после события

enter image description here

и после нажатия кнопки он выглядит следующим образом:

enter image description here

здесь мой файл FXML и мой файл контроллера:

<?import java.net.*?> 
<?import javafx.geometry.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 
<?import javafx.scene.text.*?> 
<?import javafx.geometry.Insets?> 
<?import javafx.scene.layout.GridPane?> 
<?import javafx.scene.control.Button?> 
<?import javafx.scene.control.Label?> 
<GridPane fx:controller="sample.Controller" 
      xmlns:fx="http://javafx.com/fxml" alignment="TOP_LEFT" hgap="10" vgap="10"> 
    <padding> 
     <Insets top="20" bottom="20" left="20" right="20" /> 
    </padding> 
    <Text text="Welcome!" 
      GridPane.columnIndex="0" 
      GridPane.rowIndex="0" 
      GridPane.columnSpan="2" 
      /> 
    <Label text="Username: " 
      GridPane.columnIndex="0" 
      GridPane.rowIndex="1" 
      /> 
    <TextField 
      GridPane.columnIndex="1" 
      GridPane.rowIndex="1" 
      /> 
    <Label text="Password: " 
      GridPane.columnIndex="0" 
      GridPane.rowIndex="2" 
      /> 
    <PasswordField 
      GridPane.columnIndex="1" 
      GridPane.rowIndex="2" 
      /> 
    <Button text="Anmelden" 
      GridPane.columnIndex="0" 
      GridPane.rowIndex="3" 
      GridPane.columnSpan="2" 
      onAction="#loginButtonAction" 
      /> 
    <Text fx:id="actionString" 
      GridPane.columnIndex="0" 
      GridPane.rowIndex="4" 
      /> 
</GridPane> 

и мой контроллер r:

package sample; 

import javafx.fxml.FXML; 

import javafx.event.ActionEvent; 
import javafx.scene.text.*; 

public class Controller { 

    @FXML private Text actionString; 

    @FXML protected void loginButtonAction(ActionEvent event){ 
     actionString.setText("You have clicked the login button"); 

    } 

} 

как вы узнали, я использую linux ... так это проблема с ОС или проблема с кодом?

+1

Этикетка «Вы нажали кнопку Войти» влияет на размер столбца макета. Все в порядке в соответствии с созданным вами макетом. – Rekin

+1

http://i.imgur.com/2kYOK4z.png – Rekin

+0

@Rekin Спасибо за ваше объяснение! :-) – YvesHendseth

ответ

1

Текст actionString должен принимать 2 столбца в GridPane.

<Text fx:id="actionString" 
     GridPane.columnIndex="0" 
     GridPane.columnSpan="2" 
     GridPane.rowIndex="4" /> 

Кроме того, если у вас нет причины, чтобы использовать Text, я советую вам использовать Label и установить wrapText, как истинный. Это поможет Автоформата label к new line, если она достигает ширины контейнера

<Label fx:id="actionString" 
     wrapText="true" 
     GridPane.columnIndex="0" 
     GridPane.columnSpan="2" 
     GridPane.rowIndex="4" /> 
Смежные вопросы