如何创建标签,以保持其内容

时间:2015-08-19 18:45:51

标签: javafx tabs

我正在努力创建标签。我希望textFields,标签,按钮等保持在选项卡中的位置。问题是选项卡出现但内容为空。我正在使用fxml,阅读其他帖子,我试图为新标签创建另一个FXML,但我不知道如何。

rellenarCamposMascota方法是我想用dinamically创建标签的地方。

package mrpuppy.controller.cliente;

import java.io.IOException;
 import java.util.Collection;

 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;

 import javafx.event.ActionEvent;
 import javafx.event.EventHandler;
 import javafx.fxml.FXML;
 import javafx.fxml.FXMLLoader;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
 import javafx.scene.control.Button;
 import javafx.scene.control.ComboBox;
 import javafx.scene.control.RadioButton;
 import javafx.scene.control.Tab;
 import javafx.scene.control.TabPane;
 import javafx.scene.control.TextArea;
 import javafx.scene.control.TextField;
 import javafx.scene.layout.BorderPane;
 import javafx.scene.layout.Pane;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 import mrpuppy.DTO.ApplicationContextDTO;
import mrpuppy.entity.Cliente;
import mrpuppy.entity.Mascota;
import mrpuppy.service.ClienteService;

@Controller
public class EditarClienteControllerImpl implements EditarClienteController
 {

private Stage primaryStage;
private Scene scene;
private FXMLLoader loader;
private final String css = this.getClass().getResource("/css/editarCliente.css").toExternalForm();

@Autowired
private ClienteService clienteService;
@Autowired
private ListaClientesController listaClientesController;

private int intTabs=0;
private Tab[] openTabs;

@FXML
private TabPane tabPane;
@FXML
private Tab tabMascota;

@FXML
private TextField fieldNombreCliente;
@FXML
private TextField fieldApellidos;
@FXML
private TextField fieldDni;
@FXML
private TextField fieldTelMovil;
@FXML
private TextField fieldTelFijo;
@FXML
private TextField fieldDireccion;
@FXML
private TextField fieldCorreo;

@FXML
private ComboBox<String> comboMascota;
@FXML
private ComboBox<String> comboTamano;
@FXML
private TextField fieldNombreMascota;
@FXML
private RadioButton radioAlergiaSi;
@FXML
private RadioButton radioAlergiaNo;
@FXML
private TextField fieldRaza;
@FXML
private TextField fieldPeso;
@FXML
private ComboBox<String> comboSexo;
@FXML
private ComboBox<String> comboAgresividad;
@FXML
private TextArea areaObservaciones;

@FXML
private Button buttonCancelarEditarCliente;
@FXML
private Button buttonAceptarEditarCliente;

private ApplicationContextDTO applicationContextDTO;

@Override
public void openWindow(Cliente cliente) 
{
    try
    {
        primaryStage = new Stage();
        primaryStage.setResizable(false);
        loader = new FXMLLoader(getClass().getResource("/view/editarCliente.fxml"));
        loader.setController(this);     //Establecemos esta clase como "controller"
        scene = loader.load();
        scene.getStylesheets().add(css);
        primaryStage.setScene(scene);
        primaryStage.initModality(Modality.APPLICATION_MODAL);
        primaryStage.show();
        rellenarCamposCliente(cliente);
        rellenarCamposMascota(cliente);

        buttonCancelarEditarCliente.setOnAction(new EventHandler<ActionEvent>()
                  {
                        @Override
                        public void handle(ActionEvent event)
                        {
                            primaryStage.close();
                        }
                  });

        buttonAceptarEditarCliente.setOnAction(new EventHandler<ActionEvent>()
                  {
                        @Override
                        public void handle(ActionEvent event)
                        {
                            cliente.setNombre(fieldNombreCliente.getText());
                            cliente.setApellidos(fieldApellidos.getText());
                            cliente.setDni(fieldDni.getText());
                            cliente.setTelefonoMovil(Integer.parseInt(fieldTelMovil.getText()));
                            cliente.setTelefonoFijo(Integer.parseInt(fieldTelFijo.getText()));
                            cliente.setDireccion(fieldDireccion.getText());
                            cliente.setCorreo(fieldCorreo.getText());
                            clienteService.actualizarCliente(cliente);
                            primaryStage.close();
                        }
                  });
    }
    catch(IOException ioe)
    {
        System.out.println(ioe.getMessage());
    }
}


private void rellenarCamposCliente(Cliente cliente)
{
    applicationContextDTO = new ApplicationContextDTO();
    applicationContextDTO.setClienteService();
    clienteService = applicationContextDTO.getClienteService();

    fieldNombreCliente.setText(cliente.getNombre());
    fieldApellidos.setText(cliente.getApellidos());
    fieldDni.setText(cliente.getDni());
    fieldTelMovil.setText(String.valueOf(cliente.getTelefonoMovil()));
    fieldTelFijo.setText(String.valueOf(cliente.getTelefonoFijo()));
    fieldDireccion.setText(cliente.getDireccion());
    fieldCorreo.setText(cliente.getCorreo());

    return; 
}


private void rellenarCamposMascota(Cliente cliente)
{   
    try
    {

            Collection<Mascota> mascotas = cliente.getMascotas();
            for(Mascota mascota : mascotas)
            {
                Tab newTab = new Tab();
                loader = new FXMLLoader(getClass().getResource("/view/mascotaTab.fxml"));
                newTab.setContent(loader.load());
                tabPane.getTabs().add(new Tab());
                fieldNombreMascota.setText(mascota.getNombre());
                fieldRaza.setText(mascota.getRaza());
                comboSexo.setValue(mascota.getSexo());
                fieldPeso.setText(String.valueOf(mascota.getPeso()));
                comboTamano.setValue(mascota.getTamano());
                comboAgresividad.setValue(mascota.getAgresividad());
                areaObservaciones.setText(mascota.getObservaciones());

            }

    }
    catch(IOException ioe)
    {
        System.out.println(ioe.getMessage());
    }


}

}

Cliente选项卡必须是静态的。

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

<?import javafx.collections.FXCollections?>
<?import java.lang.String?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ComboBox?>
 <?import javafx.scene.control.DatePicker?>
 <?import javafx.scene.control.Label?>
 <?import javafx.scene.control.RadioButton?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.ToggleGroup?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.Scene?>


<Scene width="550" height="350" xmlns:fx="http://javafx.com/fxml">
<BorderPane id="root">
    <top>
        <TabPane fx:id="tabPane">
            <tabs>
                <Tab fx:id="tabCliente" text="Cliente" >
                    <content>
                        <AnchorPane fx:id="paneCliente">
                            <VBox fx:id="vBoxBloqueCliente">
                                <children>
                                    <HBox fx:id="hBoxNombreApellidos">
                                        <children>
                                            <Label fx:id="labelNombre" text="Nombre:"/>
                                            <TextField fx:id="fieldNombreCliente"/> 
                                            <Label fx:id="labelApellidos" text="Apellidos:"/>
                                            <TextField fx:id="fieldApellidos"/>         
                                        </children>
                                    </HBox>
                                    <HBox fx:id="hBoxDniMovil">
                                        <children>
                                            <Label fx:id="labelDni" text="DNI:"/>
                                            <TextField fx:id="fieldDni"/>
                                            <Label fx:id="labelTelMovil" text="Teléfono Móvil:"/>
                                            <TextField fx:id="fieldTelMovil"/>
                                        </children>                         
                                    </HBox>
                                    <HBox fx:id="hBoxFijoDireccion">
                                        <children>
                                            <Label fx:id="labelTelFijo" text="Teléfono Fijo:&#10;(opcional)"/>
                                            <TextField fx:id="fieldTelFijo"/>   
                                            <Label fx:id="labelDireccion" text="Dirección:"/>
                                            <TextField fx:id="fieldDireccion"/>                                                                 
                                        </children>
                                    </HBox>
                                    <HBox fx:id="hBoxCorreo">
                                        <children>
                                            <Label fx:id="labelCorreo" text="Correo:"/>
                                            <TextField fx:id="fieldCorreo"/>                                
                                        </children>
                                    </HBox>
                                    <HBox fx:id="hBoxBotonesCliente">
                                        <children>
                                            <Button fx:id="buttonCancelarEditarCliente" text="CANCELAR"/>
                                            <Button fx:id="buttonAceptarEditarCliente" text="CONFIRMAR"/>
                                        </children>
                                    </HBox>
                                </children>
                            </VBox>
                        </AnchorPane>
                    </content>
                </Tab>


                <Tab fx:id="tabMascota" text="Mascota X" >
                    <content>
                        <AnchorPane fx:id="paneEditarMascota">
                            <VBox fx:id="vBoxBloqueEditarMascota">
                                <children>
                                    <HBox fx:id="hBoxMascotaTamano">
                                        <children>
                                            <ComboBox fx:id="comboMascota">
                                                <items>
                                                    <FXCollections fx:factory="observableArrayList">
                                                        <String fx:value="Perro" />
                                                        <String fx:value="Gato" />
                                                    </FXCollections>
                                                </items>
                                                    <value>
                                                        <String fx:value="Seleccionar mascota" />
                                                    </value>
                                            </ComboBox>
                                            <ComboBox fx:id="comboTamano">
                                                <items>
                                                    <FXCollections fx:factory="observableArrayList">
                                                        <String fx:value="Pequeño" />
                                                        <String fx:value="Mediano" />
                                                        <String fx:value="Grande" />
                                                    </FXCollections>
                                                </items>
                                                    <value>
                                                        <String fx:value="Seleccionar tamaño" />
                                                    </value>
                                            </ComboBox>
                                        </children>
                                    </HBox>
                                    <HBox fx:id="hBoxNombreAlergia">
                                        <fx:define>
                                            <ToggleGroup fx:id="groupAlergia"/>
                                        </fx:define>
                                        <children>
                                            <Label fx:id="labelNombreMascota" text="Nombre:"/>
                                            <TextField fx:id="fieldNombreMascota"/>     
                                            <Label fx:id="labelAlergico" text="Alergico:"/>
                                            <RadioButton fx:id="radioAlergiaSi" text="Si" toggleGroup="$groupAlergia"/>
                                            <RadioButton fx:id="radioAlergiaNo" text="No" toggleGroup="$groupAlergia"/>
                                        </children>
                                    </HBox>
                                    <HBox fx:id="hBoxRaza">
                                        <children>
                                            <Label fx:id="labelRaza" text="Raza:"/>
                                            <TextField fx:id="fieldRaza"/>  
                                            <Label fx:id="labelPeso" text="Peso:"/>
                                            <TextField fx:id="fieldPeso"/>                  
                                        </children>
                                    </HBox>
                                    <HBox fx:id="hBoxSexoAgresividad">
                                        <children>
                                            <ComboBox fx:id="comboSexo">
                                                <items>
                                                    <FXCollections fx:factory="observableArrayList">
                                                        <String fx:value="Macho" />
                                                        <String fx:value="Hembra" />
                                                    </FXCollections>
                                                </items>
                                                    <value>
                                                        <String fx:value="Seleccionar sexo" />
                                                    </value>
                                            </ComboBox>
                                            <ComboBox fx:id="comboAgresividad">
                                                <items>
                                                    <FXCollections fx:factory="observableArrayList">
                                                        <String fx:value="Tranquilo" />
                                                        <String fx:value="Nervioso" />
                                                        <String fx:value="Agresivo" />
                                                    </FXCollections>
                                                </items>
                                                    <value>
                                                        <String fx:value="Seleccionar agresividad" />
                                                    </value>
                                            </ComboBox>
                                        </children>
                                    </HBox>
                                    <HBox fx:id="hBoxObservaciones">
                                        <TextArea fx:id="areaObservaciones"/>
                                    </HBox>
                                    <HBox fx:id="hBoxBotonesAnadirMascota">
                                        <Button fx:id="buttonVolverAnadirMascota"/>
                                        <Button fx:id="buttonHomeAnadirMascota"/>
                                        <Button fx:id="buttonAnadirMascota"/>
                                    </HBox>
                                </children>
                            </VBox>
                        </AnchorPane>
                    </content>
                </Tab>
            </tabs>
        </TabPane>
    </top>
</BorderPane>
</Scene>

这是标签fxml文件代码,标签返回错误。我不知道为什么。

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


<?import javafx.collections.FXCollections?>
<?import java.lang.String?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.DatePicker?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.RadioButton?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?>
 <?import javafx.scene.control.ToggleGroup?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.Scene?>


<BorderPane>
<Label fx:id="labelRaza" text="Raza:"/>
</BorderPane>

0 个答案:

没有答案