Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации

Popup & PopupFactory

Отчет bugtraq, который соответствует этому изменению: 4303635.

Бесспорный Components, такой как JPopupMenu и JToolTip, представьте себя, прежде всего, другой Components в определенной иерархии включения. А не каждый из них Components содержащий тот же самый код, чтобы получить то же самое поведение, они делегируют к a Popup который может быть получен из a PopupFactory. A Popup в состоянии вывести на экран a Component в определенном расположении на экране. Основанный на размере и расположении требуемого Component, PopupFactory возвращает соответствующее Popup.

Ранее, Popup и PopupFactory был частный пакет. Для JDK 1.4, мы представили эти классы, чтобы позволить пользовательским реализациям стили создать свое собственное Popups. Это позволяет другому взгляду и чувствам располагать меню в соответствующий способ для их стили. С этой целью мы обнародовали эти классы:

public class PopupFactory {
    public static void setSharedInstance(PopupFactory factory);
    public static PopupFactory getSharedInstance();
    public Popup getPopup(Component owner, Component contents, int x, int y) throws IllegalArgumentException;
    }
    
public class Popup {
    protected Popup(Component owner, Component contents, int x, int y);
    protected Popup();
    public void show();
    public void hide();
    }

Включать Popup используемый JPopupMenu чтобы быть замененными UI, мы добавили следующий к PopupMenuUI:

    public Popup getPopup(JPopupMenu popup, int x, int y);
    

PopupMenuUI.getPopup's реализация получает Popup от совместно используемого PopupFactory, но пользовательские реализации стили могут переопределить это и возвратиться что Popup они требуют.

Семантические Изменения

JPopupMenu ранее определенный метод setLocation. До этого выпуска этот метод вызвал бы setLocation на Popup, но поскольку мы удалили этот метод из Popup, JPopupMenu теперь воссоздает Popup.

JPopupMenu также определенный метод setPopupSize, который вызвал setSize на Popup если это было видимо. Внутренне, мы изменили этот метод, чтобы установить привилегированный размер JPopupMenu, который дает те же самые результаты. Если JPopupMenu видимо, когда это вызывается, Popup будет воссоздан. JPopupMenu javadoc, измененный, чтобы отразить новое поведение:

    public void setPopupSize(Dimension d);

    public void setPopupSize(int width, int height);

Oracle и/или его филиалы Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами