Java Swing addTab 计数

Java Swing addTab with count

我有一些秋千组件:

    //JList
    DefaultListModel listModel = new DefaultListModel();
    JList list = new JList(listModel);

    //JTabbedPane
    JTabbedPane tabbedPane = new JTabbedPane();
    frame.add(tabbedPane);

    //JSplitPane split
    JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,list , tabbedPane);
    splitPane.setDividerLocation(200);
    frame.add(splitPane);

    //JScrollPane & JTextPane to go inside the tabbed panes
    JTextPane textPane = new JTextPane();
    textPane.setFont(new Font("Calibri",Font.PLAIN,14));
    JScrollPane scrollPane = new JScrollPane(textPane);

当用户 "Opens" 一个文本文件时,它应该在 JListJTabbedPane 里面的 JTextPane 上显示它。这是我试过的:

int count = tabbedPane.getTabCount(); 

//Add the selected file's name as a string to tabbedPane & listModel.
tabbedPane.addTab(file, scrollPane);
tabbedPane.setSelectedIndex(count); 

listModel.addElement(file);
list.setSelectedIndex(count); 

我得到的错误:

Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 1, Tab count: 1

我被告知要保留对原始选项卡式窗格的引用,以便 ActionListener 中的代码可以引用此变量并添加更多 - 但我不明白这一点(我是新手)。任何帮助将不胜感激。

list.setSelectedIndex(count); 

Java 索引是从零开始的。代码应该是:

list.setSelectedIndex(count - 1); 

I've been told to keep a reference to the original tabbed pane

而你还没有这样做。

JTabbedPane tabbedPane = new JTabbedPane();

那是局部变量,不是实例变量。该代码与我在上一个问题中提供给您的 link 中的代码有何相似之处???

局部变量和实例变量是基本的Java。如果您不理解这些,您就不应该使用 GUI。先阅读教科书了解 Java 基础知识。阅读我给你的教程link。下载工作代码并花时间理解它!!!