Используя этот код, я получаю данные (данные - это в основном UID моего тега rfid) из comport после нажатия кнопки выборки (представленной в коде doFetch ()).Когда мне нужно получить данные другого тега RFID, мне снова пришлось нажать кнопку выборки.Я хочу, чтобы он работал таким образом, чтобы после нажатия кнопки извлечения он автоматически отображал данные тега rfid при его нажатии, а затем данные другого тега rfid при его нажатии.Означает, что я хочу, чтобы не нажимать кнопку выборки снова и снова.В основном я читаю UID тега rfid из comport, а затем он совпадает с этим UID в базе данных и отображает все данные, связанные с этим UID, в tableView.Я хочу, чтобы это работало для простого нажатия кнопки выборки один раз, а затем я хочу, чтобы оно продолжало отображать данные в tableView при нажатии на теги rfid.
Вот мой код для контроллера:
public class detectController {
@FXML
private ResourceBundle resources;
@FXML
private URL location;
@FXML
private TableView<detectBean> tableView;
@FXML
private TextField txtSTID;
ObservableList<detectBean> list;
public static SerialPort s1;
static String temp="";
static String temp1="";
static void doAlert(String msg)
{
Alert alert=new Alert(AlertType.INFORMATION);
alert.setTitle("Alert..");
alert.setContentText(msg);
alert.show();
}
ObservableList<detectBean> getRecordsFromTableSome(String sID) throws FileNotFoundException
{
list=FXCollections.observableArrayList();
try {
pst=con.prepareStatement("select * from stuRegis where studentID=?");
pst.setString(1, sID);
ResultSet rs= pst.executeQuery();
while(rs.next())
{
String studentID1=rs.getString("studentID");
String studentID = studentID1.substring(1);
String name=rs.getString("name");
String sroll=rs.getString("sroll");
String clas=rs.getString("clas");
String fname=rs.getString("fname");
String contact=rs.getString("contact");
String pic = rs.getString("pic");
FileInputStream photo=new FileInputStream(pic);
Image image1 = new Image(photo, 100, 100, false, false);
Date dob=rs.getDate("dob");
String dobb=dob.toString();
Date dos=rs.getDate("dos");
String doss=dos.toString();
detectBean bean=new detectBean(studentID, name, sroll, clas, fname, contact, new ImageView(image1), dobb, doss );
list.add(bean);
}
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
ObservableList<detectBean> getRecordsFromTable() throws FileNotFoundException
{
list=FXCollections.observableArrayList();
try {
pst=con.prepareStatement("select * from stuRegis");
ResultSet rs= pst.executeQuery();
while(rs.next())
{
String studentID1=rs.getString("studentID");
String studentID = studentID1.substring(1);
String name=rs.getString("name");
String sroll=rs.getString("sroll");
String clas=rs.getString("clas");
String fname=rs.getString("fname");
String contact=rs.getString("contact");
String pic = rs.getString("pic");
FileInputStream photo=new FileInputStream(pic);
Date dob=rs.getDate("dob");
String dobb=dob.toString();
Date dos=rs.getDate("dos");
String doss=dos.toString();
Image image1 = new Image(photo, 100, 100, false, false);
detectBean bean=new detectBean(studentID, name, sroll, clas, fname, contact, new ImageView(image1), dobb, doss);
list.add(bean);
}
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
@FXML
void doDelete(ActionEvent event) {
int selectedIndex = tableView.getSelectionModel().getSelectedIndex();
detectBean asm = (detectBean)tableView.getSelectionModel().getSelectedItem();
String selectedItem = asm.getStudentID();
if (selectedIndex >= 0) {
try {
pst = con.prepareStatement("DELETE FROM stuRegis WHERE studentID = ?");
pst.setString(1, selectedItem);
pst.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tableView.getItems().remove(selectedIndex);
} else {
doAlert("Record deleted successfully");
}
}
@FXML
void doExcel(ActionEvent event) {
try {
writeExcel();
doAlert("Exported to excel..");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void writeExcel() throws Exception {
Writer writer = null;
try {
FileChooser chooser=new FileChooser();
chooser.setTitle("Select Path:");
chooser.getExtensionFilters().addAll(
new FileChooser.ExtensionFilter("All Files", "*.*")
);
File file=chooser.showSaveDialog(null);
String filePath=file.getAbsolutePath();
if(!(filePath.endsWith(".csv")||filePath.endsWith(".CSV")))
{
doAlert("The File name must have .csv extension");
return;
}
file = new File(filePath);
writer = new BufferedWriter(new FileWriter(file));
String text="Student ID, Name, Roll No., Class, Father's Name, Contact No., Date of Birth, Date of Admission\n";
writer.write(text);
for (detectBean p : list)
{
text = p.getStudentID()+ "," +p.getName()+ "," + p.getSroll()+ "," + p.getClas()+ "," + p.getFname()+ "," + p.getContact()+"," + p.getDob()+"," + p.getDos()+"\n";
writer.write(text);
}
} catch (Exception ex) {
ex.printStackTrace();
}
finally {
writer.flush();
writer.close();
}
}
/////////////////////////////////////////////////////
@FXML
void doFetch(ActionEvent event) throws IOException{
//while(true){
String a = recall();
txtSTID.setText(a.substring(1));
ObservableList<detectBean> list=getRecordsFromTableSome(a);
//tableView.setItems(list);
tableView.getItems().addAll(list);
//}
}
@FXML
void doReset(ActionEvent event) {
txtSTID.setText("");
tableView.getItems().clear();
}
@FXML
void doFetchAll(ActionEvent event)throws FileNotFoundException {
ObservableList<detectBean> list=getRecordsFromTable();
tableView.setItems(list);
}
@FXML
void doComClose(ActionEvent event) {
if(s1.closePort()){
doAlert("Port Closed");
System.out.println("Port closed successFully");
}else{
doAlert("Failed to Close Port");
System.out.println("Failed to close port");
}
}
@FXML
void doOpenCom(ActionEvent event) {
port();
}
/////////////////////////////////////////////////////
public static void port()
{
SerialPort[] s=SerialPort.getCommPorts();
for(SerialPort port:s){
System.out.println(""+port.getSystemPortName());
s1=SerialPort.getCommPort(port.getSystemPortName());
if(s1.openPort()){
doAlert("Port Opened");
System.out.println("Port opened successFully ");
}else{
doAlert("Failed to Open Port");
System.out.println("Failed to open port");
}
}
s1.setBaudRate(9600);
s1.n
}
public static String recall() throws IOException
{
InputStream is=s1.getInputStream();
StringBuilder st = new StringBuilder();
for(int i=0,x=0;true;i++){
//for (int i =0;i<11;i++){
st=st.append((char)is.read());
temp1=st.toString();
if(temp1.length()==13)
{ System.out.print(temp1);
//System.out.print(temp);
//System.out.print(temp1.length());
break;
}
System.out.print(temp1);
}
//System.out.print(""+(char)is.read());
temp=temp1.substring(0,11);
System.out.print(temp.length());
System.gc();
return temp;
}
//////////////////////////////////////////////////////
PreparedStatement pst;
Connection con;
@FXML
void initialize() throws IOException, FileNotFoundException {
con=MysqlConnection.doConnect();
TableColumn<detectBean, String> studentID=new TableColumn<detectBean, String>("Student ID");//Dikhava Title
studentID.setCellValueFactory(new PropertyValueFactory<>("studentID"));//bean field name
studentID.setMinWidth(110);
TableColumn<detectBean, String> name=new TableColumn<detectBean, String>("Name");//Dikhava Title
name.setCellValueFactory(new PropertyValueFactory<>("name"));//bean field name
TableColumn<detectBean, String> sroll=new TableColumn<detectBean, String>("Roll No.");//Dikhava Title
sroll.setCellValueFactory(new PropertyValueFactory<>("sroll"));//bean field name
TableColumn<detectBean, String> clas=new TableColumn<detectBean, String>("Class");//Dikhava Title
clas.setCellValueFactory(new PropertyValueFactory<>("clas"));//bean field name
TableColumn<detectBean, String> fname=new TableColumn<detectBean, String>("Father's Name");//Dikhava Title
fname.setCellValueFactory(new PropertyValueFactory<>("fname"));//bean field name
fname.setMinWidth(110);
TableColumn<detectBean, String> contact=new TableColumn<detectBean, String>("Contact No.");//Dikhava Title
contact.setCellValueFactory(new PropertyValueFactory<>("contact"));//bean field name
contact.setMinWidth(90);
TableColumn<detectBean, Image> pic=new TableColumn<detectBean, Image>("Image");//Dikhava Title
pic.setCellValueFactory(new PropertyValueFactory<>("pic"));//bean field name
pic.setMinWidth(110);
TableColumn<detectBean, String> dob=new TableColumn<detectBean, String>("Date of Birth");
dob.setCellValueFactory(new PropertyValueFactory<>("dob"));//field name in bean
dob.setMinWidth(140);
TableColumn<detectBean, String> dos=new TableColumn<detectBean, String>("Date of Admission");
dos.setCellValueFactory(new PropertyValueFactory<>("dos"));//field name in bean
dos.setMinWidth(140);
tableView.getColumns().clear();
tableView.getColumns().addAll(studentID,name,sroll,clas,fname,contact,pic, dob, dos);
}
}