Расширение Firefox не работает с URL-адресами, отличными от http: // https: //

Речь идет о том, «что» вы хотите достичь, что приведет к «как» ...

Например ...

Вы могли бы поддерживать ссылку на второй кадр в первом кадре и когда кнопка нажата, сообщите второму кадру, что произошло изменение ...

public class FirstFrame extends JFrame {
    // Reference to the second frame...
    // You will need to ensure that this is assigned correctly...
    private SecondFrame secondFrame;
    // The text field...
    private JTextField textField;

    /*...*/

    // The action handler for the button...
    public class ButtonActionHandler implements ActionListener {
        public void actionPerformed(ActionEvent evt) {
            secondFrame.setLabelText(textField.getText());
        }
    }
}

Проблема с этим заключается в том, что он SecondFrame , позволяя ему делать противные вещи, например, удалять все компоненты, например.

Лучшим решением было бы предоставить серию интерфейсов, которые позволили бы двум классам разговаривать друг с другом ...

public interface TextWrangler {
    public void addActionListener(ActionListener listener);
    public void removeActionListener(ActionListener listener);
    public String getText();
}

public class FirstFrame extends JFrame implements TextWrangler {
    private JButton textButton;
    private JTextField textField;

    /*...*/

    public void addActionListener(ActionListener listener) {
        textButton.addActionListener(listener);
    }

    public void removeActionListener(ActionListener listener) {
        textButton.removeActionListener(listener);
    }

    public String getText() {
        return textField.getText();
    }
}

public class SecondFrame extends JFrame {
    private JLabel textLabel;
    private JTextField textField;
    private TextWrangler textWrangler;

    public SecondFrame(TextWrangler wrangler) {
        textWrangler = wrangler;
        wrangler.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                textLabel.setText(textWrangler.getText());
            }
        });
        /*...*/
    }
}

В основном это ограничивает доступ к SecondFrame. Хотя можно утверждать, что ActionListener в SecondFrame может использовать источник ActionEvent, чтобы узнать больше информации по своей природе, это был бы ненадежный механизм, так как interface не упоминает, как это должен быть реализован ...

Это основной пример Pattern наблюдателя

0
задан devidduma 25 February 2015 в 14:13
поделиться