在切换到新标签页之前,如何捕获事件?
在每个选项卡中,我都有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) {
}
}
最佳答案
JTabbedPane由SingleSelectionModel支持。如果扩展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的原因是,它会在更改时触发。通过扩展选择模型,您可以在更改选项卡之前触发。