2014-06-09 5 views
2

저는 Java와 JavaFX Scene Builder를 처음 접했습니다. Scene builder에서 Java로 폼을 링크/코딩하는 방법에 대한 자습서를 찾는 것은 매우 어렵습니다. 그래서 나는 그것에 관해 질문하는 것을 끝내었다.관찰 가능 목록에 계산 열 추가

나는 2 개의 열을 가진 관찰 가능한 목록을 가지고 있습니다. A 열은 문자열을 나타내는 정수 B 문자열을 나타내는 정수 - C (A - B) 열을 어떻게 계산할 수 있습니까?

는 지금까지 다음과 같은 코드를 설정 :

메인 컨트롤러 클래스

public class MainController implements Initializable { 

    // Define table 

    @FXML 
    TableView<Table> tableID; 
    @FXML 
    TableColumn<Table, Integer> iA; 
    @FXML 
    TableColumn<Table, Integer> iB; 
    @FXML 
    TableColumn<Table, Integer> iC; 

    // Define Form 
    @FXML 
    TextField AInput; 
    @FXML 
    TextField BInput; 
    @FXML 
    Button submit; 


    // Define variables 


    // create table data 
    final ObservableList<Table> data = FXCollections.observableArrayList(
    ); 


    @Override 
    public void initialize(URL location, ResourceBundle resources) { 

     iC.setCellValueFactory(new PropertyValueFactory<Table, Integer>("rC")); 
     iA.setCellValueFactory(new PropertyValueFactory<Table, Integer>("rA")); 
     iB.setCellValueFactory(new PropertyValueFactory<Table, Integer>("rB")); 

     tableID.setItems(data); 
    } 

    public void onAddItem(ActionEvent event) { 
     Table entry = new Table(Integer.parseInt 
       (AInput.getText()), Integer.parseInt 
       (BInput.getText())); 

     // insert data in table 
     data.add(entry); 
    } 

} 
} 

public class Table { 

    private final SimpleIntegerProperty rA; 
    private final SimpleIntegerProperty rB; 

    public Table(Integer sA, Integer sB) { 

     this.rA = new SimpleIntegerProperty(sA); 
     this.rB = new SimpleIntegerProperty(sB); 
    } 

    public Integer getRA() { 
     return rA.get(); 
    } 

    public void setRA(Integer v) { 
     rA.set(v); 
    } 
    public Integer getRB() { 
     return rB.get(); 
    } 

    public void setRB(Integer v) { 
     rB.set(v); 
    } 
} 

내가 다른 설정 모드를 설정해야합니까 표 클래스 어디에서 rA - rB를 계산할 것인가?

답변

0

Table 클래스에 getter 메서드를 추가하여 다른 열에 사용 된 값의 차이점을 반환하기 만하면됩니다.

public Integer getRC() { return getRA() - getRB(); } 

subtraction table

실행 샘플

import javafx.application.Application; 
import javafx.beans.property.SimpleIntegerProperty; 
import javafx.collections.F*; 
import javafx.scene.Scene; 
import javafx.scene.control.*; 
import javafx.scene.control.cell.PropertyValueFactory; 
import javafx.stage.Stage; 

public class SubtractingTable extends Application { 
    public static class Table { 
     private final SimpleIntegerProperty rA; 
     private final SimpleIntegerProperty rB; 

     public Table(Integer sA, Integer sB) { 
      this.rA = new SimpleIntegerProperty(sA); 
      this.rB = new SimpleIntegerProperty(sB); 
     } 

     public Integer getRA() { 
      return rA.get(); 
     } 

     public void setRA(Integer v) { 
      rA.set(v); 
     } 
     public Integer getRB() { 
      return rB.get(); 
     } 

     public void setRB(Integer v) { 
      rB.set(v); 
     } 

     public Integer getRC() { return getRA() - getRB(); } 
    } 

    @Override 
    public void start(Stage stage) { 
     TableView<Table> tableID = new TableView<>(); 

     TableColumn<Table, Integer> iC = new TableColumn<>("A - B"); 
     iC.setCellValueFactory(new PropertyValueFactory<>("rC")); 
     iC.setStyle("-fx-alignment: baseline_right;"); 

     TableColumn<Table, Integer> iA = new TableColumn<>("A"); 
     iA.setCellValueFactory(new PropertyValueFactory<>("rA")); 
     iA.setStyle("-fx-alignment: baseline_right;"); 

     TableColumn<Table, Integer> iB = new TableColumn<>("B"); 
     iB.setCellValueFactory(new PropertyValueFactory<>("rB")); 
     iB.setStyle("-fx-alignment: baseline_right;"); 

     tableID.getColumns().addAll(iA, iB, iC); 

     tableID.setItems(data); 
     tableID.setPrefSize(150, 125); 

     stage.setScene(new Scene(tableID)); 
     stage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    }  

    final ObservableList<Table> data = FXCollections.observableArrayList(
      new Table(5, 3), 
      new Table(7, 4), 
      new Table(9, 3) 
    ); 
} 
+0

딱! 고마워요! – user3721905

관련 문제