1

我正在尝试将选项卡动态添加到 JTabbedPane 我使用以下代码执行此操作:

private tab = new JTabbedPane();

frame.add(tab, BorderLayout.CENTER);

public void newTab(String tab){
      JPanel panel1 = new JPanel();
      JTextArea tArea = new JTextArea();
      panel1.add(tArea);
      tab.add(tab, panel1);
      }

问题是我需要在整个类中都可以查看文本区域名称,以便稍后我可以附加到它,并且它应该可以有很多选项卡,因此每个文本区域应该有不同的名称。

有任何想法吗?

4

2 回答 2

1

您应该使用 a Listof JTextAreas。

private final List<JTextArea> areas = new ArrayList<JTextArea>();

public void newTab(String tab){
      JPanel p = new JPanel();
      JTextArea tArea = new JTextArea();
      p.add(tArea);
      tab.add(tab, p);
      areas.add(tArea);
}

甚至是A Map(仅当标题标题是唯一的)。

private final Map<String, JTextArea> areas = new HashMap<String, JTextArea>();

public void newTab(String tab){
      JPanel p = new JPanel();
      JTextArea tArea = new JTextArea();
      p.add(tArea);
      tab.add(tab, p);
      areas.put(tab, tArea);
}
于 2012-11-07T23:24:38.677 回答
0

您有名称冲突问题

public void newTab(String tab){ // <-- tab declared as String here
    JPanel panel1 = new JPanel();
    JTextArea tArea = new JTextArea();
    panel1.add(tArea);
    tab.add(tab, panel1); // <-- tab (String) doesn't have an add method - error~~
}

尝试类似:

public void newTab(String tabName){
    JPanel panel1 = new JPanel();
    JTextArea tArea = new JTextArea();
    panel1.add(tArea);
    tab.add(tabName, panel1); // <-- Now we know which tab we're talking about ;)
}

反而

一旦你解决了这个问题,Map@mercutio 的建议使用应该可以正常工作

于 2012-11-07T23:59:13.317 回答