Swing Scala选项卡窗格自定义页面子类

Swing Scala选项卡窗格自定义页面子类,swing,scala,subclass,subclassing,Swing,Scala,Subclass,Subclassing,我的页面的自定义子类有问题。下面是一个简短的例子 def main(args: Array[String]): Unit = { val pane = new TabbedPane pane.pages += new LanguagePage("common_yes", new Label) println(pane.pages(0).isInstanceOf[LanguagePage]) } class LanguagePage(languageKey: String, com:

我的
页面
的自定义子类有问题。下面是一个简短的例子

def main(args: Array[String]): Unit = {
  val pane = new TabbedPane
  pane.pages += new LanguagePage("common_yes", new Label)
  println(pane.pages(0).isInstanceOf[LanguagePage])
}

class LanguagePage(languageKey: String, com: Component) 
  extends Page("", com, null) {

  def method() {...}
}

当我运行程序时,将打印
false
。很高兴知道为什么会发生这种情况,以及如何再次访问我添加的页面。在我的例子中,我需要运行一个方法,子类必须根据设置的语言调整标题字符串。

如果您查看源代码

class TabbedPane extends Component with Publisher {
  object pages extends BufferWrapper[Page] {
    def apply(n: Int) = 
      new Page(TabbedPane.this, peer.getTitleAt(n),
        UIElement.cachedWrapper[Component] 
        (peer.getComponentAt(n).asInstanceOf[javax.swing.JComponent]),
        peer.getToolTipTextAt(n))
你总是会得到一个新的实例

看着

class TabbedPane extends Component with Publisher {
  object pages extends BufferWrapper[Page] {

  def +=(t: Page): this.type = { 
    t.parent = TabbedPane.this
    peer.addTab(t.title, null, t.content.peer, t.tip)
    this
  }
根本不记录参数
t

但是您可以使用

pane.pages(0).title = "Title 2"

因此,您可以单独定义一个逻辑页面(Swing页面之外的一个伴随页面)。使用对窗格和选项卡索引的引用,该类可以更改标题。

谢谢!现在,我将选项卡索引映射到生成选项卡标题所需的所有数据。然后我循环浏览地图并设置所有选项卡的标题。