मैं दृढ़ता से आपके डेटा को पुनर्गठित करने की अनुशंसा करता हूं, ताकि आपके पास दो गुणों वाला एक वर्ग हो, जिसमें से एक आपकी पहली सूची का एक तत्व है, और दूसरा आपकी दूसरी सूची से संबंधित तत्व है। फिर आप उस वर्ग की वस्तुओं की एक सूची बना सकते हैं, और आप सामान्य मामले में कम हो जाते हैं।
उदा। मान लीजिए कि आप
// your first list:
List<Integer> intList = ... ;
// your second list:
List<String> stringList = ... ;
है तो
public class MyDataType {
private final int intValue ;
private final String stringValue ;
public MyDataType(int intValue, String stringValue) {
this.intValue = intValue ;
this.stringValue = stringValue ;
}
public int getIntValue() {
return intValue ;
}
public String getStringValue() {
return stringValue ;
}
}
अब आप
TableView<MyDataType> table = new TableView<>();
for (int i = 0; i < intList.size() && i < stringList.size(); i++) {
table.getItems().add(new MyDataType(intList.get(i), stringList.get(i)));
}
कर सकते हैं परिभाषित करने और हमेशा की तरह कॉलम परिभाषित करते हैं।
यदि आप वास्तव में किसी कारण से उस डेटा रूपांतरण को नहीं बना सकते हैं, तो आप तालिका के प्रकार को पूर्णांक के रूप में देख सकते हैं, प्रत्येक पंक्ति के लिए दो सूचियों में सूचकांक के मान के साथ। सूचियों के आकार तक 0, 1,...
मानों के साथ तालिका को पॉप्युलेट करें। ऐसा लगता है:
import java.util.Arrays;
import java.util.List;
import javafx.application.Application;
import javafx.beans.property.ReadOnlyIntegerWrapper;
import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class TableViewByColumns extends Application {
@Override
public void start(Stage primaryStage) {
List<Integer> intValues = Arrays.asList(1, 2, 3, 4, 5);
List<String> stringValues = Arrays.asList("One", "Two", "Three", "Four", "Five");
TableView<Integer> table = new TableView<>();
for (int i = 0; i < intValues.size() && i < stringValues.size(); i++) {
table.getItems().add(i);
}
TableColumn<Integer, Number> intColumn = new TableColumn<>("Value");
intColumn.setCellValueFactory(cellData -> {
Integer rowIndex = cellData.getValue();
return new ReadOnlyIntegerWrapper(intValues.get(rowIndex));
});
TableColumn<Integer, String> nameColumn = new TableColumn<>("Name");
nameColumn.setCellValueFactory(cellData -> {
Integer rowIndex = cellData.getValue();
return new ReadOnlyStringWrapper(stringValues.get(rowIndex));
});
table.getColumns().add(intColumn);
table.getColumns().add(nameColumn);
primaryStage.setScene(new Scene(new BorderPane(table), 600, 600));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
समस्या यह है कि सूची अलग-अलग आकार के हैं और मुझे कॉलम की पूरी सूची रखने की आवश्यकता है, इसलिए एक कॉलम दूसरे की तुलना में लंबा होगा। – tikend
निश्चित रूप से आप उस मामले के लिए कोड संशोधित कर सकते हैं? मेरे पास अब एक बैठक है, लेकिन अगर यह वास्तव में आपके बाहर है तो मैं वापस आऊंगा जब मैं वापस आऊंगा ... –
क्षमा करें, मेरा बुरा, जावा में लैम्ब्डा अभिव्यक्तियों में बहुत कुशल नहीं है, लेकिन इसे पहले से ही मिला है। मदद के लिए THX, समाधान के रूप में अपने उत्तर को चिह्नित करना। – tikend