Scala Swing组件对齐

Scala Swing组件对齐,scala,scala-swing,Scala,Scala Swing,我正在学习如何使用Scala上的标准Swing小部件构建GUI。以下是我想做的: 我已经成功地创建了组件,但未能将其对齐。我所有的组件都居中对齐,不像我想要的按钮1在左边,桌子在中间,按钮2在右边。我也找不到关于Scala挥杆的太多信息。大部分搜索结果都是关于Java的,我对此一无所知。我应该如何强制对齐 代码如下: ontents += new BoxPanel(Orientation.Vertical) { contents += new Button("Button 1")

我正在学习如何使用Scala上的标准Swing小部件构建GUI。以下是我想做的:

我已经成功地创建了组件,但未能将其对齐。我所有的组件都居中对齐,不像我想要的按钮1在左边,桌子在中间,按钮2在右边。我也找不到关于Scala挥杆的太多信息。大部分搜索结果都是关于Java的,我对此一无所知。我应该如何强制对齐

代码如下:

ontents += new BoxPanel(Orientation.Vertical) {
    contents += new Button("Button 1")
    contents += new Table(3, 3)
    contents += new Button("Button 2")
}
结果是:


以前谢谢。

我通常使用自己的布局助手VBox和HBox,这使大部分内容都非常简单。但以下代码仅使用标准库即可实现您想要的功能,我还冒昧地在组件之间添加了一些边框和间距:

import swing._
import Swing._
import java.awt.Color

new MainFrame {
  val button1 = new Button("Button 1")
  val button2 = new Button("Button 2")
  val table = new Table(4,3) {
    border = LineBorder(Color.BLACK)
  }
  contents = new BoxPanel(Orientation.Vertical) {
    border = EmptyBorder(10)
    contents += new BorderPanel {
      add(button1, BorderPanel.Position.West)
    }
    contents += VStrut(10)
    contents += table
    contents += VStrut(10)
    contents += new BorderPanel {
      add(button2, BorderPanel.Position.East)
    }
  }
  visible = true
}

您只需将上述内容粘贴到一个文件中并运行scala file.scala,它就可以工作了

我通常使用自己的布局助手VBox和HBox,这使大部分内容都非常简单。但以下代码仅使用标准库即可实现您想要的功能,我还冒昧地在组件之间添加了一些边框和间距:

import swing._
import Swing._
import java.awt.Color

new MainFrame {
  val button1 = new Button("Button 1")
  val button2 = new Button("Button 2")
  val table = new Table(4,3) {
    border = LineBorder(Color.BLACK)
  }
  contents = new BoxPanel(Orientation.Vertical) {
    border = EmptyBorder(10)
    contents += new BorderPanel {
      add(button1, BorderPanel.Position.West)
    }
    contents += VStrut(10)
    contents += table
    contents += VStrut(10)
    contents += new BorderPanel {
      add(button2, BorderPanel.Position.East)
    }
  }
  visible = true
}
您可以将上面的内容粘贴到一个文件中,然后运行scala file.scala,它会工作的

Ahhh,所以我必须使用BorderPanel!这真是太棒了。非常感谢你!啊,所以我必须使用边界面板!这真是太棒了。非常感谢你!