如何检查和阻止更改JTabbedPane上的选项卡?

时间:2014-02-14 12:42:04

标签: java swing jtabbedpane

我有标签选项面板,我想验证用户标签到另一个面板。我添加了一个ChangeListener,但这只是在更改了标签后触发,我想在标签更改之前检查,如果任何信息无效,则阻止标签更改。

1 个答案:

答案 0 :(得分:3)

与所有Swing组件一样,JTabbedPane本身并不控制其状态。它委托给负责它的模型。您可以通过JTabbedPane.setModel()设置自己的模型。如果您不想完全自己实现SingleSelectionModel接口,可以创建DefaultSingleSelectionModel的子类并覆盖setSelectedIndex(int index)方法并决定是否将请求传递给超类根据您的情况实施。

这是您希望及时检查条件时(即单击选项卡时)的解决方案,可能是因为提前检查它太昂贵了。否则,如果您提前知道某个标签不被允许,您只需调用JTabbedPane.setEnabledAt(int, boolean)

即可