Аккордеонное Меню, чтобы показать набор изображений в Java - PullRequest
2 голосов
/ 15 мая 2011

Я делаю проект Java, который включает в себя немного графического материала.Я хочу отобразить набор BufferedImages в меню аккордеона.это означает, что когда я щелкаю по одному корневому элементу меню Accordion, он должен отображать набор изображений под этим именем, а при щелчке по другому элементу корневого меню он должен показывать другой набор изображений.Как я мог реализовать это с Java?Есть ли способ добавить JPanel в качестве элемента меню «Аккордеон»?Если кто-то может предоставить пример кода, это действительно заметно.

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Не удержался от забавы: оказалось, что можно немного настроить JXTaskPaneContainer (в SwingX), чтобы он вел себя как аккордеон. Все, что для этого нужно, - это заставить не более одного из содержащихся в нем JXTaskPaneContainers. Что-то вроде фрагмента кода:

    JXTaskPaneContainer container = new JXTaskPaneContainer() {

        private JXTaskPane current;

        private PropertyChangeListener expansionListener;

        /**
         * @inherited <p>
         */
        @Override
        protected void addImpl(Component comp, Object constraints, int index) {
            super.addImpl(comp, constraints, index);
            if (comp instanceof JXTaskPane) {
                grabExpansionControl((JXTaskPane) comp);
            }
        }

        private void grabExpansionControl(JXTaskPane comp) {
            if (current != null) {
                comp.setCollapsed(true);
            } else {
                current = comp;
                comp.setCollapsed(false);
            }
            comp.addPropertyChangeListener("collapsed",
                    getExpansionListener());
        }

        private void updateCurrentTaskPane(JXTaskPane source) {
            if (source != current) {
                if (!source.isCollapsed()) {
                    if (current != null) {
                        current.setCollapsed(true);
                    }
                    current = source;
                }
            }
        }

        private PropertyChangeListener createExpansionListener() {
            PropertyChangeListener l = new PropertyChangeListener() {

                @Override
                public void propertyChange(PropertyChangeEvent evt) {
                    // TODO Auto-generated method stub
                    updateCurrentTaskPane((JXTaskPane) evt.getSource());
                }
            };
            return l;
        }


        private PropertyChangeListener getExpansionListener() {
            if (expansionListener == null) {
                expansionListener = createExpansionListener();
            }
            return expansionListener;
        }


    };
    ((VerticalLayout) container.getLayout()).setGap(0);
0 голосов
/ 15 июня 2011

Ну, немного погуглив, и я нашел эту ссылку.Это может быть полезно для вас - http://code.google.com/p/martin-personal-project/downloads/detail?name=SwingAccordionMenu.zip&can=2&q=

Вы получите ZIP-файл, разархивируйте и запустите SwingAccordionMenu.jar, вы получите аккордеон в качестве вывода, например - enter image description here

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