2014-11-28 4 views
1

자바 행사에 업데이트 된 값을 동기화하는 방법 :내가 다음 코드 한

class A extends javax.swing.JFrame 
{ 
    int tabbedPaneID=0; 
    javax.swing.JTabbedPane tbbdPane; 
//1 
private void tabbedPaneClick(java.awt.event.MouseEvent evt) { 
     tabbedPaneID=tbbdPane.getUI().tabForCoordinate(tbbdPane, evt.getX(), evt.getY()); 
     if(domainTabbedPaneID>=0) 
       jTbbdPnApp.setSelectedIndex(domainTabbedPaneID); 
     else 
       return; 
     System.out.println(domainTabbedPaneID); 
} 

//2 
private void buttonActionPerformed(java.awt.event.ActionEvent evt) { 
     System.out.println(tabbedPaneID);   
}} 

및 buttonActionPerformed tabbedPaneClick 후라고합니다.

tabbedPaneClick 내의 tabbedPaneID는 1 내지 5 뿐만 값이 유지 -1 buttonActionPerformed 내에서 변화 (때로는, 3,4- 등을 나타낸다). 즉 탭 2 (tabbedPaneClick)를 클릭하면 값 2가 표시되지만 버튼 (buttonActionPerformed)을 클릭하면 표시된 값이 -1입니까?

다음 수정은 문제 해결

//2 
private void buttonActionPerformed(java.awt.event.ActionEvent evt) { 
     tabbedPaneID=tbbdPane.getSelectedIndex(); 
     System.out.println(tabbedPaneID);   
} 

을하지만 (내가 멀리 여러 과제와 할 수 있도록)이 두 가지 기능을 통해 tabbedPaneID을 동기화하는 더 좋은 방법이 있나요? 문제에 대한 간단한 설명이 매우 유용 할 것입니다.

답변

2

문제가 클릭 된 것처럼 보입니다. tab index detected (-1)는 잘못된 좌표를 의미합니다.

tabbedPaneID=tbbdPane.getUI().tabForCoordinate(tbbdPane, evt.getX(), evt.getY()); 

여기서 X와 Y는 탭 패널의 좌표 공간에 있어야합니다. 소스는 X를 변환해야와 Y의이

public static Point convertPoint(Component source,int x, int y,Component destination) 

패스 탭이 창 및 이벤트 소스

참조 SwingUtilities의 '방법 좌표 탭 구획하기 위해 클릭 탭 구획이 아닌 경우 evt.getSource()을 확인합니다.