我正在尝试动态地向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);
}
问题是我需要在课程中查看文本区域名称,以便我可以在以后添加到它,并且它应该能够有很多选项卡,因此每个文本区域应该有不同的名称。
任何想法?
答案 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
应该可以正常使用