在JAVA FX中发出警报
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在JAVA FX中发出警报相关的知识,希望对你有一定的参考价值。
我想在尝试创建具有相同名称的文件时已存在文件时显示警报。我还没有完全完成代码。我想从UI中检索按钮值是/否。
码:
这就是控制器的编码方式。
package application;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
import java.util.TreeMap;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
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.stage.Stage;
public class WarningController implements Initializable
@FXML
public Button yes;
@FXML
public Button no;
public static String type;
@Override
public void initialize(URL arg0, ResourceBundle arg1)
// TODO Auto-generated method stub
public String confirmSelection(ActionEvent event)throws IOException
Button button = (Button) event.getSource();
type = button.getText();
if(type.equals("Yes"))
Stage stage = (Stage) yes.getScene().getWindow();
stage.close();
//System.out.println("Yes");
return type;
else
//System.out.println("No");
Stage stage1 = (Stage) no.getScene().getWindow();
stage1.close();
return type;
/********************************************************************************/
public void writesheet(String[][] result,String ComboValue,String[] heading) throws IOException
//Create blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create a blank sheet
XSSFSheet spreadsheet = workbook.createSheet( " Employee Info ");
//Create row object
XSSFRow row;
String[][] towrite=result;
int rows=towrite.length;
//int cols=towrite[0].length;
// System.out.println(rows +" "+ cols);
Map < String, Object[] > empinfo = new TreeMap < String, Object[] >();
empinfo.put("0", heading);
for(int i=1;i<=rows;i++)
empinfo.put( Integer.toString(i),towrite[i-1]);
//Iterate over data and write to sheet
Set < String > keyid = empinfo.keySet();
int rowid = 0;
for (String key : keyid)
row = spreadsheet.createRow(rowid++);
Object [] objectArr = empinfo.get(key);
int cellid = 0;
for (Object obj : objectArr)
Cell cell = row.createCell(cellid++);
//cell.setCellValue((String)obj);
cell.setCellValue(obj.toString());
//Write the workbook in file system
File f=new File(("C:\\"+ComboValue+".xlsx"));
if(f.exists())
Stage primaryStage=new Stage();
Parent root=FXMLLoader.load(getClass().getResource("/application/Warning.fxml"));
Scene scene = new Scene(root,350,150);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
System.out.println(type);
FileOutputStream out = new FileOutputStream(f);
workbook.write(out);
out.close();
System.out.println(ComboValue+" "+"Excel document written successfully" );
workbook.close();
我想在写入功能中使用按钮值(存储在String类型中)。现在它返回NULL。
请建议是否有任何其他方式来显示警告。我正在使用两个fxml文件,这是第二个excel文件。
[1]: http://i.stack.imgur.com/ZK6UC.jpg
答案
只需使用Alert类。它为您需要的大多数是/否对话框提供功能。
Alert alert = new Alert(AlertType.WARNING,
"File already exists. Do you want to override?",
ButtonType.YES, ButtonType.NO);
Optional<ButtonType> result = alert.showAndWait();
if (result.get() == ButtonType.YES)
// ... user chose YES
else
// ... user chose NO or closed the dialog
here也是一个很好的教程。
另一答案
我通常会创建一个方法,如果不满足某些条件,则调用它。例如:
if(condition)
alert();
public void alert() //alert box
Alert alert = new Alert(AlertType.WARNING,"", ButtonType.YES, ButtonType.NO); //new alert object
alert.setTitle("Warning!"); //warning box title
alert.setHeaderText("WARNING!!!");// Header
alert.setContentText("File already exists. Overwrite?"); //Discription of warning
alert.getDialogPane().setPrefSize(200, 100); //sets size of alert box
Optional<ButtonType> result = alert.showAndWait();
if (result.get() == ButtonType.YES)
// ... user chose YES
else
// ... user chose NO or closed the dialog
我从Jhonny007中获取了一些代码,归功于他。
以上是关于在JAVA FX中发出警报的主要内容,如果未能解决你的问题,请参考以下文章