当前位置: 首页 > 知识库问答 >
问题:

ScalaFX tableView-简单示例编译器错误

牟正真
2023-03-14

我只是试图熟悉ScalaFX,我对Scala的了解也还处于萌芽阶段。你能帮我解决下面这个简单的问题吗?

import scalafx.application.JFXApp
import scalafx.application.JFXApp.PrimaryStage
import scalafx.collections.ObservableBuffer
import scalafx.scene.Scene
import scalafx.scene.control.TableColumn._
import scalafx.scene.control.{TableCell, TableColumn, TableView}

object Gui extends JFXApp {

case class listInfo(text: String, subtexts: List[String], thumbnail: String, attributeField: Int)

  val demo = ObservableBuffer[listInfo](
    new listInfo("dewdfasc", subtexts = List("first", "second"), "tdsam", 1),
    new listInfo("hgfhfghn", subtexts = List("first", "second"), "tdsacdsm", 2)
  )

  stage = new PrimaryStage {
    title = "ScalaFX Hello World"
    scene = new Scene {
      root = TableView[listInfo](demo) {
        columns ++= List(
          new TableColumn[listInfo, String] {
            text = "band"
            cellValueFactory = {_.value.text}
            prefWidth = 100
          },
          new TableColumn[listInfo, String] {
            text = "thumbnail"
            cellValueFactory = {_.value.thumbnail}
            prefWidth = 100
          }
        )
      }
    }
  }

}

具有以下编译器错误:

Error:(20, 23) object TableView does not take type parameters.
      root = TableView[listInfo](demo) {
Error:(21, 9) not found: value columns
        columns ++= List(
Error:(24, 41) type mismatch;
 found   : String
 required: scalafx.beans.value.ObservableValue[String,String]
            cellValueFactory = {_.value.text}
Error:(29, 41) type mismatch;
 found   : String
 required: scalafx.beans.value.ObservableValue[String,String]
            cellValueFactory = {_.value.thumbnail}

我应该纠正什么,以便它编译?

提前感谢!

共有1个答案

易俊驰
2023-03-14
import scalafx.application.JFXApp
import scalafx.beans.property.StringProperty
import scalafx.collections.ObservableBuffer
import scalafx.scene.Scene
import scalafx.scene.control.TableColumn._
import scalafx.scene.control.{ TableColumn, TableView }

object Gui extends JFXApp {
    case class ListInfo(_text: String, _subtexts: List[String], _thumbnail: String, _attributeField: Int) {
        val text = new StringProperty(this, "text", _text)
        val thumbnail = new StringProperty(this, "thumbnail", _thumbnail)
    }

    val demo = ObservableBuffer[ListInfo](
        ListInfo("dewdfasc", List("first", "second"), "tdsam", 1),
        ListInfo("hgfhfghn", List("first", "second"), "tdsacdsm", 2)
    )

    stage = new JFXApp.PrimaryStage {
        title.value = "ScalaFX Hello World"
        scene = new Scene {
            root = new TableView[ListInfo](demo) {
                columns ++= List(
                    new TableColumn[ListInfo, String] {
                        text = "band"
                         cellValueFactory = _.value.text
                         prefWidth = 100
                    },
                    new TableColumn[ListInfo, String] {
                        text = "thumbnail"
                        cellValueFactory = _.value.thumbnail
                        prefWidth = 100
                    }
                )
            }
        }
    }
}
  • 使用向上感知的类型(例如ListInfo)
  • 创建case类实例时新键盘是多余的
  • CellValueFactory应为Scalafx.beans.value.ObservabLevalue[String,String]而不是String(请参见case类ListInfo Val's)
 类似资料:
  • 我写了下面提到的一个简单的java程序。不幸的是,编译错误发生了。 在编译过程中,在命令提示符下会显示以下内容: c:\Java 它对我的任何程序都不起作用,即使是这个简单的程序也不行!这是为什么? 编辑: 现在我有: 而且它不起作用。为什么不起作用? 它说的和以前一样。 你对Java所说的。lang.String[]有效,但为什么不能呢?为什么我以前不需要穿上这些?

  • 问题内容: 我正在尝试在我的Android应用程序中将此代码示例编译为具有加密/解密功能。我在这里找到了该代码http://apachejava.blogspot.it/2012/04/androidencryption- made-easy.html 我不知道它是否不错,但这与这里无关。 编译时一切正常,但会出现此错误“无法解决实用程序”。用实用程序代替实用程序没有任何用处。 有什么帮助吗? 问

  • 本文向大家介绍android开发实践之ndk编译命令简单示例,包括了android开发实践之ndk编译命令简单示例的使用技巧和注意事项,需要的朋友参考一下 前言 Android提供了NDK工具,用来编译native代码(c/c++),该工具配置好了相关的交叉编译环境和工具链,只需要你简单地编写几个.mk文件即可将你的c/c++代码编译为Android的java工程/Android手机可以识别、加载

  • 本文向大家介绍AngularJS 简单过滤器示例,包括了AngularJS 简单过滤器示例的使用技巧和注意事项,需要的朋友参考一下 示例 过滤器格式化表达式的值以显示给用户。它们可以在视图模板,控制器或服务中使用。本示例创建一个过滤器(addZ),然后在视图中使用它。此过滤器所做的全部工作是在字符串的末尾添加大写字母“ Z”。 example.js example.html 在视图内部,过滤器采用

  • 如果你正在寻找GradleProtobuf项目的样本,请看这里。 我在gradle和protobuf方面遇到了困难,我想创建一个简单的gradle项目,该项目将从默认的src/main/proto、src/test/proto中获取任何proto文件,并将它们编译为src/main/java、src/test/java,然后将其打包到jar中并发布到本地repo。 不幸的是,我是gradle的新手

  • 主要内容:Web服务器的工作方式,搭建一个简单的 Web 服务器Go语言里面提供了一个完善的 net/http 包,通过 net/http 包我们可以很方便的搭建一个可以运行的 Web 服务器。同时使用 net/http 包能很简单地对 Web 的路由,静态文件,模版,cookie 等数据进行设置和操作。 Web服务器的工作方式 我们平时浏览网页的时候,会打开浏览器,然后输入网址后就可以显示出想要浏览的内容。这个看似简单的过程背后却隐藏了非常复杂的操作。 对于