首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Scala/Swing中可以使用绝对组件定位吗?

在Scala/Swing中可以使用绝对组件定位吗?
EN

Stack Overflow用户
提问于 2016-05-23 23:03:59
回答 1查看 164关注 0票数 1

我在Scala "org.scala-lang" % "scala-swing" % "2.11.0-M7"中使用Swing。我想明确地为我的组件设置位置。在Swing API for Java中可以这样做。

问题:可以在Swing Scala中为组件设置绝对位置吗?

Scala示例的Swing API:

代码语言:javascript
复制
import scala.swing._
object PositionAbsolute extends SimpleSwingApplication {
  lazy val top = new MainFrame() {
    title = "PositionAbsolute"
    val label = new Label("I want to be at (0, 0)")
    val panel = new FlowPanel()
    panel.preferredSize = new swing.Dimension(300, 400)
    panel.contents += label
    contents = panel
  }
} 

EN

回答 1

Stack Overflow用户

发布于 2022-06-15 10:13:43

我知道现在做出回应有点晚了--而且我根本不是这方面的专家,所以请耐心点。

如果您绝对希望或需要在scala中使用swing对控件进行绝对定位,下面是一种方法:

代码语言:javascript
复制
import scala.swing.{Button, Dimension, MainFrame}

object Main extends App {
  val b1 = new Button {
    text = "one"
    preferredSize = new Dimension(60, 30)
  }
  val b2 = new Button {
    text = "two"
    preferredSize = new Dimension(80, 40)
  }
  val b3 = new Button("three")

  b1.peer.setBounds(25, 5, b1.peer.getPreferredSize.width, b1.peer.getPreferredSize.height)
  b2.peer.setBounds(55, 50, b2.peer.getPreferredSize.width, b2.peer.getPreferredSize.height)
  b3.peer.setBounds(150, 15, b3.peer.getPreferredSize.width, b3.peer.getPreferredSize.height)

  javax.swing.SwingUtilities.invokeLater(() => {
    val frame: MainFrame = new MainFrame {
      title = "AbsoluteLayoutDemo"
      resizable = true
      size = new Dimension(300, 150)
    }
    frame.peer.setLayout(null)
    frame.peer.add(b1.peer)
    frame.peer.add(b2.peer)
    frame.peer.add(b3.peer)
    frame.visible = true
  })
}

我自己也不太喜欢,但这个很管用。我用scala版本2.13.8和

代码语言:javascript
复制
libraryDependencies += "org.scala-lang.modules" %% "scala-swing" % "3.0.0"

在build.sbt文件中

这是我用docs.oracle.com/javase/tutorial/uiswing/layout/none.html翻译的java示例。

但是,我做了一些修改,我认为对于scala示例来说,这些修改是有意义的。

我不太清楚这种方法的后果是什么,所以请自己承担风险--因为我真的不确定这是如何工作的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37401910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档