Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TableView在javafx中编辑DB表_Java_Database_Javafx_Tableview - Fatal编程技术网

TableView在javafx中编辑DB表

TableView在javafx中编辑DB表,java,database,javafx,tableview,Java,Database,Javafx,Tableview,我已经阅读了所有关于编辑TableView的文章,但是我找不到适合我的案例的解决方案。我提出这个问题是因为我有一个处理记分卡的小应用程序,它是mysql DB表。因此,当我进入编辑TableView的阶段时,每当我按下我想编辑的列时,都不会发生任何事情,更新db的代码也不会发生任何事情,因为我没有更改单元格。下面是我的阶段代码: public class UnosCiljanihVrednosti { static Stage stgAdminAdding = new Stage();

我已经阅读了所有关于编辑TableView的文章,但是我找不到适合我的案例的解决方案。我提出这个问题是因为我有一个处理记分卡的小应用程序,它是mysql DB表。因此,当我进入编辑TableView的阶段时,每当我按下我想编辑的列时,都不会发生任何事情,更新db的代码也不会发生任何事情,因为我没有更改单元格。下面是我的阶段代码:

public class UnosCiljanihVrednosti  {

 static Stage stgAdminAdding = new Stage();

  static private ObservableList<Scb>data1;

  ViewAdmin object=new ViewAdmin();

  public static TableView<Scb> table1;
  static String c1; 
  static TextField perspektiva;
  static TextField cilj;
  static TextField mera;
  static  TextField ciljanavrednost;
  static ComboBox comboBox;
  static ResultSet rs = null;

public static void unosCiljanihVrednosti() {

     BorderPane root = new BorderPane();
      HBox hbox = new HBox();
    Label naslov = new Label("PERFORMANSE-NOVE CILJANE VREDNOSTI");
    naslov.setFont(new Font(24));
    hbox.setAlignment(Pos.CENTER);
    hbox.getChildren().add(naslov);
    hbox.setAlignment(Pos.CENTER);
    Insets ins1 = new Insets(5, 10, 10, 10);
    hbox.setPadding(ins1);






    javafx.scene.layout.VBox vboxMenuAdmin = new javafx.scene.layout.VBox();
    vboxMenuAdmin.setAlignment(Pos.CENTER);
    Insets ins = new Insets(5, 10, 10, 10);
    vboxMenuAdmin.setPadding(ins);
    Button btSacuvaj = new Button("Sačuvaj");
    btSacuvaj.setMinSize(100, 50);
    btSacuvaj.setOnAction((ActionEvent event) -> {
       sacuvaj();
    });

    HBox hboxTabela=new HBox();
    Insets ins3 = new Insets(50,850, 50, 50);
    hboxTabela.setPadding(ins3);
    table1 = new TableView<>();
    data1= FXCollections.observableArrayList();
     loadDataFromDataBase(table1);

    table1.setEditable(true);
    table1.getSelectionModel().setCellSelectionEnabled(true);

    TableColumn<Scb, String> column1=new TableColumn("Perspektiva");
    column1.setMinWidth(350);
    column1.setCellValueFactory(new PropertyValueFactory<>("perspektiva"));


    TableColumn<Scb, String> column2=new TableColumn("Cilj");
    column2.setMinWidth(400);
    column2.setCellValueFactory(new PropertyValueFactory("cilj"));


    TableColumn<Scb, String> column3=new TableColumn("Mera");
    column3.setMinWidth(350);
    column3.setCellValueFactory(new PropertyValueFactory("mera"));

    TableColumn<Scb, Double> column4=new TableColumn("Ciljana Vrednost");
    column4.setMinWidth(400);
    column4.setCellValueFactory(new PropertyValueFactory("ciljanavrednost"));

    table1.getColumns().addAll(column1,column2,column3,column4);


    column4.setOnEditCommit(event -> {
Scb scb = event.getRowValue();
scb.setCiljanavrednost(event.getNewValue());

updateData("ciljanavrednost", event.getNewValue(), scb.getMera());
});

    HBox hbox4=new HBox();
    Insets ins4 = new Insets(50,350, 50, 50);
    hbox4.setPadding(ins4);



    HBox hboxDugmici=new HBox();
      Insets ins2 = new Insets(50, 50, 50, 1450);
    hboxDugmici.setPadding(ins2);
    hboxDugmici.setSpacing(20);
    hboxDugmici.getChildren().addAll(btSacuvaj);

    HBox donjiHBox=new HBox();
    donjiHBox.getChildren().addAll(hboxDugmici);
    //Image logo=new Image("logo.png");
    //ImageView vLogo=new ImageView(logo);
    Button otvaranje = new Button("Dugme");
   // vboxMenuAdmin.getChildren().addAll(btDodavanje, btBrisanje);
   // menu.getChildren().add(menuBar);
    root.setTop(hbox);

    root.setCenter(table1);
    root.setBottom(donjiHBox);
    root.setRight(hbox4);
    Scene scene = new Scene(root, 1920, 1000);

  /*   ViewAdmin.stgAdmin.setTitle("");
    ViewAdmin.stgAdmin.setResizable(false);
    ViewAdmin.stgAdmin.setScene(scene);
    ViewAdmin.stgAdmin.show();
    */
    stgAdminDodavanje.setTitle("");
    stgAdminDodavanje.setResizable(false);
    stgAdminDodavanje.setScene(scene);
    stgAdminDodavanje.show();

}

private static void sacuvaj() {
   stgAdminDodavanje.close();
   ViewAdmin.stgAdmin.show();

}

public static void loadDataFromDataBase(TableView table){
     try {
         Class.forName("com.mysql.jdbc.Driver");
        CONNECTION =DriverManager.getConnection(URL, USERNAME, PASSWORD);
         data1=FXCollections.observableArrayList();
         ResultSet rs= CONNECTION.createStatement().executeQuery("SELECT* FROM bsc");
         while(rs.next()){
             data1.add(new Scb(rs.getString("perspektiva"),rs.getString("cilj"),rs.getString("mera"),rs.getDouble("ciljanavrednost")));
             System.out.println(rs.getString("cilj"));
         }

         CONNECTION.close();

    } catch (ClassNotFoundException | SQLException ex) {
         Logger.getLogger(AzuriranjePostojecihPerformansi.class.getName()).log(Level.SEVERE, null, ex);
     }
     table.setItems(data1);

 }


 public void getRow() {

    TablePosition pos = table1.getSelectionModel().getSelectedCells().get(0);
    int row = pos.getRow();
    TableColumn col = pos.getTableColumn();

    String data1 = (String) col.getCellObservableValue(row).getValue();
    System.out.println(data1);

}
private static void updateData(String column, Double newValue, String id) {
    try (
    Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/cs102-projekat", "root", "");
    PreparedStatement stmt = connection.prepareStatement("UPDATE bsc SET  ciljanavrednost = ? WHERE  mera = ?");
) {

    stmt.setDouble(1, newValue);
    stmt.setString(2, id);
    stmt.execute();
} catch (SQLException ex) {
    System.err.println("Error");
    // if anything goes wrong, you will need the stack trace:
    ex.printStackTrace(System.err);
}
}






}
公共类UnosCiljanihVrednosti{
静态阶段stgAdminAdding=新阶段();
静态私有observeListData1;
ViewAdmin对象=新的ViewAdmin();
公共静态表视图表1;
静态字符串c1;
静态文本字段perspektiva;
静态文本字段cilj;
静态文本字段mera;
静态文本字段ciljanavrednost;
静态组合框组合框;
静态结果集rs=null;
公共静态无效unosCiljanihVrednosti(){
BorderPane根=新的BorderPane();
HBox HBox=新的HBox();
标签naslov=新标签(“PERFORMANSE-NOVE CILJANE VREDNOSTI”);
setFont(新字体(24));
hbox.设置校准(位置中心);
hbox.getChildren().add(naslov);
hbox.设置校准(位置中心);
插图ins1=新插图(5,10,10,10);
hbox.设置填充(ins1);
javafx.scene.layout.VBox vboxMenuAdmin=new javafx.scene.layout.VBox();
vboxMenuAdmin.setAlignment(位置中心);
插图ins=新插图(5,10,10,10);
vboxMenuAdmin.setPadding(ins);
按钮btSacuvaj=新按钮(“Sačuvaj”);
btSacuvaj.setMinSize(100,50);
btSacuvaj.setOnAction((ActionEvent事件)->{
sacuvaj();
});
HBox hboxTabela=新的HBox();
插图ins3=新插图(50850,50,50);
hboxTabela.设置填充(ins3);
table1=新的TableView();
data1=FXCollections.observableArrayList();
loadDataFromDataBase(表1);
表1.可编辑设置(真);
表1.getSelectionModel().setCellSelectionEnabled(true);
TableColumn column1=新的TableColumn(“Perspektiva”);
第1列:设置最小宽度(350);
第1列:setCellValueFactory(新财产价值工厂(“perspektiva”);
TableColumn column2=新的TableColumn(“Cilj”);
第2列:设置最小宽度(400);
第2列:setCellValueFactory(新的PropertyValueFactory(“cilj”);
TableColumn column3=新的TableColumn(“Mera”);
第3列:设置最小宽度(350);
第3列:setCellValueFactory(新财产价值工厂(“mera”);
TableColumn column4=新的TableColumn(“Ciljana Vrednost”);
第4列:设置最小宽度(400);
第4列:setCellValueFactory(新的PropertyValueFactory(“ciljanavrednost”);
表1.getColumns().addAll(第1列、第2列、第3列、第4列);
column4.setOnEditCommit(事件->{
Scb Scb=event.getRowValue();
setCiljanavrednost(event.getNewValue());
updateData(“ciljanavrednost”,event.getNewValue(),scb.getMera());
});
HBox hbox4=新的HBox();
插图ins4=新插图(50350,50,50);
hbox4.设置填充(ins4);
HBox hboxDugmici=新的HBox();
插图ins2=新插图(50,50,50,1450);
hboxDugmici.设置填充(ins2);
hboxDugmici.setspace(20);
hboxDugmici.getChildren().addAll(btSacuvaj);
HBox donjiHBox=新的HBox();
donjiHBox.getChildren().addAll(hboxDugmici);
//图像徽标=新图像(“logo.png”);
//ImageView vLogo=新的ImageView(徽标);
按钮otvaranje=新按钮(“Dugme”);
//vboxMenuAdmin.getChildren().addAll(btDodavanje、btBrisanje);
//menu.getChildren().add(菜单栏);
根.setTop(hbox);
根。设置中心(表1);
根.立根(donjiHBox);
根。设置正确(hbox4);
场景=新场景(root,1920,1000);
/*ViewAdmin.stgAdmin.setTitle(“”);
ViewAdmin.stgAdmin.setResizeable(false);
ViewAdmin.stgAdmin.setScene(场景);
ViewAdmin.stgAdmin.show();
*/
stgAdminDodavanje.setTitle(“”);
stgAdminDodavanje.可设置大小(假);
stgAdminDodavanje.setScene(场景);
stgAdminDodavanje.show();
}
私有静态void sacuvaj(){
stgAdminDodavanje.close();
ViewAdmin.stgAdmin.show();
}
公共静态void loadDataFromDataBase(TableView表){
试一试{
Class.forName(“com.mysql.jdbc.Driver”);
CONNECTION=DriverManager.getConnection(URL、用户名、密码);
data1=FXCollections.observableArrayList();
ResultSet rs=CONNECTION.createStatement().executeQuery(“从bsc选择*);
while(rs.next()){
数据1.add(新的Scb(rs.getString(“perspektiva”)、rs.getString(“cilj”)、rs.getString(“mera”)、rs.getDouble(“ciljanavrednost”);
System.out.println(rs.getString(“cilj”);
}
CONNECTION.close();
}catch(ClassNotFoundException | SQLException ex){
Logger.getLogger(azuriranjepostojecihpperformansi.class.getName()).log(Level.SEVERE,null,ex);
}
表1.集合项目(数据1);
}
public void getRow(){
TablePosition pos=table1.getSelectionModel().getSelectedCells().get(0);
int row=pos.getRow();
TableColumn=pos.getTableColumn();
字符串数据1=(字符串)col.getCellObservableValue(行).getValue();
系统输出打印项次(数据1);
}
私有静态void updateData(字符串列,双newValue,字符串id){
试一试(
Connection Connection=DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/cs102-projekat“,”根“,”);
PreparedStatement stmt=connection.prepareStatement(“更新bsc集ciljanavrednost=?其中mera=?”;
) {
stmt.setDouble(1,新值);
stmt.setString(2,id);
stmt.execute();
}catch(SQLException-ex){
System.err.println(“错误”);
//如果出现任何问题,您将需要堆栈跟踪:
例如printStackTrace(System.err);
}
}
}
试试这个:

column4.setCellFactory(TextFieldTableCell.forTableColumn());
        column4.setOnEditCommit(
                new EventHandler<CellEditEvent<Scb, Double>>() {
            @Override
            public void handle(CellEditEvent<Scb, Double> t) {
                ((Scb) t.getTableView().getItems().get(
                        t.getTablePosition().getRow())).setYourField(t.getNewValue());
            //updateYourData((Scb) t.getRowValue());
            } });
column4.setCellFactory(TextFieldTableCell.forTableColumn());
column4.setOnEditCommit(
新的EventHandler(){
@凌驾
公共无效句柄(CellEditEvent t){
((Scb)t.getTableView().getItems().get(
t、 getTablePosition().getRow()).setYourField(t.getNewValue());