homebeaver / SwingSet

try to complete SwingSet3 org.swinglabs.swingx jars 1.6.6 for java 8 and openjdk 17 (Temurin)
GNU Lesser General Public License v2.1
0 stars 0 forks source link

BUG in instance of class javax.swing.plaf.basic.BasicComboPopup.isVisible() #57

Open homebeaver opened 8 months ago

homebeaver commented 8 months ago
    public boolean isVisible() {
        return popup != null;
    }

The method doesnot respect the visibility of the popup component. This togglePopup does not work appropriately:

    protected void togglePopup() {
        if ( isVisible() ) {
            hide();
        }
        else {
            show();
        }
    }

JDK17, JaveSE-16

homebeaver commented 8 months ago

der erste Ansatz war:

    protected class Handler implements ...
        , MouseListener
    { ...
        public void mouseClicked(MouseEvent e) {
            toggleArrowButton();
        }
...

arrowButton.addMouseListener(getHandler());
...
    private void toggleArrowButton() {
        if(arrowButton instanceof BasicArrowButton basicArrowButton) {
            if(basicArrowButton.getDirection()==BasicArrowButton.SOUTH) {
                basicArrowButton.setDirection(BasicArrowButton.NORTH);
            } else {
//              basicArrowButton.setDirection(BasicArrowButton.SOUTH);
                popup.hide();
            }
        } else {
            Icon icon = arrowButton.getIcon();
            if(icon == arrowIcon) {
                arrowButton.setIcon(UIManager.getIcon("ComboBox.isShowingPopupIcon"));
            } else {
                arrowButton.setIcon(arrowIcon);
                popup.hide();
            }
        }
    }

Nachdem ich die Fehlerquelle gefunden hab, ist dieser Ansatz obsolet.