そのため、非常に大きなプロジェクトですべてのスイング コンポーネントに一意の名前を付けるタスクがあります。そこで、すべてのコードベースを自動的に検索するプログラムを作成し、swing コンポーネントを初期化するたびに適切に名前を付けました。この静的メソッドからインスタンス番号を取得します。
public static int getInstanceNumber(Object instance) {
if (instancesMap.get(instance.getClass()) != null) {
List<Object> instances = instancesMap.get(instance.getClass());
if (!instances.contains(instance)) {
instances.add(instance);
return instancesMap.get(instance.getClass()).size();
} else {
return instances.indexOf(instance) + 1;
}
} else {
ArrayList<Object> instances = new ArrayList<Object>();
instances.add(instance);
instancesMap.put(instance.getClass(), instances);
return instancesMap.get(instance.getClass()).size();
}
}
そして、私は some_component.setName(className+getInstanceNumber(this)/variable_name); のように使用します。
それは仕事を成し遂げます、私の問題は、この命名が実行全体で一貫している必要があることです。スレッド化が邪魔にならないようにするために何を確認する必要がありますか、または異なる実行で異なる名前付けの問題が発生しないように別の方法でアプローチするにはどうすればよいですか (アプリケーションで同じパスを移動すると仮定します)。 .
スキッシュの自動テストにはこれらの名前が必要なので、同じテストを実行するたびに、まったく同じスイングコンポーネントに同じ名前が必要です/