Open homebeaver opened 8 months ago
der erste Ansatz war:
toggleArrowButton
) 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.
isVisible()
returnsfalse
.isVisible()
is defined in super ofBasicComboPopup
, which isJPopupMenu
The method doesnot respect the visibility of the popup component. This togglePopup does not work appropriately:
JDK17, JaveSE-16