如何在从Javafx的ComboBox中选择项目时在TextField上显示不同的文本? [英] How to Display a different text on a TextField when selecting an Item From a ComboBox in Javafx?
问题描述
所以我想从一个Combobox中选择一个项目,在点击选择的项目后,它应该返回一个不同的文本在javafx中的TextField。我有一个问题,这样做是我的代码
我有一个类型Details的ComboBox,其中我添加了一些细节类
public class Details {
private final StringProperty ministryOfWater;
private final StringProperty ministyOfLands;
public Details(String ministryOfWater,String ministyOfLands){
this.ministryOfWater = new SimpleStringProperty(ministryOfWater);
this.ministyOfLands = new SimpleStringProperty(ministyOfLands);
}
public String getMinistryOfWater(){
return ministryOfWater.get();
}
public void setMinistryOfWater(String ministryOfWater){
this.ministryOfWater.set(ministryOfWater);
}
public StringProperty ministryOfWaterProperty(){
return ministryOfWater;
}
//完成的水服务
public String getMinistyOfLands(){
return ministyOfLands.get();
}
public void setMinistyOfLands(String ministyOfLands){
this.ministyOfLands.set(ministyOfLands);
}
public StringProperty ministyOfLandsProperty(){
return ministyOfLands;
}
//完成土地部门
@Override
public String toString(){
return getMinistryOfWater() + getMinistyOfLands();
}
}
p>
包应用程序;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;
public class SafeguardTrackingToolController implements可初始化{
@FXML
private TextField txtActivity;
@FXML
private TextArea txtComments;
/ * @ FXML
private ComboBox< String> cmbComponent; * /
@FXML
private ComboBox< Details> cmbComponent;
private ObservableList< Details> cmbComponentData = FXCollections.observableArrayList();
@FXML
private TableColumn
tblComponent,
tblActivity,
tableColumnForTor,
tblContract,
tblfirst,
tblFinal,
tblBank,
tblDisclosure,
tblNema,
tblBudgetRe,
tblBUDgetPro,
tblBegin,
tblComments;
@FXML
private TableView< Items> tableViewForExcel;
@FXML
private DatePicker
dateTor,
dateContract,
dateFirstDraft,
dateFinalDraft,
dateBank,
dateDisclosure,
dateNema,
dateBudget,
dateProvided,
dateImplementation;
@FXML
private Button btnAdd,btnReset
,btnCreateAnotherSheet
,btnExcel
,btnDelete;
private final ObservableList< Items> data = FXCollections.observableArrayList(new Items(null,null,null,null,null,null,null,null,null,null,null,null,
@Override
public void initialize(URL location,ResourceBundle resources){
// TODO自动生成方法存根
tblComponent .setCellValueFactory(new PropertyValueFactory(Component));
tblActivity.setCellValueFactory(new PropertyValueFactory(Activity));
tableColumnForTor.setCellValueFactory(new PropertyValueFactory(Torr));
tblContract.setCellValueFactory(new PropertyValueFactory(Contract));
tblfirst.setCellValueFactory(new PropertyValueFactory(FirstDraft));
tblFinal.setCellValueFactory(new PropertyValueFactory(FinalDraft));
tblBank.setCellValueFactory(new PropertyValueFactory(Bank));
tblDisclosure.setCellValueFactory(new PropertyValueFactory(Disclosure));
tblNema.setCellValueFactory(new PropertyValueFactory(Nema));
tblBudgetRe.setCellValueFactory(new PropertyValueFactory(Budget));
tblBudgetPro.setCellValueFactory(new PropertyValueFactory(Provided));
tblBegin.setCellValueFactory(new PropertyValueFactory(Implementation));
tblComments.setCellValueFactory(new PropertyValueFactory(Comment));
cmbComponentData.add(new Details(Ministry of Water,));
cmbComponentData.add(new Details(Ministry of Lands,));
cmbComponentData.add(new Details(Ministry of Minerals,));
cmbComponentData.add(new Details(Ministry of ManKind,));
if(cmbComponent.getSelectionModel()。getSelectedItem()。equals(Ministry of Water)){
txtActivity.setText(1.0.0);
}
cmbComponent.setItems(cmbComponentData);
tableViewForExcel.getItems()。setAll(this.data);
tableViewForExcel.setEditable(true);
}
public static class Items {
// setters和getter应该与简单的字符串属性同名
private final SimpleStringProperty Component;
private final SimpleStringProperty Activity;
private final SimpleStringProperty Torr;
private final SimpleStringProperty Contract;
private final SimpleStringProperty FirstDraft;
private final SimpleStringProperty FinalDraft;
private final SimpleStringProperty Bank;
private final SimpleStringProperty披露;
private final SimpleStringProperty Nema;
private final SimpleStringProperty Budget;
private final SimpleStringProperty提供;
private final SimpleStringProperty实现;
private final SimpleStringProperty注释;
private Item(String Comp,String Act,
String Tor,String Co,
String FDraft,String FinalDra,
String Ban,String Dis,String Nem,
String Bud,String Pro,String Im,String Comm){
this.Component = new SimpleStringProperty(Comp);
this.Activity = new SimpleStringProperty(Act);
this.Torr = new SimpleStringProperty(Tor);
this.Contract = new SimpleStringProperty(Co);
this.FirstDraft = new SimpleStringProperty(FDraft);
this.FinalDraft = new SimpleStringProperty(FinalDra);
this.Bank = new SimpleStringProperty(Ban);
this.Disclosure = new SimpleStringProperty(Dis);
this.Nema = new SimpleStringProperty(Nem);
this.Budget = new SimpleStringProperty(Bud);
this.Provided = new SimpleStringProperty(Pro);
this.Implementation = new SimpleStringProperty(Im);
this.Comment = new SimpleStringProperty(Comm);
}
public String getComponent(){
return Component.get();
}
public void setComponent(String Comp){
Component.set(Comp);
}
public String getActivity(){
return Activity.get();
}
public void setAcivity(String Act){
Activity.set(Act);
}
public String getTorr(){
return Torr.get();
}
public void setTorr(String Tor){
Torr.set(Tor);
}
public String getContract(){
return Contract.get();
}
public void setContract(String Co){
Contract.set(Co);
}
public String getFirstDraft(){
return FirstDraft.get();
}
public void setFirstDraft(String FDraft){
FirstDraft.set(FDraft);
}
public String getFinalDraft(){
return FinalDraft.get();
}
public void setFinalDraft(String FinalDra){
FinalDraft.set(FinalDra);
}
public String getBank(){
return Bank.get();
}
public void setBank(String Ban){
Bank.set(Ban);
}
public String getDisclosure(){
return Disclosure.get();
}
public void setDisclosure(String Dis){
Disclosure.set(Dis);
}
public String getNema(){
return Nema.get()
}
public void setNema(String Nem){
Nema.set(Nem);
}
public String getBudget(){
return Budget.get();
}
public void setBudget(String Bud){
Budget.set(Bud);
}
public String getProvided(){
return Provided.get();
}
public void setProvide(String Pro){
Provided.set(Pro);
}
public String getImplementation(){
return Implementation.get();
}
public void setImplementation(String Im){
Implementation.set(Im);
}
public String getComment(){
return Comment.get();
}
public void setComment(String Comm){
Comment.set(Comm);
}
}
private void write()throws FileNotFoundException,IOException {
try {
文件myFile =新文件(example.xlsx);
final XSSFWorkbook工作簿;
if(myFile.exists()== false){
System.out.println(Creating a new workbook'+ myFile +');
workbook = new XSSFWorkbook();
} else {
System.out.println(追加到现有工作簿+ myFile +');
final InputStream is = new FileInputStream(myFile);
try {
workbook = new XSSFWorkbook(is);
} finally {
is.close();
}
}
int sheetIndex = 1;
while(workbook.getSheet(sample+ sheetIndex)!= null){
sheetIndex ++;
}
XSSFSheet spreadsheet = workbook.createSheet(sample);
XSSFRow row = null;
XSSFCell cell = null;
row = spreadsheet.createRow(0);
cell = row.createCell(0);
cell.setCellValue(Component);
cell = row.createCell(1);
cell.setCellValue(Activity);
cell = row.createCell(2);
cell.setCellValue(TOR);
cell = row.createCell(3);
cell.setCellValue(Contract);
cell = row.createCell(4);
cell.setCellValue(First Draft);
cell = row.createCell(5);
cell.setCellValue(Final Draft);
cell = row.createCell(6);
cell.setCellValue(银行结余);
cell = row.createCell(7);
cell.setCellValue(Disclosure);
cell = row.createCell(8);
cell.setCellValue(NEMA License);
cell = row.createCell(9);
cell.setCellValue(Budget Request& Prepared);
cell = row.createCell(10);
cell.setCellValue(Budget Provided);
cell = row.createCell(11);
cell.setCellValue(Begin& Implementation);
cell = row.createCell(12);
cell.setCellValue(Comments);
int i = 1;
for(Items item:tableViewForExcel.getItems()){
row = spreadsheet.createRow(i);
// row.createCell(0).setCellValue(item.getComponent());
cell = row.createCell(0);
cell.setCellValue(tblComponent.getCellData(1).toString());
cell = row.createCell(1);
cell.setCellValue(tblActivity.getCellData(1).toString());
cell = row.createCell(2);
cell.setCellValue(tableColumnForTor.getCellData(1).toString());
cell = row.createCell(3);
cell.setCellValue(tblContract.getCellData(1).toString());
cell = row.createCell(4);
cell.setCellValue(tblfirst.getCellData(1).toString());
cell = row.createCell(5);
cell.setCellValue(tblFinal.getCellData(1).toString());
cell = row.createCell(6);
cell.setCellValue(tblBank.getCellData(1).toString());
cell = row.createCell(7);
cell.setCellValue(tblDisclosure.getCellData(1).toString());
cell = row.createCell(8);
cell.setCellValue(tblNema.getCellData(1).toString());
cell = row.createCell(9);
cell.setCellValue(tblBudgetRe .getCellData(1).toString());
cell = row.createCell(10);
cell.setCellValue(tblBudgetPro.getCellData(1).toString());
cell = row.createCell(11);
cell.setCellValue(tblBegin.getCellData(1).toString());
cell = row.createCell(12);
cell.setCellValue(tblComments.getCellData(1).toString());
// ....添加其他列数据
i ++;
}
FileOutputStream out = new FileOutputStream(myFile);
workbook.write(out);
out.close();
System.out.println(Data wrtten Successfully);
} catch(Exception e){
e.printStackTrace();
}
}
@FXML
private void onClickToAddOntheTable(ActionEvent event){
tableViewForExcel.getItems()。 add(new Items(
cmbComponent.getValue()。toString(),
txtActivity.getText(),
dateTor.getValue()。toString(),
dateContract.getValue (),
dateFirstDraft.getValue()。toString(),
dateFinalDraft.getValue()。toString(),
dateBank.getValue b $ b dateDisclosure.getValue()。toString(),
dateNema.getValue()。toString(),
dateBudget.getValue()。toString(),
dateProvided.getValue .toString(),
dateImplementation.getValue()。toString(),
txtComments.getText()));
onClickToReset(event);
}
@FXML
private void onClickToSaveInExcel(ActionEvent event){
try {
write ();
} catch(FileNotFoundException e){
// TODO自动生成的catch块
e.printStackTrace();
} catch(IOException e){
// TODO自动生成的catch块
e.printStackTrace();
}
}
@FXML
private void onClickToReset(ActionEvent event){
cmbComponent.setValue(null);
txtActivity.clear();
dateTor.setValue(null);;
dateContract.setValue(null);
dateFirstDraft.setValue(null);
dateFinalDraft.setValue(null);
dateBank.setValue(null);
dateDisclosure.setValue(null);
dateNema.setValue(null);
dateBudget.setValue(null);
dateProvided.setValue(null);
dateImplementation.setValue(null);
txtComments.clear();
}
@FXML
private void onClickToResetTable(ActionEvent event){
tableViewForExcel.getItems()。clear
}
@FXML
private void onClickToCreateAnotherSheet(ActionEvent event){
LoadAnotherSheet();
}
private void LoadAnotherSheet(){
父root = null;
try {
root = FXMLLoader.load(getClass()。getResource(SafeguardTrackingToolNewSheetUI.fxml));
场景scene = new Scene(root);
Stage nStage = new Stage();
nStage.setScene(scene);
//nStage.setMaximized(true);
nStage.setTitle(Another Sheet);
nStage.show();
Stage stage =(Stage)btnCreateAnotherSheet.getScene()。getWindow();
stage.close();
} catch(IOException e){
e.printStackTrace();
}
}
public class Details {
private final StringProperty ministryOfWater;
private final StringProperty ministyOfLands;
public Details(String ministryOfWater,String ministyOfLands){
this.ministryOfWater = new SimpleStringProperty(ministryOfWater);
this.ministyOfLands = new SimpleStringProperty(ministyOfLands);
}
public String getMinistryOfWater(){
return ministryOfWater.get();
}
public void setMinistryOfWater(String ministryOfWater){
this.ministryOfWater.set(ministryOfWater);
}
public StringProperty ministryOfWaterProperty(){
return ministryOfWater;
}
//完成的水服务
public String getMinistyOfLands(){
return ministyOfLands.get();
}
public void setMinistyOfLands(String ministyOfLands){
this.ministyOfLands.set(ministyOfLands);
}
public StringProperty ministyOfLandsProperty(){
return ministyOfLands;
}
//完成土地部门
@Override
public String toString(){
return getMinistryOfWater() + getMinistyOfLands();
}
}
}
如何显示从选定Combobox到此文本字段的不同文本,声明为
TextField txtActivity
i am stuck here
if(cmbComponent.getSelectionModel()。getSelectedItem()。equals(Ministry of Water)){
txtActivity.setText(1.0.0);
}
需要帮助
谢谢!
EDIT
我已经得到这个链接的解决方案
如何设置文本从
中选择一个项目时, >
向值
属性添加侦听器:
cmbComponent.valueProperty()。addListener((observable,oldValue,newValue) - > {
txtActivity.setText(newValue == null?null:newValue.toString());
});
这样, TextField
创建绑定
txtActivity.textProperty ).bind(Bindings.createStringBinding(() - > {
详细信息d = cmbComponent.getValue();
return d == null?null:d.toString();
} ,cmbComponent.valueProperty()));
这样, TextField
不再可编辑
将 TextFormatter
添加到 TextField
h3>
这允许双向绑定。这样,您可以根据 TextField
中的文本输入更改 ComboBox
值。
TextFormatter< Details> formatter = new TextFormatter<>(new StringConverter< Details>(){
@Override
public String toString(Details object){
return object == null? :object.toString();
}
@Override
public Details fromString(String string){
//基于TextField中的String输入返回Details对象
return string == null || string.isEmpty()?null:cmbComponent.getItems()。stream()。filter(d - > string.equals(d.toString()))findAny orElse(null);
}
});
txtActivity.setTextFormatter(formatter);
cmbComponent.valueProperty()。bindBidirectional(formatter.valueProperty());
So i want to get a selected item from a Combobox, after clicking on that selected item it should return a different text on a TextField in javafx. I am having a problem in doing so this is my code
I have a ComboBox of type Details , in which I have added few object of Details Class
public class Details {
private final StringProperty ministryOfWater ;
private final StringProperty ministyOfLands;
public Details(String ministryOfWater, String ministyOfLands) {
this.ministryOfWater = new SimpleStringProperty(ministryOfWater);
this.ministyOfLands = new SimpleStringProperty(ministyOfLands);
}
public String getMinistryOfWater() {
return ministryOfWater.get();
}
public void setMinistryOfWater(String ministryOfWater) {
this.ministryOfWater.set(ministryOfWater);
}
public StringProperty ministryOfWaterProperty() {
return ministryOfWater;
}
//finished ministry of water
public String getMinistyOfLands() {
return ministyOfLands.get();
}
public void setMinistyOfLands(String ministyOfLands) {
this.ministyOfLands.set(ministyOfLands);
}
public StringProperty ministyOfLandsProperty() {
return ministyOfLands;
}
//finished with the ministry of lands
@Override
public String toString() {
return getMinistryOfWater() + " " + getMinistyOfLands();
}
}
this is my full code
package application;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ComboBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;
public class SafeguardTrackingToolController implements Initializable {
@FXML
private TextField txtActivity;
@FXML
private TextArea txtComments;
/*@FXML
private ComboBox<String> cmbComponent;*/
@FXML
private ComboBox<Details> cmbComponent;
private ObservableList<Details> cmbComponentData = FXCollections.observableArrayList();
@FXML
private TableColumn
tblComponent,
tblActivity,
tableColumnForTor,
tblContract,
tblfirst,
tblFinal ,
tblBank,
tblDisclosure,
tblNema,
tblBudgetRe,
tblBudgetPro,
tblBegin,
tblComments;
@FXML
private TableView<Items> tableViewForExcel;
@FXML
private DatePicker
dateTor,
dateContract,
dateFirstDraft,
dateFinalDraft,
dateBank,
dateDisclosure,
dateNema,
dateBudget,
dateProvided,
dateImplementation;
@FXML
private Button btnAdd,btnReset
,btnCreateAnotherSheet
,btnExcel
,btnDelete;
private final ObservableList<Items> data=FXCollections.observableArrayList(new Items(null, null, null, null, null, null, null, null, null, null, null, null, null));
@Override
public void initialize(URL location, ResourceBundle resources) {
// TODO Auto-generated method stub
tblComponent.setCellValueFactory(new PropertyValueFactory("Component"));
tblActivity.setCellValueFactory(new PropertyValueFactory("Activity"));
tableColumnForTor.setCellValueFactory(new PropertyValueFactory("Torr"));
tblContract.setCellValueFactory(new PropertyValueFactory("Contract"));
tblfirst.setCellValueFactory(new PropertyValueFactory("FirstDraft"));
tblFinal.setCellValueFactory(new PropertyValueFactory("FinalDraft"));
tblBank.setCellValueFactory(new PropertyValueFactory("Bank"));
tblDisclosure.setCellValueFactory(new PropertyValueFactory("Disclosure"));
tblNema.setCellValueFactory(new PropertyValueFactory("Nema"));
tblBudgetRe.setCellValueFactory(new PropertyValueFactory("Budget"));
tblBudgetPro.setCellValueFactory(new PropertyValueFactory("Provided"));
tblBegin.setCellValueFactory(new PropertyValueFactory("Implementation"));
tblComments.setCellValueFactory(new PropertyValueFactory("Comment"));
cmbComponentData.add(new Details("Ministry of Water",""));
cmbComponentData.add(new Details("Ministry of Lands",""));
cmbComponentData.add(new Details("Ministry of Minerals", ""));
cmbComponentData.add(new Details("Ministry of ManKind", ""));
if(cmbComponent.getSelectionModel().getSelectedItem().equals("Ministry of Water")){
txtActivity.setText("1.0.0");
}
cmbComponent.setItems(cmbComponentData);
tableViewForExcel.getItems().setAll(this.data);
tableViewForExcel.setEditable(true);
}
public static class Items{
//the setters and getters should be of the same name with the simple string property
private final SimpleStringProperty Component;
private final SimpleStringProperty Activity;
private final SimpleStringProperty Torr;
private final SimpleStringProperty Contract;
private final SimpleStringProperty FirstDraft;
private final SimpleStringProperty FinalDraft;
private final SimpleStringProperty Bank;
private final SimpleStringProperty Disclosure;
private final SimpleStringProperty Nema;
private final SimpleStringProperty Budget;
private final SimpleStringProperty Provided;
private final SimpleStringProperty Implementation;
private final SimpleStringProperty Comment;
private Items(String Comp, String Act,
String Tor, String Co,
String FDraft, String FinalDra,
String Ban, String Dis, String Nem,
String Bud,String Pro, String Im,String Comm) {
this.Component = new SimpleStringProperty(Comp);
this.Activity = new SimpleStringProperty(Act);
this.Torr= new SimpleStringProperty(Tor);
this.Contract= new SimpleStringProperty(Co);
this.FirstDraft = new SimpleStringProperty(FDraft);
this.FinalDraft = new SimpleStringProperty(FinalDra);
this.Bank = new SimpleStringProperty(Ban);
this.Disclosure = new SimpleStringProperty(Dis);
this.Nema= new SimpleStringProperty(Nem);
this.Budget = new SimpleStringProperty(Bud);
this.Provided = new SimpleStringProperty(Pro);
this.Implementation= new SimpleStringProperty(Im);
this.Comment = new SimpleStringProperty(Comm);
}
public String getComponent() {
return Component.get();
}
public void setComponent(String Comp) {
Component.set(Comp);
}
public String getActivity() {
return Activity.get();
}
public void setAcivity(String Act) {
Activity.set(Act);
}
public String getTorr() {
return Torr.get();
}
public void setTorr(String Tor) {
Torr.set(Tor);
}
public String getContract() {
return Contract.get();
}
public void setContract(String Co) {
Contract.set(Co);
}
public String getFirstDraft() {
return FirstDraft.get();
}
public void setFirstDraft(String FDraft) {
FirstDraft.set(FDraft);
}
public String getFinalDraft() {
return FinalDraft.get();
}
public void setFinalDraft(String FinalDra) {
FinalDraft.set(FinalDra);
}
public String getBank() {
return Bank.get();
}
public void setBank(String Ban) {
Bank.set(Ban);
}
public String getDisclosure() {
return Disclosure.get();
}
public void setDisclosure(String Dis) {
Disclosure.set(Dis);
}
public String getNema() {
return Nema.get();
}
public void setNema(String Nem) {
Nema.set(Nem);
}
public String getBudget() {
return Budget.get();
}
public void setBudget(String Bud) {
Budget.set(Bud);
}
public String getProvided() {
return Provided.get();
}
public void setProvide(String Pro) {
Provided.set(Pro);
}
public String getImplementation() {
return Implementation.get();
}
public void setImplementation(String Im) {
Implementation.set(Im);
}
public String getComment() {
return Comment.get();
}
public void setComment(String Comm) {
Comment.set(Comm);
}
}
private void write() throws FileNotFoundException, IOException{
try {
File myFile=new File("example.xlsx");
final XSSFWorkbook workbook;
if (myFile.exists() == false) {
System.out.println("Creating a new workbook '" + myFile + "'");
workbook = new XSSFWorkbook();
}else{
System.out.println("Appending to existing workbook '" + myFile + "'");
final InputStream is = new FileInputStream(myFile);
try {
workbook = new XSSFWorkbook(is);
} finally {
is.close();
}
}
int sheetIndex = 1;
while (workbook.getSheet("sample" + sheetIndex) != null) {
sheetIndex++;
}
XSSFSheet spreadsheet = workbook.createSheet("sample");
XSSFRow row =null;
XSSFCell cell=null;
row= spreadsheet.createRow(0);
cell = row.createCell(0);
cell.setCellValue("Component");
cell = row.createCell(1);
cell.setCellValue("Activity");
cell = row.createCell(2);
cell.setCellValue("TOR");
cell = row.createCell(3);
cell.setCellValue("Contract");
cell = row.createCell(4);
cell.setCellValue("First Draft");
cell = row.createCell(5);
cell.setCellValue("Final Draft");
cell = row.createCell(6);
cell.setCellValue("Bank Clearance");
cell = row.createCell(7);
cell.setCellValue("Disclosure");
cell = row.createCell(8);
cell.setCellValue("NEMA Licence");
cell = row.createCell(9);
cell.setCellValue("Budget Request & Prepared");
cell = row.createCell(10);
cell.setCellValue("Budget Provided");
cell = row.createCell(11);
cell.setCellValue("Begin & Implementation");
cell = row.createCell(12);
cell.setCellValue("Comments");
int i=1;
for(Items item: tableViewForExcel.getItems()){
row= spreadsheet.createRow(i);
// row.createCell(0).setCellValue(item.getComponent());
cell = row.createCell(0);
cell.setCellValue(tblComponent.getCellData(1).toString());
cell = row.createCell(1);
cell.setCellValue(tblActivity.getCellData(1).toString());
cell = row.createCell(2);
cell.setCellValue(tableColumnForTor.getCellData(1).toString());
cell = row.createCell(3);
cell.setCellValue(tblContract.getCellData(1).toString());
cell = row.createCell(4);
cell.setCellValue(tblfirst.getCellData(1).toString());
cell = row.createCell(5);
cell.setCellValue(tblFinal.getCellData(1).toString());
cell = row.createCell(6);
cell.setCellValue(tblBank.getCellData(1).toString());
cell = row.createCell(7);
cell.setCellValue(tblDisclosure.getCellData(1).toString());
cell = row.createCell(8);
cell.setCellValue(tblNema.getCellData(1).toString());
cell = row.createCell(9);
cell.setCellValue(tblBudgetRe .getCellData(1).toString());
cell = row.createCell(10);
cell.setCellValue(tblBudgetPro.getCellData(1).toString());
cell = row.createCell(11);
cell.setCellValue(tblBegin.getCellData(1).toString());
cell = row.createCell(12);
cell.setCellValue(tblComments.getCellData(1).toString());
//.... add other column data as well
i++;
}
FileOutputStream out = new FileOutputStream(myFile);
workbook.write(out);
out.close();
System.out.println("Data is wrtten Successfully");
} catch (Exception e) {
e.printStackTrace();
}
}
@FXML
private void onClickToAddOntheTable (ActionEvent event){
tableViewForExcel.getItems().add(new Items(
cmbComponent.getValue().toString(),
txtActivity.getText(),
dateTor.getValue().toString(),
dateContract.getValue().toString(),
dateFirstDraft.getValue().toString(),
dateFinalDraft.getValue().toString(),
dateBank.getValue().toString(),
dateDisclosure.getValue().toString(),
dateNema.getValue().toString(),
dateBudget.getValue().toString(),
dateProvided.getValue().toString(),
dateImplementation.getValue().toString(),
txtComments.getText()));
onClickToReset(event);
}
@FXML
private void onClickToSaveInExcel (ActionEvent event){
try {
write();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@FXML
private void onClickToReset (ActionEvent event){
cmbComponent.setValue(null);
txtActivity.clear();
dateTor.setValue(null);;
dateContract.setValue(null);
dateFirstDraft.setValue(null);
dateFinalDraft.setValue(null);
dateBank.setValue(null);
dateDisclosure.setValue(null);
dateNema.setValue(null);
dateBudget.setValue(null);
dateProvided.setValue(null);
dateImplementation.setValue(null);
txtComments.clear();
}
@FXML
private void onClickToResetTable (ActionEvent event){
tableViewForExcel.getItems().clear();
}
@FXML
private void onClickToCreateAnotherSheet (ActionEvent event){
LoadAnotherSheet();
}
private void LoadAnotherSheet() {
Parent root = null;
try {
root = FXMLLoader.load(getClass().getResource("SafeguardTrackingToolNewSheetUI.fxml"));
Scene scene = new Scene(root);
Stage nStage = new Stage();
nStage.setScene(scene);
//nStage.setMaximized(true);
nStage.setTitle("Another Sheet");
nStage.show();
Stage stage = (Stage) btnCreateAnotherSheet.getScene().getWindow();
stage.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public class Details {
private final StringProperty ministryOfWater ;
private final StringProperty ministyOfLands;
public Details(String ministryOfWater, String ministyOfLands) {
this.ministryOfWater = new SimpleStringProperty(ministryOfWater);
this.ministyOfLands = new SimpleStringProperty(ministyOfLands);
}
public String getMinistryOfWater() {
return ministryOfWater.get();
}
public void setMinistryOfWater(String ministryOfWater) {
this.ministryOfWater.set(ministryOfWater);
}
public StringProperty ministryOfWaterProperty() {
return ministryOfWater;
}
//finished ministry of water
public String getMinistyOfLands() {
return ministyOfLands.get();
}
public void setMinistyOfLands(String ministyOfLands) {
this.ministyOfLands.set(ministyOfLands);
}
public StringProperty ministyOfLandsProperty() {
return ministyOfLands;
}
//finished with the ministry of lands
@Override
public String toString() {
return getMinistryOfWater() + " " + getMinistyOfLands();
}
}
}
how can i display a different text from selected Combobox to this textfield declared as
TextField txtActivity
i am stuck here
if(cmbComponent.getSelectionModel().getSelectedItem().equals("Ministry of Water")){
txtActivity.setText("1.0.0");
}
need help Thanks!
EDIT
I already got the solution from this link How to set text to a TextField when selecting an Item from a Combobox Javafx?
Depending on your needs you could:
Add a listener to the value
property:
cmbComponent.valueProperty().addListener((observable, oldValue, newValue) -> {
txtActivity.setText(newValue == null ? null : newValue.toString());
});
This way the TextField
will remain editable after selecting the item.
Creating a Binding
txtActivity.textProperty().bind(Bindings.createStringBinding(() -> {
Details d = cmbComponent.getValue();
return d == null ? null : d.toString();
}, cmbComponent.valueProperty()));
This way the TextField
is no longer editable.
Add a TextFormatter
to the TextField
This allows bidirectional binding. This way you could change the ComboBox
value based on the text input in the TextField
.
TextFormatter<Details> formatter = new TextFormatter<>(new StringConverter<Details>() {
@Override
public String toString(Details object) {
return object == null ? "" : object.toString();
}
@Override
public Details fromString(String string) {
// Return Details object based on String input in TextField
return string == null || string.isEmpty() ? null : cmbComponent.getItems().stream().filter(d -> string.equals(d.toString())).findAny().orElse(null);
}
});
txtActivity.setTextFormatter(formatter);
cmbComponent.valueProperty().bindBidirectional(formatter.valueProperty());
这篇关于如何在从Javafx的ComboBox中选择项目时在TextField上显示不同的文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!