带有计数的Java Swing addTab

时间:2018-02-11 22:03:31

标签: java swing jtabbedpane

我有一些摇摆组件:

    //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);

当用户"打开"一个文本文件,它应该显示在JListJTextPane内的JTabbedPane内。这就是我尝试过的:

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); 

我得到的错误:

  

线程中的异常" AWT-EventQueue-0" java.lang.IndexOutOfBoundsException:Index:1,Tab count:1

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

1 个答案:

答案 0 :(得分:2)

list.setSelectedIndex(count); 

Java索引基于零。代码应该是:

list.setSelectedIndex(count - 1); 
  

我被告知要保留对原始标签式窗格的引用

你仍然没有这样做。

JTabbedPane tabbedPane = new JTabbedPane();

这是一个局部变量,而不是一个实例变量。该代码如何看起来像我在上一个问题中提供的链接中的代码???

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