1

我的自定义子类有问题Page。这是一个简短的例子。

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会打印出来。很高兴知道为什么会发生这种情况以及如何再次访问我添加的页面。在我的情况下,我需要运行子类必须根据设置的语言调整标题字符串的方法。

4

1 回答 1

0

如果你看源码

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 页面之外的伴随页面)。使用对窗格和选项卡索引的引用,此类可以更改标题。

于 2013-08-04T18:12:22.297 回答