当用户点击一个选项卡时,我会进行一些验证。如果验证通过,则允许显示该选项卡(或切换到该选项卡)。目前,我使用StateChanged事件进行验证。问题是,当您点击一个选项卡时,它会显示选项卡的内容,如果验证不通过,它会切换回之前的选项卡。除非验证通过,否则我不希望它切换到任何选项卡。如何做到这一点?我是否在检查错误事件?谢谢大家
当用户点击一个选项卡时,我会进行一些验证。如果验证通过,则允许显示该选项卡(或切换到该选项卡)。目前,我使用StateChanged事件进行验证。问题是,当您点击一个选项卡时,它会显示选项卡的内容,如果验证不通过,它会切换回之前的选项卡。除非验证通过,否则我不希望它切换到任何选项卡。如何做到这一点?我是否在检查错误事件?谢谢大家
尝试覆盖 JTabbedPane.setSelectedIndex(int index)。
DefaultSingleSelectionModel.setSelectedIndex(index)
并使用 JTabbedPane 的模型。然而,更为简洁的解决方案是覆盖 DefaultSingleSelectionModel
以支持 VetoableChangeListener
。 - xmedeko
pane.setEnabledAt(index,false);
调用“禁用”相关选项卡,而不是在stateChanged
事件中使用复杂的逻辑。 - ring bearerCardLayout
来代替JTabbedPane
,以完全控制视图更改的时机。对我而言,使用“锁定选项卡”的JTabbedPane
不是很直观。 - Andrew Thompson