Следующий код изолирован от довольно сложного бухгалтерского приложения, которое я разрабатываю, но предупреждение компилятора точно такое же, как и при компиляции приложения. Некоторая логика c, необходимая приложению, заключается в том, чтобы гарантировать, что область просмотра TableView начинается с определенной транзакции.
package tabpane2.view;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TablePosition;
import javafx.scene.control.TableView;
import newdawn.model.TxnObject;
public class MainController implements Initializable {
@FXML private Button exitBtn;
@FXML private Button goBtn;
@FXML private TableView<TxnObject> txnTable;
@FXML private TableColumn<TxnObject, String> txnDateCol;
@FXML private TableColumn<TxnObject, String> toFromCol;
private ObservableList<TxnObject> txnData = FXCollections.observableArrayList();
@Override
public void initialize(URL location, ResourceBundle resources) {
txnDateCol.setCellValueFactory(cellData -> cellData.getValue().localtxnDateProperty());
toFromCol.setCellValueFactory(cellData -> cellData.getValue().toFromProperty());
setTableView();
txnTable.setItems(txnData);
}
private void getTablePosition() {
ObservableList<TablePosition> rowvals = txnTable.getSelectionModel().getSelectedCells();
for (int i = 0; i < rowvals.size(); i++) {
TablePosition pos = txnTable.getSelectionModel().getSelectedCells().get(i);
int row = pos.getRow();
TxnObject obj = txnTable.getItems().get(row);
System.out.println("Txn is " + obj.toString());
}
}
private void setTableView(){
txnData.add(new TxnObject("19000101","001","Fred","B","C","D","0.00","0.00","0.00"));
txnData.add(new TxnObject("19000102","001","Lars","B","C","D","0.00","0.00","0.00"));
txnData.add(new TxnObject("19000102","002","Bertil","B","C","D","0.00","0.00","0.00"));
}
@FXML private void handleGoBtn() {
getTablePosition();
}
@FXML private void handleExitBtn() {
System.exit(0);
}
}
Возвращаемый дамп выглядит так:
G:\J2EE\TabPane_2\src\tabpane2\view\MainController.java:33: warning: [rawtypes] found raw type: TablePosition
ObservableList<TablePosition> rowvals = txnTable.getSelectionModel().getSelectedCells();
missing type arguments for generic class TablePosition<S,T>
where S,T are type-variables:
S extends Object declared in class TablePosition
T extends Object declared in class TablePosition
G:\J2EE\TabPane_2\src\tabpane2\view\MainController.java:35: warning: [rawtypes] found raw type: TablePosition
TablePosition pos = txnTable.getSelectionModel().getSelectedCells().get(i);
missing type arguments for generic class TablePosition<S,T>
where S,T are type-variables:
S extends Object declared in class TablePosition
T extends Object declared in class TablePosition
Читая дамп, он говорит, что TablePosition
, ie, S и T нужны два аргумента типа. Поэтому я попытался заменить объявление pos
на:
TablePosition<TxnObject, TxnObject> pos = txnTable.getSelectionModel().getSelectedCells().get(i);
, а также попытался:
TablePosition<TxnObject, String> pos = txnTable.getSelectionModel().getSelectedCells().get(i);
Но затем возвращается компиляция:
G:\J2EE\TabPane_2\src\tabpane2\view\MainController.java:33: warning: [rawtypes] found raw type: TablePosition
ObservableList<TablePosition> rowvals = txnTable.getSelectionModel().getSelectedCells();
missing type arguments for generic class TablePosition<S,T>
where S,T are type-variables:
S extends Object declared in class TablePosition
T extends Object declared in class TablePosition
G:\J2EE\TabPane_2\src\tabpane2\view\MainController.java:36: warning: [unchecked] unchecked conversion
TablePosition<TxnObject, TxnObject> pos = txnTable.getSelectionModel().getSelectedCells().get(i);
required: TablePosition<TxnObject,TxnObject>
found: TablePosition
или
required: TablePosition<TxnObject,String>
found: TablePosition
Я не понимаю, почему возникает предупреждение, хотя я даю TablePosition
аргументы, которые он просил. Что я делаю не так?