سؤال

ما هو java.awt.Component.getName() المستخدمة ؟ يبدو دائما أن يكون null في التطبيقات بناء مع NetBeans.أنا أفكر في تخزين بعض المساعدة النص في عنصر في ذلك -- أنا لا تريد استخدام تلميح الأدوات, لدي فريق آخر حيث سوف تظهر نص التعليمات.

هل كانت مفيدة؟

المحلول

المكون.setName(..) يستخدم في JDK في الغالب من قبل الشكل والمظهر تنفيذ دروس تعيين معرف مثل سلاسل لكل مكون على سبيل المثالBasicOptionPaneUI قد يطلق على زر عنصر إلى مجموعة اسمها إلى "OptionPane.زر".

على getName() يستخدم في toString() الأساليب عند وضع أسماء الطفل المكونات داخل مركب/الأم مكون في AWT والبديل تسجيل التصحيح رمز.أشك بقوة أن getName() الطريقة تستخدم أيضا من قبل بعض AWT/البديل اختبار الأطر.

حتى إذا كنت لا تعتمد على أي من الاستخدامات المذكورة أعلاه من getName () ، قد حاولت استخدامه لمساعدتك رسائل, على الرغم من أنني لا أوصي به.

ربما عليك إعادة النظر في التصميم الخاص بك ؟ استخدام الاسم إلى القيام ببعض البحث في hashmap أن الأحمال مساعدة النص من الموارد حزمة ؟

نصائح أخرى

أنا لم أر ذلك استخدامها في أي شيء من هذا الإطار.المفيد إذا كان لديك المكونات التي يتم تمريرها إلى الأسلوب لذلك يمكنك أن تسأل اسمه أن تقرر كيفية التعامل معها.أيضا, العديد من واجهة المستخدم اختبار أطر استخدام هذا يسمح لك أن أشير إلى مكونات بالاسم في اختبار البرامج النصية.أنا لا أرى أي سبب لا يمكن استخدامه من أجل المساعدة في النص على الرغم من.

مهرجان يستخدم اسم العنصر التعرف عليه في testcases.

على component.getName() طريقة تستخدم في الغالب مع المستمعين.إذا قمت بتعيين اسم العنصر (component.setName(name)) يمكنك الاتصال إلى أن مكون معين من خلال طريقة Listener.

على سبيل المثال:

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

تكون على علم بأن لديك بشكل صريح تعيين اسم العنصر ، وإلا فإنه سيعود null.

هيرمان Lintvelt الجواب انتهت الصحيح بلدي التطبيق.

أنا خلقت الموارد حزمة اسمه HelpText.خصائص.أنه يحتوي على اسم=قيمة أزواج.أنا setName()د كل المكونات مع "اسم" من الاسم=قيمة الزوج.ثم كنت الإطار getGlassPane() لالتقاط جميع حركات الماوس.عندما الماوس يعمل على اسمه مكون يبدو يصل الاسم في حزمة ، يعرض المساعدة إذا كانت متوفرة وإلى الأمام الماوس الحركة جنبا إلى جنب المكون الفعلي.

يا للعجب.فقط 2 أيام بقيمة dinking حولها.أخيرا بدأت تعتاد على جافا :)

أيضا ، حيث أعتقد جافا.awt.مكون من الوزن الثقيل الكائن في X, برامج مثل xwininfo و xwd قد يتيح لك تحديد ذلك عن طريق الاسم.

لقد حاولت ذلك مع JFrame ، setName لم يحدد اسم النافذة النافذة كان اسمه من قبل سلسلة مررت في منشئ.ولكن ليس لدي أي awt فقط رمز المثال لاختبار لذا أنا يمكن أن تكون خاطئة حول ما كتبته أعلاه.

أنا استخدامها للتعامل مع المستمعين في كل فئة على حدة.تلقي كمعلمة المكون الذي يحتوي على الكائن.addListener لا كحاوية ولكن الطبقة التي تحتوي على هذا الكائن.شكرا Vivavinyl عن غيض من وضع الاسم الأول.كان من المفيد وعمل.

هذا هو ما يمكنني استخدام getName() عن:

    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;

        }

    }

لقد بحثت العديد من الإجابات على اسم وأعتقد أن هذا هو الحل السهل

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;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top