java中如何传递参数给控制器_在两个JavaFX控制器之间传递参数

我想单击一列并将单元格索引发送到新阶段。但是我无法将参数(int

clickIndex)传递给另一个控制器EditClientController。我已经尝试了所有方法,但仍然无法正常工作。

主控制器

package controller;

import javafx.collections.FXCollections;

import javafx.collections.ObservableList;

import javafx.event.ActionEvent;

import javafx.event.EventHandler;

import javafx.fxml.FXML;

import javafx.fxml.FXMLLoader;

import javafx.fxml.Initializable;

import javafx.scene.Parent;

import javafx.scene.Scene;

import javafx.scene.control.*;

import javafx.scene.control.cell.PropertyValueFactory;

import javafx.scene.input.MouseEvent;

import javafx.scene.text.Text;

import javafx.stage.Stage;

import javafx.util.Callback;

import model.Table;

import java.io.BufferedReader;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import java.net.URL;

import java.util.ResourceBundle;

public class MainController implements Initializable {

@FXML

TableView

@FXML

TableColumn iLp;

@FXML

TableColumn iCity;

@FXML

TableColumn iDeviceName;

@FXML

TableColumn iSerialNumber;

@FXML

TableColumn iCompanyName;

@FXML

TableColumn iContact;

@FXML

TableColumn iSellDate;

@FXML

TableColumn iWarranty;

@FXML

TableColumn iNextReview;

@FXML

TableColumn iWarrantyTrue;

@FXML

Button addButton;

@FXML

ComboBox warrantyLength;

@FXML

ComboBox nextReview;

@FXML

ComboBox warrantyTrue;

//Define variables

private int iNumber= 1;

public int clickIndex;

//Create table data

ObservableList

//Combo box

final ObservableList warranty = FXCollections.observableArrayList("---",12,24,36);

final ObservableList review = FXCollections.observableArrayList("---","tydzień","miesiąc","2 miesiące", "6 miesięcy");

final ObservableList warrantyTF = FXCollections.observableArrayList("---","tak","nie");

Callback cellFactory2 =

new Callback() {

public TableCell call(TableColumn p) {

final TableCell cell = new TableCell

@Override

public void updateItem(Integer item, boolean empty) {

super.updateItem(item, empty);

setText(empty ? null : getString());

setGraphic(null);

}

private String getString() {

return getItem() == null ? "" : getItem().toString();

}

};

cell.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler() {

@Override

public void handle(MouseEvent event) {

if (event.getClickCount() > 1) {

clickIndex=cell.getIndex();

try {

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("editClient.fxml"));

Parent root1 = (Parent) fxmlLoader.load();

Stage stage = new Stage();

stage.setTitle("Edytuj klienta");

stage.setScene(new Scene(root1));

stage.show();

} catch(Exception e) {

e.printStackTrace();

}

}

}

});

return cell;

}

};

Callback cellFactory =

new Callback() {

public TableCell call(TableColumn p) {

final TableCell cell = new TableCell

private Text text;

@Override

public void updateItem(String item, boolean empty) {

super.updateItem(item, empty);

text = new Text(item);

text.setWrappingWidth(100);

setGraphic(text);

}

private String getString() {

return getItem() == null ? "" : getItem().toString();

}

};

cell.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler() {

@Override

public void handle(MouseEvent event) {

if (event.getClickCount() > 1) {

clickIndex = cell.getIndex();

try {

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("editClient.fxml"));

Parent root1 = (Parent) fxmlLoader.load();

Stage stage = new Stage();

stage.setTitle("Edytuj klienta");

stage.setScene(new Scene(root1));

stage.show();

} catch(Exception e) {

e.printStackTrace();

}

}

}

});

return cell;

}

};

public void setClickedIndex(int click){

this.clickIndex=click;

}

public int getClickIndex(){

return clickIndex;

}

//Plik

public void openFile() {

FileReader plik = null;

int tab0=1;

int tab7=0;

String tab9=null;

try {

plik = new FileReader("dane.txt");

} catch (FileNotFoundException e) {

e.printStackTrace();

}

BufferedReader bfr = new BufferedReader(plik);

String linia = null;

try {

while ((linia = bfr.readLine()) != null) {

String[] tab = linia.split(";");

tab7=Integer.parseInt(tab[7]);

if(tab.length==10) {

if(tab[9].contains(tab[8])){

tab9="Tak";

}else{

tab9="Nie";

}

}

Table tablica = new Table(tab0++, tab[1], tab[2], tab[3], tab[4], tab[5], tab[6], tab7, tab[8], tab9);

data.add(tablica);

}

} catch (Exception e) {

System.out.println("BŁĄD ODCZYTU Z PLIKU!");

System.exit(2);

}

try {

plik.close();

} catch (IOException e) {

System.out.println("BŁĄD PRZY ZAMYKANIU PLIKU!");

System.exit(3);

}

}

public void setData(ObservableList

data=newData;

}

public ObservableList

return data;

}

public void pressButton(ActionEvent event) throws Exception {

try {

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("addClient.fxml"));

Parent root1 = (Parent) fxmlLoader.load();

Stage stage = new Stage();

stage.setTitle("Dodaj klienta");

stage.setScene(new Scene(root1));

stage.show();

} catch(Exception e) {

e.printStackTrace();

}

}

@Override

public void initialize(URL location, ResourceBundle resources) {

openFile();

iLp.setCellValueFactory(new PropertyValueFactory

iCity.setCellValueFactory(new PropertyValueFactory

iDeviceName.setCellValueFactory(new PropertyValueFactory

iSerialNumber.setCellValueFactory(new PropertyValueFactory

iCompanyName.setCellValueFactory(new PropertyValueFactory

iContact.setCellValueFactory(new PropertyValueFactory

iSellDate.setCellValueFactory(new PropertyValueFactory

iWarranty.setCellValueFactory(new PropertyValueFactory

iNextReview.setCellValueFactory(new PropertyValueFactory

iWarrantyTrue.setCellValueFactory(new PropertyValueFactory

iLp.setCellFactory(cellFactory2);

iCity.setCellFactory(cellFactory);

iDeviceName.setCellFactory(cellFactory);

iSerialNumber.setCellFactory(cellFactory);

iCompanyName.setCellFactory(cellFactory);

iContact.setCellFactory(cellFactory);

iSellDate.setCellFactory(cellFactory);

iWarranty.setCellFactory(cellFactory2);

iNextReview.setCellFactory(cellFactory);

iWarrantyTrue.setCellFactory(cellFactory);

tableID.setItems(data);

//comboboxy

warrantyLength.setItems(warranty);

warrantyLength.getSelectionModel().select(0);

nextReview.setItems(review);

nextReview.getSelectionModel().select(0);

warrantyTrue.setItems(warrantyTF);

warrantyTrue.getSelectionModel().select(0);

}

}

EditClientController

package controller;

import javafx.collections.FXCollections;

import javafx.collections.ObservableList;

import javafx.fxml.FXML;

import javafx.fxml.Initializable;

import javafx.scene.control.ComboBox;

import javafx.scene.control.TextField;

import java.net.URL;

import java.util.ResourceBundle;

/**

* Created by Krzysztof on 2015-01-14.

*/

public class EditClientController implements Initializable {

@FXML

ComboBox warrantyLength;

@FXML

TextField city;

public int index;

//Combo box dla okresu gwarancyjnego

final ObservableList warranty = FXCollections.observableArrayList("---", 12, 24, 36);

public void setIndex(int index){

this.index=index;

}

public int getIndex(){

return index;

}

@Override

public void initialize(URL location, ResourceBundle resources) {

// city.setText(tablica.get(index).getRCity());

warrantyLength.setItems(warranty);

warrantyLength.getSelectionModel().select(0);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值