2013-08-04 3 views
1

У меня проблема с моим подклассом Page. Вот краткий пример.Scala TabbedPane Пользовательская подкатегория

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 печатается. Было бы неплохо узнать, почему это происходит и как я могу снова получить доступ к моей добавленной странице. В моем случае мне нужно запустить метод, который подкласс должен настроить строку заголовка на основе установленного языка.

ответ

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) отдельно. Используя ссылку на панель и индекс табуляции, этот класс может изменить заголовок.

+0

Спасибо! Теперь я перечислил индекс вкладки ко всем данным, необходимым для создания заголовка вкладки. Затем я прокручиваю карту и устанавливаю заголовок всех вкладок. – Kigyo

Смежные вопросы