Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Scala Swing中设置按钮的大小?_Swing_User Interface_Scala_Button_Resize - Fatal编程技术网

如何在Scala Swing中设置按钮的大小?

如何在Scala Swing中设置按钮的大小?,swing,user-interface,scala,button,resize,Swing,User Interface,Scala,Button,Resize,我试图用minimumSize将按钮的大小设置为特定的像素大小,但它似乎不起作用 我甚至试着把它分为子类,这样做 class SizedButton(text0: String, width0: Int, height0: Int) extends Button(text0) { minimumSize = new Dimension(width0, height0) // also tried preferr

我试图用
minimumSize
将按钮的大小设置为特定的像素大小,但它似乎不起作用

我甚至试着把它分为子类,这样做

class SizedButton(text0: String, width0: Int, height0: Int) 
                                      extends Button(text0) {
  minimumSize = new Dimension(width0, height0)
  // also tried preferredSize here ...
}

但是这也不起作用。

要知道您真正想做什么有点困难,但通常大小很大程度上取决于您使用的布局管理器。无论如何,以下内容会固定按钮的大小,例如:

import swing._
import java.awt.Dimension

val s = new Dimension(100, 100)
val f = new Frame {
  contents = new FlowPanel { 
    contents += new Button("huhu") { 
      minimumSize = s
      maximumSize = s
      preferredSize = s
    }
  }
}

f.pack
f.visible = true

在类主体中尝试
this.peer.setPreferredSize(新维度(宽度0,高度0))
,因为您知道习惯用法是创建匿名子类,所以创建命名子类没有帮助。minimumSize是否起作用取决于您使用的布局管理器。到底是什么修复了它?设置所有三个设置或
f.pack
?pack仅将框架的大小调整为足以容纳FlowPanel的首选大小。通过设置最小值、最大值和首选值来固定尺寸。在这种情况下,您甚至可以不使用maxSize,因为FlowLayout不会使按钮大于其首选大小(因为没有理由:可用空间由面板占用)。