这个问题不一定特定于JTabbedPane,但这是我遇到它的地方。我们的想法是,您有一个优先级列表Priority[]
,根据这些优先级,您希望看到要呈现的输出选项卡。每个选项卡可以包含许多与给定优先级相关联的对象,并且我希望在检测到第一个对象时生成该选项卡。对象由外部服务生成,它们可以按任何顺序排列。所以,假设你有
[Low, Medium, Warning, Alert, Crash]
作为您的优先事项列表。现在,这就是我想要生成的内容
[] -> []
[Alert] -> [Alert]
[Alert, Alert] -> [Alert]
[Alert, Alert, Low] -> [Low, Alert]
[Alert, Alert, Low, Medium] -> [Low, Medium, Alert]
RHS是标签的顺序,LHS是即将到来的优先事项。我有什么想法可以动态地实现这个目标吗?
答案 0 :(得分:2)
您可以在JTabbedPane上调用insertTab方法,将新选项卡插入指定位置。
insertTab(title, icon, panel, title, index);
因此,您可以遍历每个选项卡并根据优先级将其插入指定的索引。
答案 1 :(得分:1)
这样的事情:
List<String> priorities = Arrays.asList("Low", "Medium", "Warning", "Alert", "Crash");
Map<List<String>> data = new LinkedHashMap<List<String>>();
for (String priority : priorities)
data.put(priority, new ArrayList<String>());
...
传入数据:
String priority = ...;
List<String> list = data.get(priority);
list.add("my new data");
if (list.size() == 1) {
//insert tab
int index = 0;
int priorityIndex = priorities.indexOf(priority);
while (priorityIndex > priorities.indexOf(tabbedPaned.getTitleAt(index))) {
index++;
}
tabbedPane.insertTab(priority, ... , index); //includes index where to insert the tab
}
//update tabs
...