Frage

Was ist java.awt.Component.getName() verwendet? Es scheint immer in den Anwendungen null werden ich mit NetBeans bauen. Ich denke, einen Hilfetext pro Komponente darin zu speichern -. Ich habe nicht die Tooltip verwenden will, ich habe eine andere Platte, wo ich den Hilfetext zeigen werde

War es hilfreich?

Lösung

Component.setName (..) in der JDK vor allem durch die Optik und Haptik Implementierungsklassen verwendet, um ID-wie Strings für jede Komponente eingestellt, z.B. BasicOptionPaneUI könnte es auf einer Schaltfläche Komponente ruft seinen Namen auf „OptionPane.button“.

Die getName () in toString () verwenden Methoden, bei der Einstellung der Namen der untergeordneten Komponenten in einem Composite / Component Eltern und in AWT und Swing Debug Logging-Code. Ich nehme stark an, dass die Methode getName () auch von einigem AWT / Swing-Test-Frameworks verwendet wird.

Also, wenn Sie auf eine der oben genannten Verwendungen von getName nicht abhängig sind (), Sie könnten versuchen, es für Ihre Hilfe Nachrichten mit, obwohl ich es nicht empfehlen würde.

Vielleicht sollten Sie Ihr Design überdenken? Verwenden Sie den Namen einige Lookup in einem hashmap zu tun, die den Hilfetext aus einem Ressourcenbündel lädt?

Andere Tipps

Ich habe es nicht für irgendetwas gesehen vom Framework verwendet. Seine nützlich, wenn Sie Komponenten in ein Verfahren übergeben werden, so dass Sie ihren Namen fragen, um zu entscheiden, wie sie zu handhaben. Außerdem verwenden viele UI-Test-Frameworks, dies zu ermöglichen es Ihnen, die Komponenten nach Name in den Testskripten zu verweisen. Ich sehe keinen Grund, warum Sie können es allerdings nicht für Hilfetext verwenden.

FEST verwendet den Namen einer Komponente in Testfälle zu identifizieren.

Die component.getName() Methode wird meist mit Hörern verwendet. Wenn Sie den Namen einer Komponente (component.setName(name)) setzen Sie auf diese spezifische Komponente innerhalb einer Methode eines Listener nennen kann.

Beispiel:

public void someMethodOfsomeListener(SomeEvent e){
   if (e.getComponent().getName().equals(component.getName())
      //do stuff...
}

Beachten Sie, dass Sie den Namen der Komponente explizit festgelegt haben, sonst wird es null zurück.

Herman Lintvelt Antwort war dann aber die richtige für meine Anwendung auf.

Ich habe ein Ressourcenbündel namens HelpText.properties. Es enthält Name = Wert-Paare. Ich setName () d jedes meiner Komponenten mit dem „name“ aus dem Paar Name = Wert. Früher habe ich dann einen der Rahmen des getGlassPane () alle Mausbewegungen zu erfassen. Wenn eine Maus über eine benannte Komponente läuft, ist es den Namen in das Bündel nachschlägt, helfen wird angezeigt, wenn verfügbar und leitet auf die Mausbewegung entlang der tatsächlichen Komponente.

Puh. Nur noch 2 Tage im Wert von dinking um. Ich fange endlich an Java zu gewöhnen:)

Auch, weil ich denke, java.awt.Component ein Schwergewicht Objekt in X ist, Programme wie xwininfo und xwd könnten Sie ermöglichen, sie mit Namen angeben.

Ich habe gerade versucht es mit einem JFrame und setName gesetzt nicht der Name des Fensters, das Fenster war durch die Zeichenfolge mit dem Namen ich in den Konstruktor übergeben. Aber ich habe keinen AWT-nur Beispielcode mit zu testen, so könnte ich falsch sein über das, was ich oben geschrieben hätte.

Ich benutze es für auseinandere Zuhörer in einer einzigen Klasse Handling. Ich erhalte als Parameter die Komponente, die nicht als Container meine object.addListener enthält, sondern als die Klasse, die das Objekt enthält. Dank Vivavinyl für die die Spitze zuerst den Namen der Einstellung. Es war nützlich und gearbeitet hat.

Das ist, was ich benutze getName () für:

    Frame[] frames = JFrame.getFrames();

    for (int i = 0; i < frames.length; ++i) {

        //get the frame
        Frame frame = frames[i];

        if (frame.getName().equals(frameName)) {

            //make the frame visible
            frame.setVisible(true);

            //focus the frame
            frame.requestFocus();

            //found
            return;

        }

    }

Ich habe immer Namen viele Antworten gesucht und ich denke, dass dies die einzige einfache Lösung ist

public static void main(String[] args) {
    ActionListener actionListener = new ActionListener() {
        public void actionPerformed(ActionEvent actionEvent) {
            String name = actionEvent.getSource().toString();
            UserReaction(ObjectName.getComponentVariableName(name), "null");
        }
    };
    Button calculate_btn = new Button("Calculate");
    calculate_btn.setName("Calculate");
    calculate_btn.addActionListener(actionListener);
}

private static void UserReaction(String objectName) {
    if (objectName.equals("Calculate")) {
        //do something;         
    }
}static public String getComponentVariableName(String name) {
    String res = (name.substring(name.indexOf("[") + 1));
    res = res.split(",")[0];
    return res;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top