首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GridPanel如何确定大小?

GridPanel如何确定大小?
EN

Stack Overflow用户
提问于 2012-08-22 18:46:55
回答 2查看 1.7K关注 0票数 3

下面是一个非常简单的Scala GUI测试:

代码语言:javascript
复制
import scala.swing._

object FirstSwingApp extends SimpleGUIApplication {
  def top = new MainFrame {
    contents = new GridPanel(30, 20) {
      contents ++= 1 to 600 map (_ => new Label("test"))
    }
  }
}

每个包含的标签显示的大小与其所需的大小完全相同:

现在我想用一个自定义类型替换Label

代码语言:javascript
复制
contents ++= 1 to 600 map (_ => new Foo)

class Foo extends Panel {
  override def minimumSize = {
    println("minimumSize")
    new java.awt.Dimension(32, 32)
  }

  override def preferredSize = {
    println("preferredSize")
    new java.awt.Dimension(32, 32)
  }

  override def maximumSize = {
    println("maximumSize")
    new java.awt.Dimension(32, 32)
  }
}

但是结果太小了:

显然,所有xxxSize方法都不会被调用,因为程序不会产生控制台输出。要使每个Foo以32x32像素的大小显示,我到底需要做什么更改?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-22 19:26:15

这里的问题是,scala.swing只是javax.swing的一个包装器。在本例中,Label只是一个包装在javax.swing.JLabel周围的实例。

当组件被传递到javax.swing系统时,只传递组件,而不是包装器。

因此,在包装器上覆盖方法对您没有任何好处。

但您可以覆盖实际组件实例上的方法。例如:

代码语言:javascript
复制
import scala.swing._
import javax.swing._
import java.awt.Dimension
import javax.swing.JPanel

object Swg extends SimpleSwingApplication {
  class Foo extends Panel {
    override lazy val peer: JPanel = new JPanel with SuperMixin {
      override def getMinimumSize = new Dimension(32, 32)
      override def getPreferredSize = new Dimension(32, 32)
      override def getMaximumSize = new Dimension(32, 32)
    }
  }

  def top = new MainFrame {
    contents = new GridPanel(30, 20) {
      contents ++= List.fill(600)(new Foo)
    }
  }
}

在我的机器上,这给出了一个640px宽,约960px高的帧-这可能是你想要的。

票数 4
EN

Stack Overflow用户

发布于 2012-08-22 22:31:48

正如Rogach所说,问题是你没有改变底层的同级。这样做的另一种可能性是:

代码语言:javascript
复制
class Foo extends Panel {
   preferredSize = new Dimension(32, 32)
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12071410

复制
相关文章

相似问题

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