2013-04-06 2 views
1
public void tabbedPane(){ 
     JPanel tab1 = new JPanel(); 
      JButton btn = new JButton("Buton - 1"); 
      btn.setPreferredSize(new Dimension(50, 20)); 
      btn.setLocation(0, 10); 
     tab1.add(btn); 
     JTabbedPane tabPanel = new JTabbedPane(); 
     tabPanel.addTab("tab1", null, tab1); 
     tabPanel.addTab("tab2", tab1); 
     tabPanel.addTab("tab3", btn); 
     tabPanel.setPreferredSize(new Dimension(450, 150)); 
     tabPanel.setLocation(50, 0); 
     mainPanel.add(tabPanel);//Main panel on frame 
    } 

Когда я запускаю мое приложение, я вижу только TAB2 и панель TAB3, и у меня есть много вопросов:JTabbedPane не работает правильно

  • tabPanel.setLocation не работает
  • tabPanel. addTab («tab1» ...) не работает
  • btn.setPreferredSize (новый размер (50, 20)); когда я нажмите «tab2», он работает правильно, однако, когда я нажимаю «tab3», он не меняет кнопку размер .. почему?

и я использую нулевой макет

ответ

1

Какова ваша цель?

A JTabbedPane Используется для организации просмотров, я вижу, что вы пытаетесь добавить JPanel в качестве первой вкладки, это «главная цель» JTabbedPanes.

tabPanel.addTab("Tab 1", tab1); 

Попробуйте добавить закладку, как это, вы передаете «нулевой» значение в качестве значка, который не должен влиять на все, но если вы не используете значок, то просто добавьте панель как вкладку с предполагаемым именем.

Во втором добавлении вы снова добавляете тот же компонент (tab1).

При третьем добавлении вы пытаетесь добавить компонент уже на контейнер (tab1). Это заставит этот компонент появиться только в последнем контейнере, в который вы его добавили. Кроме того, компонент является JButton. Я не вижу цели JButton в качестве вкладки.

Для вопроса setLocation(x, y) отметьте макет, который вы используете на контейнере.

Опять же, я думаю, что главная проблема здесь в том, что вы неправильно подходите к своей проблеме или не используете необходимые инструменты.

2

tabPanel.setLocation не работает

Не используйте setLocation(...), но вместо того, чтобы использовать вложенные компоненты и менеджер компоновки для достижения приятны и легко поддерживать графический интерфейс.

tabPanel.addTab ("tab1" ...) не работает

С свинг, вы можете только добавить компонент в один контейнер, это так. Компонент будет отображаться только в последнем контейнере, в который он был добавлен.

btn.setPreferredSize(new Dimension(50, 20)); Когда я нажимаю «tab2», он работает правильно, однако, когда я нажимаю «tab3», он не меняет размер кнопки .. почему?

Опять же, вы хотите, чтобы изучить менеджер компоновки

и я использую нулевой макет

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

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