javaFx + ApachePoi

0

Cześć, jestem początkujący jeśli chodzi o programowanie i mam problem z którym sobie nie radze.

class Okno

public class Okno implements Initializable {

    @FXML
    private TextField imieAdd;
    @FXML
    private  TextField nazwiskoAdd;
    @FXML
    private TextField plecAdd;
    @FXML
    private ListView<Osoba> lv;
    @FXML
    private TextArea textAdd;
    @FXML
            private Button usun;


    ObservableList l= FXCollections.observableArrayList();

    public void dodawanie(ActionEvent actionEvent) {
        //textAdd.setText("");
        String firstName = imieAdd.getText();
        String lastName = nazwiskoAdd.getText();
        int sex = Integer.parseInt(plecAdd.getText());
        Osoba osoba = new Osoba(firstName,lastName,sex);
        //Osoba osoba2 = new Osoba(firstName, lastName);
        //textAdd.appendText(osoba + "\n");
        lv.getItems().add(osoba);
        imieAdd.setText("");
        nazwiskoAdd.setText("");
        plecAdd.setText("");

    }
    public void usuwanie(ActionEvent actionEvent){
        Osoba clicked = lv.getSelectionModel().getSelectedItem();
        lv.getItems().remove(clicked);


    }


    public void wcisniecie(MouseEvent mouseEvent) {
        Osoba selectedItem = lv.getSelectionModel().getSelectedItem();
            textAdd.setText(selectedItem.getFirstName() + " " + selectedItem.getLastName() + " " + selectedItem.getSex());
            imieAdd.setText(selectedItem.getFirstName());
            nazwiskoAdd.setText(selectedItem.getLastName());
            plecAdd.setText(String.valueOf(selectedItem.getSex()));


        }

    public void tworzenie(ActionEvent actionEvent) {
        Apach apach = new Apach();
        try {
            apach.Apache();
        } catch (IOException e) {
            e.printStackTrace();
        }



    }



    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {

    }

}

class Osoba

public class Osoba {

    final StringProperty firstName = new SimpleStringProperty();
    final StringProperty lastName = new SimpleStringProperty();
    final IntegerProperty sex = new SimpleIntegerProperty();



    public Osoba(String firstName, String lastName, int sex) {
            this.firstName.set(firstName);
            this.lastName.set(lastName);
            this.sex.set(sex);
        }



    //imie
        public String getFirstName () {
            return firstName.get();
        }
        public void setFirstName (String value){
            firstName.set(value);
        }
        public StringProperty firstNameProperty () {
            return firstName;
        }

        //nazwisko

        public String getLastName () {
            return lastName.get();
        }
        public void setLastName (String value){
            lastName.set(value);
        }
        public StringProperty lastNameProperty () {
            return lastName;
        }

        //plec


        public int getSex () {
            return sex.get();
        }

        public void setSex (int value){
            sex.set(value);
        }

        public IntegerProperty sexProperty () {
            return sex;
        }

        @Override
        public String toString () {
            return firstName.get() + " " + lastName.get();
        }

}

class Apach

public class Apach extends Okno {

        private String lol;
        String lolek;
        private int lolus;



        public void Apache() throws IOException {
                String firstName = lol;
                String lastName = lolek ;
                int sex = lolus;
                Osoba osoba = new Osoba(firstName, lastName, sex);




                // Wczytanie gotowego raportu
                FileInputStream fis = new FileInputStream(new File("C://Test2.xlsx"));
                XSSFWorkbook workbook = new XSSFWorkbook(fis);
                XSSFSheet sheet = workbook.getSheetAt(0);

                // Edycja raportu


                XSSFRow row1 = sheet.getRow(4);
                XSSFCell cell1 = row1.getCell(2);
                // cell1.setCellValue(object.getClass());
                cell1.setCellValue("");

                // Data wydania orzeczenia
                XSSFRow row2 = sheet.getRow(5);
                XSSFCell cell2 = row2.getCell(2);
                cell2.setCellValue(osoba.getLastName());

                // Nazwa pliku
                XSSFRow row3 = sheet.getRow(82);
                XSSFCell cell3 = row3.getCell(0);
                cell3.getCellComment();

                // Data zagęszczenia próbki
                XSSFRow row4 = sheet.getRow(11);
                XSSFCell cell4 = row4.getCell(2);
                cell4.setCellValue(lolek);

                // Miejsce pobrania
                XSSFRow row5 = sheet.getRow(14);
                XSSFCell cell5 = row5.getCell(2);
                cell5.setCellValue("WD-76");

                // Zapisanie nowe pliku
                fis.close();
                FileOutputStream fos = new FileOutputStream(new File("C://" + row3.getCell(0) + ".xlsx"));
                workbook.write(fos);
                fos.close();

                System.out.println("Done");
        }

Troche namotałem w tym kodzie przez moje próby, chodzi mi mianowicie o to, żeby po wpisaniu tekstu w któregoś z TextField został on zapisany w tej czesci kodu po nacisnieciu przycisku Utwórz

cell2.setCellValue("");
1

Zgadza się, namotałeś trochę
Kilka formalności.

  • dlaczego dziwaczne i niepotrzebne dziedziczenie Apach extends Okno ? Zmień źródło, z którego się uczysz, to jest chore.
  • nazwa klasy Apach trochę razi, ale nazwa metody Apache jest karygodna. lepszą nazwą klasy by było np ApachePoiProducer i nie musi z niczego dziedziczyć. A nazwa metody to opis tej czynności, sam wymyśl.
  • metoda chyba powinna zawierać argument typu Osoba
  • technicznie: spodziewam się trudności w zapisie w katalogu głównym C:

A pytanie brzmi?

0

Uśmiałem się czytając twoja wypowiedz ze swojej niewiedzy, ale dziękuje za uwagi 😁, ta aplikacja to taki mój mały brudnopis dlatego tez nazwy class niebyły w żaden sposób przemyślane chociaż ucze się przez to złych nawyków. Jak pisałem jestem gdzieś na początku nauki programowania, te extends było działaniem prób i błędów coś na zasadzie coś pamietam ale nie byłem pewny do czego to służy 🤷‍♂️. Chciałbym żeby tekst który wpisze w TextField np „imieAdd” i wciśnięciu przycisku „utwórz” uruchomiło classe „Apach” ( chociaż samo uruchomienie udało mi się” i dodało wpisany tekst do tej classy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1