将选项卡添加到jTabbedPane,其中每个选项卡都有一个textArea,其名称为java

时间:2012-11-07 23:20:27

标签: java swing tabs jtextarea jtabbedpane

我正在尝试动态地向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);
      }

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

任何想法?

2 个答案:

答案 0 :(得分:1)

您应该使用List JTextArea s。

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

甚至是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);
}

答案 1 :(得分: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 ;)
}

相反

解决后,@ mercutio建议使用Map应该可以正常使用