我有标签选项面板,我想验证用户标签到另一个面板。我添加了一个ChangeListener,但这只是在更改了标签后触发,我想在标签更改之前检查,如果任何信息无效,则阻止标签更改。
答案 0 :(得分:3)
与所有Swing组件一样,JTabbedPane
本身并不控制其状态。它委托给负责它的模型。您可以通过JTabbedPane.setModel()
设置自己的模型。如果您不想完全自己实现SingleSelectionModel
接口,可以创建DefaultSingleSelectionModel
的子类并覆盖setSelectedIndex(int index)
方法并决定是否将请求传递给超类根据您的情况实施。
这是您希望及时检查条件时(即单击选项卡时)的解决方案,可能是因为提前检查它太昂贵了。否则,如果您提前知道某个标签不被允许,您只需调用JTabbedPane.setEnabledAt(int, boolean)