我有一些摇摆组件:
//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);
当用户"打开"一个文本文件,它应该显示在JList
和JTextPane
内的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中的代码可以引用此变量并添加更多 - 但我不明白这一点(我是新的)。任何帮助都将受到高度赞赏。
答案 0 :(得分:2)
list.setSelectedIndex(count);
Java索引基于零。代码应该是:
list.setSelectedIndex(count - 1);
我被告知要保留对原始标签式窗格的引用
你仍然没有这样做。
JTabbedPane tabbedPane = new JTabbedPane();
这是一个局部变量,而不是一个实例变量。该代码如何看起来像我在上一个问题中提供的链接中的代码???
局部变量和实例变量是基本的Java。如果您不了解这些,则不应使用GUI。首先阅读您的教科书,了解Java基础知识。阅读我给你的教程链接。下载工作代码并花时间了解它!!!