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 に答える