0

这个问题不一定是 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 是即将到来的优先级。有什么想法可以动态实现吗?

4

2 回答 2

2

您可以调用 JTabbedPane 上的 insertTab 方法将新选项卡插入到指定位置。

    insertTab(title, icon, panel, title, index);

因此,您可以遍历每个选项卡并根据优先级将其插入指定索引处。

于 2012-12-20T16:55:27.793 回答
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
...
于 2012-12-20T17:00:25.620 回答