2013-03-19 10 views
0

패널에는 3 개의 탭 (JTabbedPane 사용)이 있습니다. 사용자는 Tab1 또는 Tab2에서 원하는 것을 모두 할 수 있지만 Tab3으로 전환하면 Tab2 또는 Tab1에서 그가 한 결과를 보길 원합니다.자바에서 탭을 클릭 할 때 특정 기능을 호출하는 방법은 무엇입니까?

어떻게하면됩니까? 사용자가 Tab3을 클릭 할 때 함수를 호출해야한다고 생각합니까?

+0

탭 전환 처리 방법에 대한 코드를 게시하십시오. – span

+2

1) 사용자가 탭 2 또는 1을 변경하자마자 '탭 3'을 업데이트하지 않는 이유는 무엇입니까? 2) 패널의 구성 요소에 'ComponentListener' 또는'AncestorListener'가 필요합니다. 3) 더 빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

답변

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); 
} 
}