2017-09-26 1 views
2

kotlin을 사용하는 방법을 배우고 있으며 tornadoFX를 사용하기 시작했습니다. 나는 그것을 배우려는 시도에 가이드를 통해 갈거야,하지만 'TreeView 다른 유형과 의미가 무엇인지 알아낼 수 없습니다'. 별 투영법을 사용해야한다고 말하는 것 같습니다. 별 투영법은 호출시 *를 사용할 때 알고 있습니다.TornadoFX 트리 뷰를 사용하여 데이터를 표시하는 방법

그러나 최대한 빨리 그렇게로서, 트 리뷰는 '계획이 기능의 형태 인수를 허용하고 등록되지 않은'

이 내 코드 말한다 :

클래스 MAINVIEW :보기 ("") {

override val root = treeview<*> { 
     root = TreeItem(Person("Departments", "")) 

     cellFormat { 
      text = when (it) { 
       is String -> it 
       is Department -> it.name 
       is Person -> it.name 
       else -> throw IllegalArgumentException("Invalid Data Type") 
      } 
     } 

     populate { parent -> 
      val value = parent.value 
      if (parent == root) departments 
      else if (value is Department) persons.filter { it.department == value.name } 
      else null 
     } } 

} 

솔직히 말하면, 나는 무엇을하고 싶은지 모르겠다. 다른 사람이 코 틀린와 tornadoFX 모두 학습을위한 유용한 링크로 날을 제공 할 수있는 경우

또한 그것은 많이 주시면 감사하겠습니다 :)

+0

나는 가이드에서 별 ​​투영을 사용하기위한 권장 사항을 발견하지 않습니다. 나는 모든 나무 아이템에 대한 공용 인터페이스를 사용하는 것에 집중했다. – melston

답변

2

가이드가 실제로 잘못된 것 같다. 나는 treeview<Any> 사용하여 작업 있어요 :

data class Department(val name: String) 
data class Person(val name: String, val department: String) 

val persons = listOf(
     Person("Mary Hanes", "Marketing"), 
     Person("Steve Folley", "Customer Service"), 
     Person("John Ramsy", "IT Help Desk"), 
     Person("Erlick Foyes", "Customer Service"), 
     Person("Erin James", "Marketing"), 
     Person("Jacob Mays", "IT Help Desk"), 
     Person("Larry Cable", "Customer Service") 
) 

val departments = persons.groupBy { Department(it.department) } 

override val root = treeview<Any> { 
    root = TreeItem("Departments") 
    cellFormat { 
     text = when (it) { 
      is String -> it 
      is Department -> it.name 
      is Person -> it.name 
      else -> kotlin.error("Invalid value type") 
     } 
    } 
    populate { parent -> 
     val value = parent.value 
     when { 
      parent == root -> departments.keys 
      value is Department -> departments[value] 
      else -> null 
     } 
    } 
} 
관련 문제