2017-05-06 55 views
0

我在我的数据库表中有一个存储整数的字段。为了使程序更加用户友好我想在TableViews和ComboBoxes中将数据表示为字符串而不是整数。例如,而不是0它应该显示“不支持”,而不是1它应该显示“支持”。这是我的领域之一:如何在tableview(FXML)中显示字符串而不是整数

private final SimpleIntegerProperty status = new ReadOnlyIntegerWrapper(); 
public int getStatus() { 
    return status.get(); 
} 
public void setStatus(int val) 
{ 
    status.set(val); 
} 

我检索和使用成功FXML注入数据到TableView中,但它显示为0或1;我如何在Java中实现这个?

我需要ComboBoxes的解决方案,以便用户可以选择有意义的字符串而不是数字。

回答

1

创建您的StringConverter可以将每种状态转换为您想要的表达式。

public class StatusStringConverter extends StringConverter<Integer> { 

    // Manage selectable options as Integer here 
    final public static ObservableList<Integer> OPTIONS = FXCollections.observableArrayList(0, 1); 

    @Override 
    public String toString(Integer value) { 
     switch (value) { 
      case 0: return "unsupported"; 
      case 1: return "supported"; 
      default: return "-"; 
     } 
    } 
    @Override 
    public Integer fromString(String string) { 
     return null; 
    } 
} 

使用ComboBoxTableCellStatusStringConverter使显示细胞和ComboBox选择你的表情。试试看。

table.setEditable(true); 
column.setEditable(true); 
column.setCellValueFactory(new PropertyValueFactory<>("status")); 
column.setCellFactory(ComboBoxTableCell.forTableColumn(
     new StatusStringConverter(), StatusStringConverter.OPTIONS)); 
+0

正是我想要的。日Thnx –

相关问题