Frage

In unserer Swing-Anwendung, verwenden wir ein automatisiertes Testwerkzeug in QA (QF-Test), das besser funktioniert, wenn die Swing-Komponenten genannt werden. (Aufruf Component.setName). Obwohl ihre automatischen Namenszuordnungen recht gut arbeiten, führen wir SwingX Komponenten in das Projekt und dass einige Probleme für das Werkzeug verursacht.

Es gibt viele mögliche Komponenten auf einem Bildschirm (typische Business-App Eingabemasken, aber viele von ihnen - die App ist auf dem Komplexitätsgrad eines ERP) sind, welche Möglichkeiten gibt es für die Benennung von Swing-Komponenten in ein maßen unauffällig Weise?

War es hilfreich?

Lösung

Ich speichere typischerweise die Felder in einem JPanel in Eigenschaften auf der JPanel, wie folgt aus:

private JLabel firstNameLabel;
private JTextField firstNameTextField;

Am Ende der Routine, dass Instantiiert und diese Komponenten legt, könnten Sie eine Routine ausgeführt, dass Anwendungen eine Schleife durch jede Eigenschaft des Paneels java.lang.reflect. Wenn eine Eigenschaft aus der Klasse Component absteigt, können Sie setName auf sich mit dem Namen der Eigenschaft nennen. So zum Beispiel, wäre es am Ende Aufruf:

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

... außer durch java.lang.reflect

könnten Sie haben auch die Routine die holprigen Fall Namen von Variablen untersuchen und mit Standardfall mit Leerzeichen zu ersetzen. Dies würde sie besser lesbar machen.

Dieser Ansatz stellt sicher, dass unabhängig davon, welche Komponenten zu einem Panel hinzuzufügen, werden sie alle angezeigten Namen erhalten.

Andere Tipps

Ich verwende im Allgemeinen einen zusammengesetzten Namen für alle meine Komponenten; ist der Name auf dem Stammnamen (zB ein JDialog) und der Feldname (erhalten durch Reflexion) gebaut. Das macht Komponentennamen einzigartig in den meisten Fällen (Sie können immer noch Konflikte haben je nachdem, wie man Eltern nennen und wie Sie verwenden sie, zum Beispiel, wenn Sie mehrere JInternalFrame öffnen und alle haben den gleichen Namen ...)

Ich habe eine generische Benennungsstrategie umgesetzt (das bedeutet, dass nur) in Guts-GUI .

Durch die Art und Weise, Komponente Namensgebung ist Testen nicht nur interessant für UI, aber es kann auch für die Ressourceneinspritzstrategien (i18n von Komponenten) nützlich sein.

Wie bauen Sie die Schnittstelle? JFormDesigner und wahrscheinlich die meisten anderen Editoren erlauben den Namen der Komponente automatisch einzustellen, was sehr praktisch ist. Die meiste Zeit muss ich gar nicht denken über die Komponentennamen. Einzige Ausnahmen sind Komponenten, die mit JFormDesigner nicht in Verkehr gebracht werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top