質問

Swing アプリケーションでは、Swing コンポーネントに名前を付けるとより適切に機能する QA (Qf-Test) の自動テスト ツールを使用しています。(Component.setName の呼び出し)。自動名前割り当てはかなりうまく機能しますが、SwingX コンポーネントをプロジェクトに導入しているため、ツールにいくつかの問題が発生しています。

画面上には潜在的なコンポーネントが多数あります (通常のビジネス アプリのデータ入力画面ですが、その数は多く、アプリは ERP の複雑さレベルにあります)。目立たない方法でスイング コンポーネントに名前を付けるにはどのようなオプションがありますか?

役に立ちましたか?

解決

通常、次のように、JPanel のプロパティにフィールドを JPanel に保存します。

private JLabel firstNameLabel;
private JTextField firstNameTextField;

これらのコンポーネントをインスタンス化してレイアウトするルーチンの最後に、次のルーチンを実行できます。 java.lang.reflect パネルの各プロパティをループします。プロパティがクラスから派生した場合 Component, 、電話することができます setName 物件名が書いてあります。したがって、たとえば、最終的には次のように呼び出されます。

this.firstNameLabel.setName("firstNameLabel");
this.firstNameTextField.setName("firstNameTextField");

...経由を除く java.lang.reflect

また、ルーチンで変数の不規則なケース名を検査し、それをスペースを含む標準的なケース名に置き換えることもできます。これにより、より読みやすくなります。

このアプローチにより、パネルにどのコンポーネントを追加しても、すべてにわかりやすい名前が付けられます。

他のヒント

私は通常、すべてのコンポーネントに複合名を使用します。名前は親名に基づいて構築されます (例: JDialog) とフィールド名 (リフレクションによって取得)。これにより、ほとんどの場合、コンポーネント名が一意になります (親の名前の付け方や親の使用方法によっては、競合が発生する可能性があります。いくつか開けると JInternalFrame そして全員同じ名前です...)

私は一般的な命名戦略(まさにそれを行う)を実装しました ガッツGUI.

ところで、コンポーネントの名前付けは UI テストにとって興味深いだけでなく、リソース注入戦略 (コンポーネントの i18n) にも役立つ場合があります。

インターフェースはどのように構築していますか?JFormDesigner とおそらく他のほとんどのエディターでは、コンポーネントの名前を自動的に設定できるため、非常に便利です。ほとんどの場合、コンポーネント名についてはまったく考える必要はありません。JFormDesigner を使用して配置されないコンポーネントのみが例外です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top