2013-03-19 70 views
0

在面板中我有3个选项卡(使用JTabbedPane)。用户可以在Tab1或Tab2中做任何他想做的事情,但是当他切换到Tab3时,我希望他看到他在Tab2或Tab1中所做的结果。如何在Java中单击某个选项卡时调用某个功能?

我该怎么做?我想我必须在用户点击Tab3时调用一个函数?

+0

请张贴一些关于如何处理选项卡切换的代码。 – span 2013-03-19 08:51:11

+2

1)用户更改标签2或1后,为什么不更新“标签3”? 2)您可能需要在面板的组件上使用“ComponentListener”或“AncestorListener”。 3)为了更快得到更好的帮助,请发布[SSCCE](http://sscce.org/)。 – 2013-03-19 08:54:51

回答

7

您可以在TabbedPane上添加ChangeListener。该片段向您展示了如何添加监听器以及如何指示哪个选项卡处于活动状态:

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTabbedPane; 
import javax.swing.event.ChangeEvent; 
import javax.swing.event.ChangeListener; 

public class TestTabbedPane { 

static JTabbedPane p; 
static JFrame f; 
public static void main(String[] args) { 

    f = new JFrame(); 
    f.setSize(800,600); 
    f.setLocationRelativeTo(null); 

    p = new JTabbedPane(); 
    p.addTab("T1", new JPanel()); 
    p.addTab("T2", new JPanel()); 
    p.addTab("T3", new JPanel()); 

    p.addChangeListener(new ChangeListener() { //add the Listener 

     public void stateChanged(ChangeEvent e) { 

      System.out.println(""+p.getSelectedIndex()); 

      if(p.getSelectedIndex()==2) //Index starts at 0, so Index 2 = Tab3 
      { 
       //do your stuff on Tab 3 
      } 
     } 
    }); 
    f.add(p); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.setVisible(true); 
} 
} 
相关问题