mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-11 06:27:13 -06:00
MenuItem: use isArmedOrSelected() instead of MenuSelectionManager to detect selected item
This commit is contained in:
@@ -35,8 +35,6 @@ import javax.swing.Icon;
|
|||||||
import javax.swing.JMenu;
|
import javax.swing.JMenu;
|
||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
import javax.swing.KeyStroke;
|
import javax.swing.KeyStroke;
|
||||||
import javax.swing.MenuElement;
|
|
||||||
import javax.swing.MenuSelectionManager;
|
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
import javax.swing.plaf.basic.BasicHTML;
|
import javax.swing.plaf.basic.BasicHTML;
|
||||||
@@ -446,6 +444,10 @@ debug*/
|
|||||||
htmlView.paint( HiDPIUtils.createGraphicsTextYCorrection( (Graphics2D) g ), textRect );
|
htmlView.paint( HiDPIUtils.createGraphicsTextYCorrection( (Graphics2D) g ), textRect );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns {@code true} if either the menu item is armed (mouse over item)
|
||||||
|
* or it is a {@code JMenu} and selected (shows submenu).
|
||||||
|
*/
|
||||||
protected static boolean isArmedOrSelected( JMenuItem menuItem ) {
|
protected static boolean isArmedOrSelected( JMenuItem menuItem ) {
|
||||||
return menuItem.isArmed() || (menuItem instanceof JMenu && menuItem.isSelected());
|
return menuItem.isArmed() || (menuItem instanceof JMenu && menuItem.isSelected());
|
||||||
}
|
}
|
||||||
@@ -470,23 +472,18 @@ debug*/
|
|||||||
if( !menuItem.isEnabled() )
|
if( !menuItem.isEnabled() )
|
||||||
return menuItem.getDisabledIcon();
|
return menuItem.getDisabledIcon();
|
||||||
|
|
||||||
MenuSelectionManager msm = MenuSelectionManager.defaultManager();
|
|
||||||
if( msm != null ) {
|
|
||||||
MenuElement[] path = msm.getSelectedPath();
|
|
||||||
MenuElement selectedElement = path.length > 0 ? path[path.length - 1] : null;
|
|
||||||
if( menuItem == selectedElement ) {
|
|
||||||
Icon selectedIcon = menuItem.getSelectedIcon();
|
|
||||||
if( selectedIcon != null )
|
|
||||||
return selectedIcon;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( menuItem.getModel().isPressed() && menuItem.isArmed() ) {
|
if( menuItem.getModel().isPressed() && menuItem.isArmed() ) {
|
||||||
Icon pressedIcon = menuItem.getPressedIcon();
|
Icon pressedIcon = menuItem.getPressedIcon();
|
||||||
if( pressedIcon != null )
|
if( pressedIcon != null )
|
||||||
return pressedIcon;
|
return pressedIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( isArmedOrSelected( menuItem ) ) {
|
||||||
|
Icon selectedIcon = menuItem.getSelectedIcon();
|
||||||
|
if( selectedIcon != null )
|
||||||
|
return selectedIcon;
|
||||||
|
}
|
||||||
|
|
||||||
return icon;
|
return icon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -162,6 +162,9 @@ public class FlatMenusTest
|
|||||||
FlatMenusTest.MenuWithAccelerator menuWithAccelerator2 = new FlatMenusTest.MenuWithAccelerator();
|
FlatMenusTest.MenuWithAccelerator menuWithAccelerator2 = new FlatMenusTest.MenuWithAccelerator();
|
||||||
JMenuItem menuItem40 = new JMenuItem();
|
JMenuItem menuItem40 = new JMenuItem();
|
||||||
JMenuItem menuItem39 = new JMenuItem();
|
JMenuItem menuItem39 = new JMenuItem();
|
||||||
|
JMenu menu12 = new JMenu();
|
||||||
|
JMenuItem menuItem41 = new JMenuItem();
|
||||||
|
JMenuItem menuItem42 = new JMenuItem();
|
||||||
menuBar2 = new JMenuBar();
|
menuBar2 = new JMenuBar();
|
||||||
JMenu menu8 = new JMenu();
|
JMenu menu8 = new JMenu();
|
||||||
FlatMenusTest.LargerMenuItem menuItem13 = new FlatMenusTest.LargerMenuItem();
|
FlatMenusTest.LargerMenuItem menuItem13 = new FlatMenusTest.LargerMenuItem();
|
||||||
@@ -377,6 +380,25 @@ public class FlatMenusTest
|
|||||||
menuWithAccelerator1.add(menuItem39);
|
menuWithAccelerator1.add(menuItem39);
|
||||||
}
|
}
|
||||||
menuBar1.add(menuWithAccelerator1);
|
menuBar1.add(menuWithAccelerator1);
|
||||||
|
|
||||||
|
//======== menu12 ========
|
||||||
|
{
|
||||||
|
menu12.setText("icons");
|
||||||
|
|
||||||
|
//---- menuItem41 ----
|
||||||
|
menuItem41.setText("selected icon");
|
||||||
|
menuItem41.setIcon(new ImageIcon(getClass().getResource("/com/formdev/flatlaf/testing/disabled_icons_test/intellij-menu-cut.png")));
|
||||||
|
menuItem41.setSelectedIcon(new ImageIcon(getClass().getResource("/com/formdev/flatlaf/testing/disabled_icons_test/intellij-show_dark.png")));
|
||||||
|
menu12.add(menuItem41);
|
||||||
|
|
||||||
|
//---- menuItem42 ----
|
||||||
|
menuItem42.setText("disabled icon");
|
||||||
|
menuItem42.setIcon(new ImageIcon(getClass().getResource("/com/formdev/flatlaf/testing/disabled_icons_test/intellij-menu-cut.png")));
|
||||||
|
menuItem42.setDisabledIcon(new ImageIcon(getClass().getResource("/com/formdev/flatlaf/testing/disabled_icons_test/intellij-menu-paste.png")));
|
||||||
|
menuItem42.setEnabled(false);
|
||||||
|
menu12.add(menuItem42);
|
||||||
|
}
|
||||||
|
menuBar1.add(menu12);
|
||||||
}
|
}
|
||||||
add(menuBar1, "cell 1 0 2 1,growx");
|
add(menuBar1, "cell 1 0 2 1,growx");
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
JFDML JFormDesigner: "7.0.3.1.342" Java: "15" encoding: "UTF-8"
|
JFDML JFormDesigner: "7.0.5.0.404" Java: "16" encoding: "UTF-8"
|
||||||
|
|
||||||
new FormModel {
|
new FormModel {
|
||||||
contentType: "form/swing"
|
contentType: "form/swing"
|
||||||
@@ -149,6 +149,23 @@ new FormModel {
|
|||||||
"accelerator": #KeyStroke0
|
"accelerator": #KeyStroke0
|
||||||
} )
|
} )
|
||||||
} )
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu12"
|
||||||
|
"text": "icons"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem41"
|
||||||
|
"text": "selected icon"
|
||||||
|
"icon": new com.jformdesigner.model.SwingIcon( 0, "/com/formdev/flatlaf/testing/disabled_icons_test/intellij-menu-cut.png" )
|
||||||
|
"selectedIcon": new com.jformdesigner.model.SwingIcon( 0, "/com/formdev/flatlaf/testing/disabled_icons_test/intellij-show_dark.png" )
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem42"
|
||||||
|
"text": "disabled icon"
|
||||||
|
"icon": new com.jformdesigner.model.SwingIcon( 0, "/com/formdev/flatlaf/testing/disabled_icons_test/intellij-menu-cut.png" )
|
||||||
|
"disabledIcon": new com.jformdesigner.model.SwingIcon( 0, "/com/formdev/flatlaf/testing/disabled_icons_test/intellij-menu-paste.png" )
|
||||||
|
"enabled": false
|
||||||
|
} )
|
||||||
|
} )
|
||||||
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
"value": "cell 1 0 2 1,growx"
|
"value": "cell 1 0 2 1,growx"
|
||||||
} )
|
} )
|
||||||
|
|||||||
Reference in New Issue
Block a user