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 に答える