java - 将 JLabel/JPanel 添加到 Scala Swing Panel 时出现类型不匹配错误

标签 java swing scala jpanel jlabel

我正在尝试将 java native JLabel(或 JPanel)合并到 scala swing 应用程序中,但遇到了编译错误。

我尝试运行的代码如下。

package com.david

import javax.swing.JPanel

import scala.swing._

object Hello extends SimpleSwingApplication {

  def top = new MainFrame {
    title = "First Swing App"

    contents = new JPanel()
  }
}

编译器给出以下错误。

$ sbt compile
[info] Set current project to MyGui (in build file:/home/david/programming/scala/MyGui/)
[info] Compiling 1 Scala source to /home/david/programming/scala/MyGui/target/scala-2.11/classes...
[error] /home/david/programming/scala/MyGui/src/main/scala/com/david/Hello.scala:12: type mismatch;
[error]  found   : javax.swing.JPanel
[error]  required: scala.swing.Component
[error]     contents = new JPanel()
[error]                ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
[error] Total time: 3 s, completed Apr 10, 2015 12:13:11 PM

此外,这是我的 build.sbt 文件:

name := "MyGui"

version := "1.0"

scalaVersion := "2.11.6"

libraryDependencies += "org.scala-lang.modules" %% "scala-swing" % "1.0.1"

系统如下。

$ java -version
java version "1.7.0_76"
Java(TM) SE Runtime Environment (build 1.7.0_76-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.76-b04, mixed mode)
$ uname -a
Linux strela 3.13.0-48-generic #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

我知道人们有 had similar problems ,但这是不同的——我使用了正确的组件(JLabel/JPanel 而不是 Label/Panel)。

最佳答案

Scala swing 使用薄包装组件抽象,其中 scala.swing.Component基类包装了 Java swing 组件,而不是成为其类层次结构的一部分。

这意味着您必须使用 scala swing 中的面板/标签,或者使用 Component.wrap(javaSwingComponent)将java swing组件制作成scala swing组件,可以与其他scala swing组件一起使用。

关于java - 将 JLabel/JPanel 添加到 Scala Swing Panel 时出现类型不匹配错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29558983/

相关文章:

java - 在 mvn 中定义 $JAVA_HOME

java - 按字母顺序对 HashMap 键进行排序

java - 使用 org.codehaus.jackson 反序列化 JSON 字符串

java - Swing:创建一个 UWP ("Metro")–like 按钮

java - 检查 JPanel 的布局

java - 有没有办法在 Scala 中的方法参数中声明一组指定的值?

java - 如何检测普通 Java 文件中的按钮按下情况?

java - 如何使 JXTreeTable 对其顶部元素进行排序

Scala "multilevel"抽象类/抽象对象替换

java - Scala 中的方法执行难题