سؤال

لدي JFrame (الأصل) الذي يخلق إطار إدخال (طفل) حيث أحصل على بعض المعلمات.

في إطار "الطفل" لدي أزرار "موافق" و "إلغاء".

عند الضغط على زر "موافق"، يجب تحديث الإطار الأصل مع بيانات جديدة.

ما هي أفضل طريقة للقيام بذلك؟

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

المحلول

تمر في إشارة إلى الإطار الأصل عند إنشاء (أو عرض) إطار الطفل. سيحتاج ذلك إلى إنشاء منشئ أو عرض مثالي.

بمجرد أن يكون لدى الطفل المرجع، يمكنه بالطبع استدعاء أي طريقة تعرض الوالد كجمهور، مثل outdate ()

نصائح أخرى

اعتبارا من جافا 1.3

public class MyPanel extends JPanel
{

  public MyPanel() {

    ....

    JButton cancelButton = new JButton("Cancel");
    cancelButton.addActionListener(
      new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          // <<<< HERE'S THE INTERESTING BIT >>>>
          javax.swing.SwingUtilities.getWindowAncestor(MyPanel.this).dispose();
        }
      }
    );
    add(cancelButton);

    .....

  }

}

هل يمكن أن يكون لديك JFrame تطبيق ActionListener وإضافته إلى الزر باستخدام الإدماج IndactionClistener.

أحب أن أضع طريقة "إطلاق ()" على جميع إطارات / مربعات الحوار. مع الطريقة الصحيحة يمكن أن تعيد النتيجة.

مثال على قيمة الإرجاع من مربع الحوار:

private static class MyDialog extends JDialog {
    String result;
    private JButton btnOk = new JButton("OK");

    public MyDialog() {
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setModalityType(ModalityType.APPLICATION_MODAL);

        add(btnOk);
        btnOk.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                result = "Ok";
                setVisible(false);
            }
        });
    }

    public String launch() {
        result = "Cancel";
        pack();
        setVisible(true);
        return result;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top