如何同步java事件中更新的值

如何同步java事件中更新的值,java,swing,mouselistener,jtabbedpane,actionevent,Java,Swing,Mouselistener,Jtabbedpane,Actionevent,我有以下代码: 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.

我有以下代码:

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);        
 }}
按钮执行的操作选项卡面板单击后调用

tabbedPaneClick中的tabbedPaneID从1到5不等 但是在按钮actionperformed中,值保留为-1(有时显示3,4等)。 i、 e.单击选项卡2(tabbedPaneClick)时,我找到值2,但单击按钮(buttonActionPerformed)时,显示的值为-1

以下修改修复了该问题:

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

但是有没有更好的方法跨这两个函数同步tabbedPaneID(这样我就可以取消多个赋值)?对问题的简单解释将非常有用。

看起来问题是单击了选项卡索引检测(-1)表示坐标错误

tabbedPaneID=tbbdPane.getUI().tabForCoordinate(tbbdPane, evt.getX(), evt.getY());
这里的X和Y应该在选项卡窗格的坐标空间中。选中
evt.getSource()
如果源不是单击的选项卡式窗格,则必须将X和Y转换为选项卡式窗格的坐标

参见SwingUtilities的方法

public static Point convertPoint(Component source,int x, int y,Component destination)
传递选项卡式窗格和事件源