2013-12-08 4 views
0

Я пытаюсь создать JScrollPane на одной из вкладок на моем JTabbedPane. Я попробовал то, что я хотя бы работу, которая заключалась в следующем:Как создать JScrollPane в JTabbedPane?

pane.add("Main", mainGame);// These are my other tabs 
    pane.add("Upgrades", upgradeScreen); //the JTabbedPane 
    pane.add("Credits", creditsTab); 
    upgradeScreen.setLayout(null); //The null layout 
    lblMoney2.setBounds(10, 11, 277, 22); 
    upgradeScreen.add(lblMoney2); // A simple JLabel 
    scrollPane.add(upgradeScreen); //my JScrollPane 

Где моя панель JTabbedPane и ScrollPane мой JScrollPane. Это просто избавилось от моей вкладки upgradesScreen. Я как бы ожидал этого, но я не знал, что еще делать. Если вам понадобится больше кода, чтобы понять это, скажите мне, и я его положу, иначе спасибо за помощь!

ответ

2

Не нам JScrollPane#add, вместо этого вы хотите использовать JScrollPane#setViewportView

Отъезд How to use ScrollPane больше деталей.

Рекомендации - не используйте макеты null, они ограничивают возможность запуска вашего приложения на нескольких платформах. Вместо этого найдите время, чтобы узнать, как работают менеджеры макетов

+0

+1 Почему всегда я тот, кто должен что-то упустить. foooo ... – Sage

+0

@sage Да, но сначала вы получили двойную родительскую проблему, так что +1 к вам;) – MadProgrammer

+0

На днях 'JTextArea' из одного из ваших ответов я его раскопал и нашел, что текстовая область никогда не используйте '\ r \ n' для новой строки, поэтому на самом деле ваш опыт был правильным :). На самом деле, я действительно думаю, что мне не хватает опыта. поэтому иногда мой ответ становится совершенно неправильным. вчера, отвечая на вопрос try-finally, возвращающий заказ, я знал правильный верный порядок, но все же я сделал это неправильно, написав обратный порядок. :( – Sage

2

Это просто избавило меня от моей вкладки upgradeesScreen. '

Да, потому что ни один компонент не может иметь двух родителей одновременно. Сначала вы добавили upgradeScreen в JTabbedPane, а затем снова добавили его в JScrollPane. Функция добавления (компонента) компонента в конечном итоге вызовет функцию addImpl(component): она удалит компонент из старого родителя и добавит его в новый родитель.

Однако:

  1. Вы должны добавить JScrollPane к экземпляру JTabbedPane.
  2. Компонент, который вы хотите прокрутить, устанавливает его как вид JScrollPane с использованием функции setViewportView(component). для контекста это upgradeScreen
Смежные вопросы