2014-10-04 2 views
1

У меня есть JTabbedPane с 5 вкладками в ней. Я также получил еще 3 кнопки в том же JFrame, где добавлена ​​моя JTabbedPane. Я хочу, чтобы пользователь мог перейти на конкретную вкладку, когда нажата конкретная кнопка. Вот примерАвто Нажмите на конкретную вкладку, когда кнопка нажата в java

enter image description here

изображение Теперь, например, если пользователь нажмет Button 1 затем tab One должны быть открыты и точно так же, когда button 2 нажата, то tab Two должен быть открыт и поэтому для третьего.

Вот мой код для добавления этих JTabbedPane и кнопок.

public class TabsAndButtons 
{ 
    public TabsAndButtons() 
    { 
     JTabbedPane tabsPane = new JTabbedPane(); 
     tabsPane.add("One", new JPanel()); 
     tabsPane.add("Two", new JPanel()); 
     tabsPane.add("Three", new JPanel()); 
     tabsPane.add("Four", new JPanel()); 
     tabsPane.add("Five", new JPanel()); 

     JPanel Panel = new JPanel(); 
     Panel.add(tabsPane); 

     JButton Button1 = new JButton("Button 1"); 
     Panel.add(Button1); 
     JButton Button2 = new JButton("Button 2"); 
     Panel.add(Button2); 
     JButton Button3 = new JButton("Button 3"); 
     Panel.add(Button3); 

     JFrame MainFrame = new JFrame("JTabbedPane and Buttons"); 
     MainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     MainFrame.getContentPane().add(Panel); 
     MainFrame.pack(); 
     MainFrame.setVisible(true); 
    } 

    public static void main(String[] args) 
    { 
     java.awt.EventQueue.invokeLater(() -> { 
      new TabsAndButtons(); 
     }); 
    } 
} 

Фактическая цель такого действия является очень длительным и имеет много деталей, которые сделают вопрос тупой, поэтому я прошу главную задачу, где я stucked. Спасибо за вашу любезную поддержку и время.

+0

возможно дубликат [Приведение вкладки на фронт в JTabbedPane] (http://stackoverflow.com/questions/1235644/bringing-tab-to-front-in-jtabbedpane) – MarsAtomic

+0

Нет, это совершенно разные вещь –

+0

Да ... вы должны были использовать вопрос, на который я ссылался, как ядро ​​обработчика прослушивателя действий, но я полагаю, что я должен был его прописать. Я думаю, вы, наверное, понимаете, что это не «совсем другое». – MarsAtomic

ответ

2

Использовать метод button.addActionListener() to execute code when a button is clicked. The code that you want to execute is probably tabsPane. setSelectedIndex (i) where i` - это индекс вкладки, которую вы хотите отобразить.

Возможно, вы также захотите переместить JTabbedPane tabsPane в переменную-член или пометить ее final, чтобы убедиться, что к ней можно получить доступ из прослушивателя действий.

+0

Спасибо. Я понял. Мне просто нужна была идея, поэтому ты дал мне. Еще раз спасибо. –

2

Добавить ActionListener на каждой из кнопок. Затем в ActionListener вы можете вызвать метод setSelected(...) панели с вкладками.

Для получения дополнительной информации и примеров ознакомьтесь с разделом из учебника Swing по телефону How to Write an ActionListener.

Кроме того, имя переменной НЕ должно начинаться с символа верхнего регистра.

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