我现在正在尝试几个小时来优化我的用户界面,但我现在没有取得任何进展。 我有一个 JTabbedPane 来显示数据集。那里有一个文本字段也应该代表选项卡标题。现在有一个标有“保存”的按钮,它除了从当前选项卡中读取此文本字段并更新选项卡标题外什么都不做。我很乐意在字段更改时通过更新选项卡的标题来替换它。我启动并运行了事件监听器,所以这里没有问题,但是如何调用 JTabbedPane 对象? 我试图将一个 JTabbedPane 变量放入我的 JPanel 类中并在此处存储一个引用,但是当我为此变量调用 setter 时,这一直在崩溃...... 好吧,实际上并没有崩溃,但它抛出了一个异常:
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
[...]
setter 非常简单:
public void setTabContainer(JTabbedPane cont){
container = cont;
}
有什么想法吗?
最佳答案
I got the event listener up and running, so no problems here, but how to I get to call the JTabbedPane object?
您可以按如下方式使用 SwingUtilities
类来获取作为文本字段祖先的选项卡式 Pane :
JTabbedPane tabbedPane = (JTabbedPane)SwingUtilities.getAncestorOfClass(JTabbedPane.class, textField);
然后您可以遍历选项卡式 Pane 的组件,以找到放置文本字段的索引,最后更新选项卡的标题:
for(int i = 0; i < tabbedPane.getTabCount(); i++) {
if(SwingUtilities.isDescendingFrom(textField, tabbedPane.getComponentAt(i))) {
tabbedPane.setTitleAt(i, textField.getText());
break;
}
}
查看 API:
关于java - JTabbedPane:从 Tab 内更改标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27925769/