在切换到新标签页之前,如何捕获事件?
在每个选项卡中,我都有JTable,并且对它的数据(删除,添加,更新)进行了处理。我想先进行数据验证(保存或取消更改),然后再切换到新标签页。我使用Java 1.5。

class ViewPanel extends JPanel
  {

    private void Components() {
    setPreferredSize(new Dimension(700, 400));

    tabbedPane.addTab("DC", ANSFER.getIcon(),new DcTabPanel(this), "DC");
    tabbedPane.addTab("PC", THUMB4.getIcon(),new PcTabPanel(this), "PC");

    tabbedPane.addChangeListener(this);
    add(tabbedPane);
     }


     public void stateChanged(ChangeEvent e) {

     }

   }

最佳答案

JTabbedPaneSingleSelectionModel支持。如果扩展DefaultSingleSelectionModel,则可以覆盖setSelectedIndex方法并实现您的逻辑。

// in new selection model:
public void setSelectedIndex(int index) {
    // do pre-switch things here
    super.setSelectedIndex(index);
}

// in ViewPanel, on tabbedPane create:
tabbedPane.setModel(newSelectionModel);


您不能简单地使用ChangeListener的原因是,它会在更改时触发。通过扩展选择模型,您可以在更改选项卡之前触发。

10-05 19:40