mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-08 15:00:54 +03:00
Merge PR #490: Menus: improved usability of submenus
This commit is contained in:
@@ -5,6 +5,7 @@ FlatLaf Change Log
|
|||||||
|
|
||||||
#### New features and improvements
|
#### New features and improvements
|
||||||
|
|
||||||
|
- Menus: Improved usability of submenus. (PR #490; issue #247)
|
||||||
- Linux: Support using custom window decorations. Enable with
|
- Linux: Support using custom window decorations. Enable with
|
||||||
`JFrame.setDefaultLookAndFeelDecorated(true)` and
|
`JFrame.setDefaultLookAndFeelDecorated(true)` and
|
||||||
`JDialog.setDefaultLookAndFeelDecorated(true)` before creating a window.
|
`JDialog.setDefaultLookAndFeelDecorated(true)` before creating a window.
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ public abstract class FlatLaf
|
|||||||
|
|
||||||
private PopupFactory oldPopupFactory;
|
private PopupFactory oldPopupFactory;
|
||||||
private MnemonicHandler mnemonicHandler;
|
private MnemonicHandler mnemonicHandler;
|
||||||
|
private SubMenuUsabilityHelper subMenuUsabilityHelper;
|
||||||
|
|
||||||
private Consumer<UIDefaults> postInitialization;
|
private Consumer<UIDefaults> postInitialization;
|
||||||
private List<Function<Object, Object>> uiDefaultsGetters;
|
private List<Function<Object, Object>> uiDefaultsGetters;
|
||||||
@@ -244,6 +245,10 @@ public abstract class FlatLaf
|
|||||||
mnemonicHandler = new MnemonicHandler();
|
mnemonicHandler = new MnemonicHandler();
|
||||||
mnemonicHandler.install();
|
mnemonicHandler.install();
|
||||||
|
|
||||||
|
// install submenu usability helper
|
||||||
|
subMenuUsabilityHelper = new SubMenuUsabilityHelper();
|
||||||
|
subMenuUsabilityHelper.install();
|
||||||
|
|
||||||
// listen to desktop property changes to update UI if system font or scaling changes
|
// listen to desktop property changes to update UI if system font or scaling changes
|
||||||
if( SystemInfo.isWindows ) {
|
if( SystemInfo.isWindows ) {
|
||||||
// Windows 10 allows increasing font size independent of scaling:
|
// Windows 10 allows increasing font size independent of scaling:
|
||||||
@@ -323,6 +328,12 @@ public abstract class FlatLaf
|
|||||||
mnemonicHandler = null;
|
mnemonicHandler = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// uninstall submenu usability helper
|
||||||
|
if( subMenuUsabilityHelper != null ) {
|
||||||
|
subMenuUsabilityHelper.uninstall();
|
||||||
|
subMenuUsabilityHelper = null;
|
||||||
|
}
|
||||||
|
|
||||||
// restore default link color
|
// restore default link color
|
||||||
new HTMLEditorKit().getStyleSheet().addRule( "a, address { color: blue; }" );
|
new HTMLEditorKit().getStyleSheet().addRule( "a, address { color: blue; }" );
|
||||||
postInitialization = null;
|
postInitialization = null;
|
||||||
|
|||||||
@@ -0,0 +1,316 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2022 FormDev Software GmbH
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.formdev.flatlaf;
|
||||||
|
|
||||||
|
import java.awt.AWTEvent;
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.Component;
|
||||||
|
import java.awt.Container;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.EventQueue;
|
||||||
|
import java.awt.Graphics;
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
import java.awt.MouseInfo;
|
||||||
|
import java.awt.Point;
|
||||||
|
import java.awt.PointerInfo;
|
||||||
|
import java.awt.Polygon;
|
||||||
|
import java.awt.Rectangle;
|
||||||
|
import java.awt.Toolkit;
|
||||||
|
import java.awt.Window;
|
||||||
|
import java.awt.event.MouseEvent;
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.JLayeredPane;
|
||||||
|
import javax.swing.JMenu;
|
||||||
|
import javax.swing.JPopupMenu;
|
||||||
|
import javax.swing.MenuElement;
|
||||||
|
import javax.swing.MenuSelectionManager;
|
||||||
|
import javax.swing.RootPaneContainer;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
import javax.swing.Timer;
|
||||||
|
import javax.swing.UIManager;
|
||||||
|
import javax.swing.event.ChangeEvent;
|
||||||
|
import javax.swing.event.ChangeListener;
|
||||||
|
import com.formdev.flatlaf.ui.FlatUIUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Improves usability of submenus by using a
|
||||||
|
* <a href="https://height.app/blog/guide-to-build-context-menus#safe-triangle">safe triangle</a>
|
||||||
|
* to avoid that the submenu closes while the user moves the mouse to it.
|
||||||
|
*
|
||||||
|
* @author Karl Tauber
|
||||||
|
*/
|
||||||
|
class SubMenuUsabilityHelper
|
||||||
|
implements ChangeListener
|
||||||
|
{
|
||||||
|
private static final String KEY_USE_SAFE_TRIANGLE = "Menu.useSafeTriangle";
|
||||||
|
private static final String KEY_SHOW_SAFE_TRIANGLE = "FlatLaf.debug.menu.showSafeTriangle";
|
||||||
|
|
||||||
|
private SubMenuEventQueue subMenuEventQueue;
|
||||||
|
private SafeTrianglePainter safeTrianglePainter;
|
||||||
|
private boolean changePending;
|
||||||
|
|
||||||
|
// mouse location in screen coordinates
|
||||||
|
private int mouseX;
|
||||||
|
private int mouseY;
|
||||||
|
|
||||||
|
// target popup bounds in screen coordinates
|
||||||
|
private int targetX;
|
||||||
|
private int targetTopY;
|
||||||
|
private int targetBottomY;
|
||||||
|
|
||||||
|
private Rectangle invokerBounds;
|
||||||
|
|
||||||
|
void install() {
|
||||||
|
MenuSelectionManager.defaultManager().addChangeListener( this );
|
||||||
|
}
|
||||||
|
|
||||||
|
void uninstall() {
|
||||||
|
MenuSelectionManager.defaultManager().removeChangeListener( this );
|
||||||
|
uninstallEventQueue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stateChanged( ChangeEvent e ) {
|
||||||
|
if( !FlatUIUtils.getUIBoolean( KEY_USE_SAFE_TRIANGLE, true ))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// handle menu selection change later, but only once in case of temporary changes
|
||||||
|
// e.g. moving mouse from one menu item to another one, fires two events:
|
||||||
|
// 1. old menu item is removed from menu selection
|
||||||
|
// 2. new menu item is added to menu selection
|
||||||
|
synchronized( this ) {
|
||||||
|
if( changePending )
|
||||||
|
return;
|
||||||
|
changePending = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
EventQueue.invokeLater( () -> {
|
||||||
|
synchronized( this ) {
|
||||||
|
changePending = false;
|
||||||
|
}
|
||||||
|
menuSelectionChanged();
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuSelectionChanged() {
|
||||||
|
MenuElement[] path = MenuSelectionManager.defaultManager().getSelectedPath();
|
||||||
|
|
||||||
|
/*debug
|
||||||
|
System.out.println( "--- " + path.length );
|
||||||
|
for( int i = 0; i < path.length; i++ )
|
||||||
|
System.out.println( " " + i + ": " + path[i].getClass().getName() );
|
||||||
|
debug*/
|
||||||
|
|
||||||
|
// find submenu in menu selection
|
||||||
|
int subMenuIndex = findSubMenu( path );
|
||||||
|
|
||||||
|
// uninstall if there is no submenu in selection
|
||||||
|
if( subMenuIndex < 0 || subMenuIndex != path.length - 1 ) {
|
||||||
|
uninstallEventQueue();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get current mouse location
|
||||||
|
PointerInfo pointerInfo = MouseInfo.getPointerInfo();
|
||||||
|
Point mouseLocation = (pointerInfo != null) ? pointerInfo.getLocation() : new Point();
|
||||||
|
mouseX = mouseLocation.x;
|
||||||
|
mouseY = mouseLocation.y;
|
||||||
|
|
||||||
|
// get invoker screen bounds
|
||||||
|
JPopupMenu popup = (JPopupMenu) path[subMenuIndex];
|
||||||
|
Component invoker = popup.getInvoker();
|
||||||
|
invokerBounds = (invoker != null)
|
||||||
|
? new Rectangle( invoker.getLocationOnScreen(), invoker.getSize() )
|
||||||
|
: null;
|
||||||
|
|
||||||
|
// check whether mouse location is within invoker
|
||||||
|
if( invokerBounds != null && !invokerBounds.contains( mouseX, mouseY ) ) {
|
||||||
|
uninstallEventQueue();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compute top/bottom target locations
|
||||||
|
Point popupLocation = popup.getLocationOnScreen();
|
||||||
|
Dimension popupSize = popup.getSize();
|
||||||
|
targetX = (mouseX < popupLocation.x + (popupSize.width / 2))
|
||||||
|
? popupLocation.x
|
||||||
|
: popupLocation.x + popupSize.width;
|
||||||
|
targetTopY = popupLocation.y;
|
||||||
|
targetBottomY = popupLocation.y + popupSize.height;
|
||||||
|
|
||||||
|
// install own event queue to supress mouse events when mouse is moved within safe triangle
|
||||||
|
if( subMenuEventQueue == null )
|
||||||
|
subMenuEventQueue = new SubMenuEventQueue();
|
||||||
|
|
||||||
|
// create safe triangle painter
|
||||||
|
if( safeTrianglePainter == null && UIManager.getBoolean( KEY_SHOW_SAFE_TRIANGLE ) )
|
||||||
|
safeTrianglePainter = new SafeTrianglePainter( popup );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void uninstallEventQueue() {
|
||||||
|
if( subMenuEventQueue != null ) {
|
||||||
|
subMenuEventQueue.uninstall();
|
||||||
|
subMenuEventQueue = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( safeTrianglePainter != null ) {
|
||||||
|
safeTrianglePainter.uninstall();
|
||||||
|
safeTrianglePainter = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int findSubMenu( MenuElement[] path ) {
|
||||||
|
for( int i = path.length - 1; i >= 1; i-- ) {
|
||||||
|
if( path[i] instanceof JPopupMenu &&
|
||||||
|
path[i - 1] instanceof JMenu &&
|
||||||
|
!((JMenu)path[i - 1]).isTopLevelMenu() )
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Polygon createSafeTriangle() {
|
||||||
|
return new Polygon(
|
||||||
|
new int[] { mouseX, targetX, targetX },
|
||||||
|
new int[] { mouseY, targetTopY, targetBottomY },
|
||||||
|
3 );
|
||||||
|
}
|
||||||
|
|
||||||
|
//---- class SubMenuEventQueue --------------------------------------------
|
||||||
|
|
||||||
|
private class SubMenuEventQueue
|
||||||
|
extends EventQueue
|
||||||
|
{
|
||||||
|
private Timer mouseUpdateTimer;
|
||||||
|
private Timer timeoutTimer;
|
||||||
|
|
||||||
|
private int newMouseX;
|
||||||
|
private int newMouseY;
|
||||||
|
private AWTEvent lastMouseEvent;
|
||||||
|
|
||||||
|
SubMenuEventQueue() {
|
||||||
|
// timer used to slightly delay update of mouse location used for safe triangle
|
||||||
|
mouseUpdateTimer = new Timer( 50, e -> {
|
||||||
|
mouseX = newMouseX;
|
||||||
|
mouseY = newMouseY;
|
||||||
|
|
||||||
|
if( safeTrianglePainter != null )
|
||||||
|
safeTrianglePainter.repaint();
|
||||||
|
} );
|
||||||
|
mouseUpdateTimer.setRepeats( false );
|
||||||
|
|
||||||
|
// timer used to timeout safe triangle when mouse stops moving
|
||||||
|
timeoutTimer = new Timer( 200, e -> {
|
||||||
|
if( invokerBounds != null && !invokerBounds.contains( newMouseX, newMouseY ) ) {
|
||||||
|
// post last mouse event, which selects menu item at mouse location
|
||||||
|
if( lastMouseEvent != null ) {
|
||||||
|
postEvent( lastMouseEvent );
|
||||||
|
lastMouseEvent = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
uninstallEventQueue();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
timeoutTimer.setRepeats( false );
|
||||||
|
|
||||||
|
Toolkit.getDefaultToolkit().getSystemEventQueue().push( this );
|
||||||
|
}
|
||||||
|
|
||||||
|
void uninstall() {
|
||||||
|
mouseUpdateTimer.stop();
|
||||||
|
mouseUpdateTimer = null;
|
||||||
|
|
||||||
|
timeoutTimer.stop();
|
||||||
|
timeoutTimer = null;
|
||||||
|
|
||||||
|
lastMouseEvent = null;
|
||||||
|
|
||||||
|
super.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void dispatchEvent( AWTEvent e ) {
|
||||||
|
int id = e.getID();
|
||||||
|
|
||||||
|
if( e instanceof MouseEvent &&
|
||||||
|
(id == MouseEvent.MOUSE_MOVED || id == MouseEvent.MOUSE_DRAGGED) )
|
||||||
|
{
|
||||||
|
newMouseX = ((MouseEvent)e).getXOnScreen();
|
||||||
|
newMouseY = ((MouseEvent)e).getYOnScreen();
|
||||||
|
|
||||||
|
if( safeTrianglePainter != null )
|
||||||
|
safeTrianglePainter.repaint();
|
||||||
|
|
||||||
|
mouseUpdateTimer.stop();
|
||||||
|
timeoutTimer.stop();
|
||||||
|
|
||||||
|
// check whether mouse moved within safe triangle
|
||||||
|
if( createSafeTriangle().contains( newMouseX, newMouseY ) ) {
|
||||||
|
// update mouse location delayed (this changes the safe triangle)
|
||||||
|
mouseUpdateTimer.start();
|
||||||
|
|
||||||
|
timeoutTimer.start();
|
||||||
|
|
||||||
|
// remember last mouse event, which will be posted if the mouse stops moving
|
||||||
|
lastMouseEvent = e;
|
||||||
|
|
||||||
|
// ignore mouse event
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// update mouse location immediately (this changes the safe triangle)
|
||||||
|
mouseX = newMouseX;
|
||||||
|
mouseY = newMouseY;
|
||||||
|
}
|
||||||
|
|
||||||
|
super.dispatchEvent( e );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---- class SafeTrianglePainter ------------------------------------------
|
||||||
|
|
||||||
|
private class SafeTrianglePainter
|
||||||
|
extends JComponent
|
||||||
|
{
|
||||||
|
SafeTrianglePainter( JPopupMenu popup ) {
|
||||||
|
Window window = SwingUtilities.windowForComponent( popup.getInvoker() );
|
||||||
|
if( window instanceof RootPaneContainer ) {
|
||||||
|
JLayeredPane layeredPane = ((RootPaneContainer)window).getLayeredPane();
|
||||||
|
setSize( layeredPane.getSize() );
|
||||||
|
layeredPane.add( this, new Integer( JLayeredPane.POPUP_LAYER + 1 ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void uninstall() {
|
||||||
|
Container parent = getParent();
|
||||||
|
if( parent != null ) {
|
||||||
|
parent.remove( this );
|
||||||
|
parent.repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void paintComponent( Graphics g ) {
|
||||||
|
Point locationOnScreen = getLocationOnScreen();
|
||||||
|
g.translate( -locationOnScreen.x, -locationOnScreen.y );
|
||||||
|
|
||||||
|
g.setColor( Color.red );
|
||||||
|
((Graphics2D)g).draw( createSafeTriangle() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,622 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2022 FormDev Software GmbH
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.formdev.flatlaf.testing;
|
||||||
|
|
||||||
|
import java.awt.Component;
|
||||||
|
import java.awt.event.*;
|
||||||
|
import javax.swing.*;
|
||||||
|
import net.miginfocom.swing.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Karl Tauber
|
||||||
|
*/
|
||||||
|
public class FlatSubMenusTest
|
||||||
|
extends FlatTestPanel
|
||||||
|
{
|
||||||
|
public static void main( String[] args ) {
|
||||||
|
SwingUtilities.invokeLater( () -> {
|
||||||
|
FlatTestFrame frame = FlatTestFrame.create( args, "FlatSubMenusTest" );
|
||||||
|
UIManager.put( "FlatLaf.debug.menu.showSafeTriangle", true );
|
||||||
|
frame.applyComponentOrientationToFrame = true;
|
||||||
|
frame.showFrame( FlatSubMenusTest::new, panel -> ((FlatSubMenusTest)panel).menuBar );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
FlatSubMenusTest() {
|
||||||
|
initComponents();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showPopupMenuButtonActionPerformed(ActionEvent e) {
|
||||||
|
Component invoker = (Component) e.getSource();
|
||||||
|
PopupMenu popupMenu = new PopupMenu();
|
||||||
|
popupMenu.applyComponentOrientation( getComponentOrientation() );
|
||||||
|
popupMenu.show( invoker, 0, invoker.getHeight() );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initComponents() {
|
||||||
|
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
|
||||||
|
JButton showPopupMenuButton = new JButton();
|
||||||
|
menuBar = new JMenuBar();
|
||||||
|
JMenu menu3 = new JMenu();
|
||||||
|
JMenuItem menuItem1 = new JMenuItem();
|
||||||
|
JMenuItem menuItem50 = new JMenuItem();
|
||||||
|
JMenu menu4 = new JMenu();
|
||||||
|
JMenuItem menuItem9 = new JMenuItem();
|
||||||
|
JMenuItem menuItem10 = new JMenuItem();
|
||||||
|
JMenuItem menuItem11 = new JMenuItem();
|
||||||
|
JMenu menu8 = new JMenu();
|
||||||
|
JMenu menu21 = new JMenu();
|
||||||
|
JMenuItem menuItem81 = new JMenuItem();
|
||||||
|
JMenuItem menuItem82 = new JMenuItem();
|
||||||
|
JMenuItem menuItem83 = new JMenuItem();
|
||||||
|
JMenuItem menuItem41 = new JMenuItem();
|
||||||
|
JMenuItem menuItem42 = new JMenuItem();
|
||||||
|
JMenuItem menuItem43 = new JMenuItem();
|
||||||
|
JMenuItem menuItem44 = new JMenuItem();
|
||||||
|
JMenuItem menuItem45 = new JMenuItem();
|
||||||
|
JMenuItem menuItem46 = new JMenuItem();
|
||||||
|
JMenuItem menuItem12 = new JMenuItem();
|
||||||
|
JMenuItem menuItem13 = new JMenuItem();
|
||||||
|
JMenuItem menuItem14 = new JMenuItem();
|
||||||
|
JMenuItem menuItem2 = new JMenuItem();
|
||||||
|
JMenu menu5 = new JMenu();
|
||||||
|
JMenuItem menuItem15 = new JMenuItem();
|
||||||
|
JMenuItem menuItem16 = new JMenuItem();
|
||||||
|
JMenuItem menuItem17 = new JMenuItem();
|
||||||
|
JMenuItem menuItem18 = new JMenuItem();
|
||||||
|
JMenuItem menuItem19 = new JMenuItem();
|
||||||
|
JMenuItem menuItem20 = new JMenuItem();
|
||||||
|
JMenuItem menuItem21 = new JMenuItem();
|
||||||
|
JMenuItem menuItem22 = new JMenuItem();
|
||||||
|
JMenuItem menuItem23 = new JMenuItem();
|
||||||
|
JMenuItem menuItem24 = new JMenuItem();
|
||||||
|
JMenuItem menuItem25 = new JMenuItem();
|
||||||
|
JMenuItem menuItem26 = new JMenuItem();
|
||||||
|
JMenuItem menuItem27 = new JMenuItem();
|
||||||
|
JMenuItem menuItem28 = new JMenuItem();
|
||||||
|
JMenuItem menuItem29 = new JMenuItem();
|
||||||
|
JMenu menu6 = new JMenu();
|
||||||
|
JMenuItem menuItem30 = new JMenuItem();
|
||||||
|
JMenuItem menuItem31 = new JMenuItem();
|
||||||
|
JMenuItem menuItem32 = new JMenuItem();
|
||||||
|
JMenu menu9 = new JMenu();
|
||||||
|
JMenuItem menuItem47 = new JMenuItem();
|
||||||
|
JMenuItem menuItem48 = new JMenuItem();
|
||||||
|
JMenuItem menuItem49 = new JMenuItem();
|
||||||
|
JMenuItem menuItem33 = new JMenuItem();
|
||||||
|
JMenuItem menuItem34 = new JMenuItem();
|
||||||
|
JMenuItem menuItem3 = new JMenuItem();
|
||||||
|
JMenuItem menuItem4 = new JMenuItem();
|
||||||
|
JMenuItem menuItem5 = new JMenuItem();
|
||||||
|
JMenuItem menuItem6 = new JMenuItem();
|
||||||
|
JMenuItem menuItem7 = new JMenuItem();
|
||||||
|
JMenuItem menuItem8 = new JMenuItem();
|
||||||
|
JMenu menu7 = new JMenu();
|
||||||
|
JMenuItem menuItem35 = new JMenuItem();
|
||||||
|
JMenuItem menuItem37 = new JMenuItem();
|
||||||
|
JMenuItem menuItem36 = new JMenuItem();
|
||||||
|
JMenuItem menuItem38 = new JMenuItem();
|
||||||
|
JMenuItem menuItem39 = new JMenuItem();
|
||||||
|
JMenuItem menuItem40 = new JMenuItem();
|
||||||
|
|
||||||
|
//======== this ========
|
||||||
|
setLayout(new MigLayout(
|
||||||
|
"ltr,insets dialog,hidemode 3",
|
||||||
|
// columns
|
||||||
|
"[]",
|
||||||
|
// rows
|
||||||
|
"[]"));
|
||||||
|
|
||||||
|
//---- showPopupMenuButton ----
|
||||||
|
showPopupMenuButton.setText("show JPopupMenu");
|
||||||
|
showPopupMenuButton.addActionListener(e -> showPopupMenuButtonActionPerformed(e));
|
||||||
|
add(showPopupMenuButton, "cell 0 0");
|
||||||
|
|
||||||
|
//======== menuBar ========
|
||||||
|
{
|
||||||
|
|
||||||
|
//======== menu3 ========
|
||||||
|
{
|
||||||
|
menu3.setText("main menu");
|
||||||
|
|
||||||
|
//---- menuItem1 ----
|
||||||
|
menuItem1.setText("text");
|
||||||
|
menu3.add(menuItem1);
|
||||||
|
|
||||||
|
//---- menuItem50 ----
|
||||||
|
menuItem50.setText("text");
|
||||||
|
menu3.add(menuItem50);
|
||||||
|
|
||||||
|
//======== menu4 ========
|
||||||
|
{
|
||||||
|
menu4.setText("text");
|
||||||
|
|
||||||
|
//---- menuItem9 ----
|
||||||
|
menuItem9.setText("text");
|
||||||
|
menu4.add(menuItem9);
|
||||||
|
|
||||||
|
//---- menuItem10 ----
|
||||||
|
menuItem10.setText("text text");
|
||||||
|
menu4.add(menuItem10);
|
||||||
|
|
||||||
|
//---- menuItem11 ----
|
||||||
|
menuItem11.setText("text");
|
||||||
|
menu4.add(menuItem11);
|
||||||
|
|
||||||
|
//======== menu8 ========
|
||||||
|
{
|
||||||
|
menu8.setText("text");
|
||||||
|
|
||||||
|
//======== menu21 ========
|
||||||
|
{
|
||||||
|
menu21.setText("text");
|
||||||
|
|
||||||
|
//---- menuItem81 ----
|
||||||
|
menuItem81.setText("text");
|
||||||
|
menu21.add(menuItem81);
|
||||||
|
|
||||||
|
//---- menuItem82 ----
|
||||||
|
menuItem82.setText("text");
|
||||||
|
menu21.add(menuItem82);
|
||||||
|
|
||||||
|
//---- menuItem83 ----
|
||||||
|
menuItem83.setText("text");
|
||||||
|
menu21.add(menuItem83);
|
||||||
|
}
|
||||||
|
menu8.add(menu21);
|
||||||
|
|
||||||
|
//---- menuItem41 ----
|
||||||
|
menuItem41.setText("text");
|
||||||
|
menu8.add(menuItem41);
|
||||||
|
|
||||||
|
//---- menuItem42 ----
|
||||||
|
menuItem42.setText("text");
|
||||||
|
menu8.add(menuItem42);
|
||||||
|
|
||||||
|
//---- menuItem43 ----
|
||||||
|
menuItem43.setText("text");
|
||||||
|
menu8.add(menuItem43);
|
||||||
|
|
||||||
|
//---- menuItem44 ----
|
||||||
|
menuItem44.setText("text");
|
||||||
|
menu8.add(menuItem44);
|
||||||
|
|
||||||
|
//---- menuItem45 ----
|
||||||
|
menuItem45.setText("text");
|
||||||
|
menu8.add(menuItem45);
|
||||||
|
|
||||||
|
//---- menuItem46 ----
|
||||||
|
menuItem46.setText("text");
|
||||||
|
menu8.add(menuItem46);
|
||||||
|
}
|
||||||
|
menu4.add(menu8);
|
||||||
|
|
||||||
|
//---- menuItem12 ----
|
||||||
|
menuItem12.setText("text");
|
||||||
|
menu4.add(menuItem12);
|
||||||
|
|
||||||
|
//---- menuItem13 ----
|
||||||
|
menuItem13.setText("text");
|
||||||
|
menu4.add(menuItem13);
|
||||||
|
|
||||||
|
//---- menuItem14 ----
|
||||||
|
menuItem14.setText("text");
|
||||||
|
menu4.add(menuItem14);
|
||||||
|
}
|
||||||
|
menu3.add(menu4);
|
||||||
|
|
||||||
|
//---- menuItem2 ----
|
||||||
|
menuItem2.setText("text");
|
||||||
|
menu3.add(menuItem2);
|
||||||
|
|
||||||
|
//======== menu5 ========
|
||||||
|
{
|
||||||
|
menu5.setText("text");
|
||||||
|
|
||||||
|
//---- menuItem15 ----
|
||||||
|
menuItem15.setText("text bla bla");
|
||||||
|
menu5.add(menuItem15);
|
||||||
|
|
||||||
|
//---- menuItem16 ----
|
||||||
|
menuItem16.setText("text");
|
||||||
|
menu5.add(menuItem16);
|
||||||
|
|
||||||
|
//---- menuItem17 ----
|
||||||
|
menuItem17.setText("text");
|
||||||
|
menu5.add(menuItem17);
|
||||||
|
|
||||||
|
//---- menuItem18 ----
|
||||||
|
menuItem18.setText("text");
|
||||||
|
menu5.add(menuItem18);
|
||||||
|
|
||||||
|
//---- menuItem19 ----
|
||||||
|
menuItem19.setText("text");
|
||||||
|
menu5.add(menuItem19);
|
||||||
|
|
||||||
|
//---- menuItem20 ----
|
||||||
|
menuItem20.setText("text");
|
||||||
|
menu5.add(menuItem20);
|
||||||
|
|
||||||
|
//---- menuItem21 ----
|
||||||
|
menuItem21.setText("text");
|
||||||
|
menu5.add(menuItem21);
|
||||||
|
|
||||||
|
//---- menuItem22 ----
|
||||||
|
menuItem22.setText("text");
|
||||||
|
menu5.add(menuItem22);
|
||||||
|
|
||||||
|
//---- menuItem23 ----
|
||||||
|
menuItem23.setText("text");
|
||||||
|
menu5.add(menuItem23);
|
||||||
|
|
||||||
|
//---- menuItem24 ----
|
||||||
|
menuItem24.setText("text");
|
||||||
|
menu5.add(menuItem24);
|
||||||
|
|
||||||
|
//---- menuItem25 ----
|
||||||
|
menuItem25.setText("text");
|
||||||
|
menu5.add(menuItem25);
|
||||||
|
|
||||||
|
//---- menuItem26 ----
|
||||||
|
menuItem26.setText("text");
|
||||||
|
menu5.add(menuItem26);
|
||||||
|
|
||||||
|
//---- menuItem27 ----
|
||||||
|
menuItem27.setText("text");
|
||||||
|
menu5.add(menuItem27);
|
||||||
|
|
||||||
|
//---- menuItem28 ----
|
||||||
|
menuItem28.setText("text");
|
||||||
|
menu5.add(menuItem28);
|
||||||
|
|
||||||
|
//---- menuItem29 ----
|
||||||
|
menuItem29.setText("text");
|
||||||
|
menu5.add(menuItem29);
|
||||||
|
}
|
||||||
|
menu3.add(menu5);
|
||||||
|
|
||||||
|
//======== menu6 ========
|
||||||
|
{
|
||||||
|
menu6.setText("text");
|
||||||
|
|
||||||
|
//---- menuItem30 ----
|
||||||
|
menuItem30.setText("text o text");
|
||||||
|
menu6.add(menuItem30);
|
||||||
|
|
||||||
|
//---- menuItem31 ----
|
||||||
|
menuItem31.setText("text");
|
||||||
|
menu6.add(menuItem31);
|
||||||
|
|
||||||
|
//---- menuItem32 ----
|
||||||
|
menuItem32.setText("text");
|
||||||
|
menu6.add(menuItem32);
|
||||||
|
|
||||||
|
//======== menu9 ========
|
||||||
|
{
|
||||||
|
menu9.setText("text");
|
||||||
|
|
||||||
|
//---- menuItem47 ----
|
||||||
|
menuItem47.setText("text");
|
||||||
|
menu9.add(menuItem47);
|
||||||
|
|
||||||
|
//---- menuItem48 ----
|
||||||
|
menuItem48.setText("text");
|
||||||
|
menu9.add(menuItem48);
|
||||||
|
|
||||||
|
//---- menuItem49 ----
|
||||||
|
menuItem49.setText("text");
|
||||||
|
menu9.add(menuItem49);
|
||||||
|
}
|
||||||
|
menu6.add(menu9);
|
||||||
|
|
||||||
|
//---- menuItem33 ----
|
||||||
|
menuItem33.setText("text");
|
||||||
|
menu6.add(menuItem33);
|
||||||
|
|
||||||
|
//---- menuItem34 ----
|
||||||
|
menuItem34.setText("text");
|
||||||
|
menu6.add(menuItem34);
|
||||||
|
}
|
||||||
|
menu3.add(menu6);
|
||||||
|
|
||||||
|
//---- menuItem3 ----
|
||||||
|
menuItem3.setText("text");
|
||||||
|
menu3.add(menuItem3);
|
||||||
|
|
||||||
|
//---- menuItem4 ----
|
||||||
|
menuItem4.setText("longer text");
|
||||||
|
menu3.add(menuItem4);
|
||||||
|
|
||||||
|
//---- menuItem5 ----
|
||||||
|
menuItem5.setText("text");
|
||||||
|
menu3.add(menuItem5);
|
||||||
|
|
||||||
|
//---- menuItem6 ----
|
||||||
|
menuItem6.setText("text");
|
||||||
|
menu3.add(menuItem6);
|
||||||
|
|
||||||
|
//---- menuItem7 ----
|
||||||
|
menuItem7.setText("text");
|
||||||
|
menu3.add(menuItem7);
|
||||||
|
|
||||||
|
//---- menuItem8 ----
|
||||||
|
menuItem8.setText("text");
|
||||||
|
menu3.add(menuItem8);
|
||||||
|
|
||||||
|
//======== menu7 ========
|
||||||
|
{
|
||||||
|
menu7.setText("text");
|
||||||
|
|
||||||
|
//---- menuItem35 ----
|
||||||
|
menuItem35.setText("text abc");
|
||||||
|
menu7.add(menuItem35);
|
||||||
|
|
||||||
|
//---- menuItem37 ----
|
||||||
|
menuItem37.setText("text");
|
||||||
|
menu7.add(menuItem37);
|
||||||
|
|
||||||
|
//---- menuItem36 ----
|
||||||
|
menuItem36.setText("text");
|
||||||
|
menu7.add(menuItem36);
|
||||||
|
|
||||||
|
//---- menuItem38 ----
|
||||||
|
menuItem38.setText("text");
|
||||||
|
menu7.add(menuItem38);
|
||||||
|
|
||||||
|
//---- menuItem39 ----
|
||||||
|
menuItem39.setText("text");
|
||||||
|
menu7.add(menuItem39);
|
||||||
|
|
||||||
|
//---- menuItem40 ----
|
||||||
|
menuItem40.setText("text");
|
||||||
|
menu7.add(menuItem40);
|
||||||
|
}
|
||||||
|
menu3.add(menu7);
|
||||||
|
}
|
||||||
|
menuBar.add(menu3);
|
||||||
|
}
|
||||||
|
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
||||||
|
}
|
||||||
|
|
||||||
|
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
|
||||||
|
private JMenuBar menuBar;
|
||||||
|
// JFormDesigner - End of variables declaration //GEN-END:variables
|
||||||
|
|
||||||
|
//---- class PopupMenu ----------------------------------------------------
|
||||||
|
|
||||||
|
private class PopupMenu extends JPopupMenu {
|
||||||
|
private PopupMenu() {
|
||||||
|
initComponents();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initComponents() {
|
||||||
|
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
|
||||||
|
JMenuItem menuItem54 = new JMenuItem();
|
||||||
|
JMenuItem menuItem51 = new JMenuItem();
|
||||||
|
JMenu menu10 = new JMenu();
|
||||||
|
JMenuItem menuItem57 = new JMenuItem();
|
||||||
|
JMenuItem menuItem58 = new JMenuItem();
|
||||||
|
JMenu menu14 = new JMenu();
|
||||||
|
JMenu menu18 = new JMenu();
|
||||||
|
JMenu menu19 = new JMenu();
|
||||||
|
JMenuItem menuItem76 = new JMenuItem();
|
||||||
|
JMenuItem menuItem77 = new JMenuItem();
|
||||||
|
JMenuItem menuItem78 = new JMenuItem();
|
||||||
|
JMenu menu20 = new JMenu();
|
||||||
|
JMenuItem menuItem73 = new JMenuItem();
|
||||||
|
JMenuItem menuItem74 = new JMenuItem();
|
||||||
|
JMenuItem menuItem75 = new JMenuItem();
|
||||||
|
JMenuItem menuItem79 = new JMenuItem();
|
||||||
|
JMenuItem menuItem80 = new JMenuItem();
|
||||||
|
JMenuItem menuItem70 = new JMenuItem();
|
||||||
|
JMenuItem menuItem71 = new JMenuItem();
|
||||||
|
JMenuItem menuItem72 = new JMenuItem();
|
||||||
|
JMenuItem menuItem59 = new JMenuItem();
|
||||||
|
JMenuItem menuItem60 = new JMenuItem();
|
||||||
|
JMenuItem menuItem52 = new JMenuItem();
|
||||||
|
JMenu menu11 = new JMenu();
|
||||||
|
JMenuItem menuItem61 = new JMenuItem();
|
||||||
|
JMenuItem menuItem62 = new JMenuItem();
|
||||||
|
JMenuItem menuItem63 = new JMenuItem();
|
||||||
|
JMenu menu12 = new JMenu();
|
||||||
|
JMenuItem menuItem64 = new JMenuItem();
|
||||||
|
JMenuItem menuItem65 = new JMenuItem();
|
||||||
|
JMenuItem menuItem66 = new JMenuItem();
|
||||||
|
JMenuItem menuItem53 = new JMenuItem();
|
||||||
|
JMenuItem menuItem55 = new JMenuItem();
|
||||||
|
JMenuItem menuItem56 = new JMenuItem();
|
||||||
|
JMenu menu13 = new JMenu();
|
||||||
|
JMenuItem menuItem67 = new JMenuItem();
|
||||||
|
JMenuItem menuItem68 = new JMenuItem();
|
||||||
|
JMenuItem menuItem69 = new JMenuItem();
|
||||||
|
|
||||||
|
//======== this ========
|
||||||
|
|
||||||
|
//---- menuItem54 ----
|
||||||
|
menuItem54.setText("text");
|
||||||
|
add(menuItem54);
|
||||||
|
|
||||||
|
//---- menuItem51 ----
|
||||||
|
menuItem51.setText("text text");
|
||||||
|
add(menuItem51);
|
||||||
|
|
||||||
|
//======== menu10 ========
|
||||||
|
{
|
||||||
|
menu10.setText("text");
|
||||||
|
|
||||||
|
//---- menuItem57 ----
|
||||||
|
menuItem57.setText("text");
|
||||||
|
menu10.add(menuItem57);
|
||||||
|
|
||||||
|
//---- menuItem58 ----
|
||||||
|
menuItem58.setText("text");
|
||||||
|
menu10.add(menuItem58);
|
||||||
|
|
||||||
|
//======== menu14 ========
|
||||||
|
{
|
||||||
|
menu14.setText("text");
|
||||||
|
|
||||||
|
//======== menu18 ========
|
||||||
|
{
|
||||||
|
menu18.setText("text");
|
||||||
|
|
||||||
|
//======== menu19 ========
|
||||||
|
{
|
||||||
|
menu19.setText("text");
|
||||||
|
|
||||||
|
//---- menuItem76 ----
|
||||||
|
menuItem76.setText("text");
|
||||||
|
menu19.add(menuItem76);
|
||||||
|
|
||||||
|
//---- menuItem77 ----
|
||||||
|
menuItem77.setText("text");
|
||||||
|
menu19.add(menuItem77);
|
||||||
|
|
||||||
|
//---- menuItem78 ----
|
||||||
|
menuItem78.setText("text");
|
||||||
|
menu19.add(menuItem78);
|
||||||
|
}
|
||||||
|
menu18.add(menu19);
|
||||||
|
|
||||||
|
//======== menu20 ========
|
||||||
|
{
|
||||||
|
menu20.setText("text");
|
||||||
|
|
||||||
|
//---- menuItem73 ----
|
||||||
|
menuItem73.setText("text");
|
||||||
|
menu20.add(menuItem73);
|
||||||
|
|
||||||
|
//---- menuItem74 ----
|
||||||
|
menuItem74.setText("text");
|
||||||
|
menu20.add(menuItem74);
|
||||||
|
|
||||||
|
//---- menuItem75 ----
|
||||||
|
menuItem75.setText("text");
|
||||||
|
menu20.add(menuItem75);
|
||||||
|
}
|
||||||
|
menu18.add(menu20);
|
||||||
|
|
||||||
|
//---- menuItem79 ----
|
||||||
|
menuItem79.setText("text");
|
||||||
|
menu18.add(menuItem79);
|
||||||
|
|
||||||
|
//---- menuItem80 ----
|
||||||
|
menuItem80.setText("text");
|
||||||
|
menu18.add(menuItem80);
|
||||||
|
}
|
||||||
|
menu14.add(menu18);
|
||||||
|
|
||||||
|
//---- menuItem70 ----
|
||||||
|
menuItem70.setText("text");
|
||||||
|
menu14.add(menuItem70);
|
||||||
|
|
||||||
|
//---- menuItem71 ----
|
||||||
|
menuItem71.setText("text");
|
||||||
|
menu14.add(menuItem71);
|
||||||
|
|
||||||
|
//---- menuItem72 ----
|
||||||
|
menuItem72.setText("text");
|
||||||
|
menu14.add(menuItem72);
|
||||||
|
}
|
||||||
|
menu10.add(menu14);
|
||||||
|
|
||||||
|
//---- menuItem59 ----
|
||||||
|
menuItem59.setText("text");
|
||||||
|
menu10.add(menuItem59);
|
||||||
|
|
||||||
|
//---- menuItem60 ----
|
||||||
|
menuItem60.setText("text");
|
||||||
|
menu10.add(menuItem60);
|
||||||
|
}
|
||||||
|
add(menu10);
|
||||||
|
|
||||||
|
//---- menuItem52 ----
|
||||||
|
menuItem52.setText("text");
|
||||||
|
add(menuItem52);
|
||||||
|
|
||||||
|
//======== menu11 ========
|
||||||
|
{
|
||||||
|
menu11.setText("text");
|
||||||
|
|
||||||
|
//---- menuItem61 ----
|
||||||
|
menuItem61.setText("text");
|
||||||
|
menu11.add(menuItem61);
|
||||||
|
|
||||||
|
//---- menuItem62 ----
|
||||||
|
menuItem62.setText("text");
|
||||||
|
menu11.add(menuItem62);
|
||||||
|
|
||||||
|
//---- menuItem63 ----
|
||||||
|
menuItem63.setText("text");
|
||||||
|
menu11.add(menuItem63);
|
||||||
|
}
|
||||||
|
add(menu11);
|
||||||
|
|
||||||
|
//======== menu12 ========
|
||||||
|
{
|
||||||
|
menu12.setText("text");
|
||||||
|
|
||||||
|
//---- menuItem64 ----
|
||||||
|
menuItem64.setText("text");
|
||||||
|
menu12.add(menuItem64);
|
||||||
|
|
||||||
|
//---- menuItem65 ----
|
||||||
|
menuItem65.setText("text");
|
||||||
|
menu12.add(menuItem65);
|
||||||
|
|
||||||
|
//---- menuItem66 ----
|
||||||
|
menuItem66.setText("text");
|
||||||
|
menu12.add(menuItem66);
|
||||||
|
}
|
||||||
|
add(menu12);
|
||||||
|
|
||||||
|
//---- menuItem53 ----
|
||||||
|
menuItem53.setText("text");
|
||||||
|
add(menuItem53);
|
||||||
|
|
||||||
|
//---- menuItem55 ----
|
||||||
|
menuItem55.setText("text");
|
||||||
|
add(menuItem55);
|
||||||
|
|
||||||
|
//---- menuItem56 ----
|
||||||
|
menuItem56.setText("text");
|
||||||
|
add(menuItem56);
|
||||||
|
|
||||||
|
//======== menu13 ========
|
||||||
|
{
|
||||||
|
menu13.setText("text");
|
||||||
|
|
||||||
|
//---- menuItem67 ----
|
||||||
|
menuItem67.setText("text");
|
||||||
|
menu13.add(menuItem67);
|
||||||
|
|
||||||
|
//---- menuItem68 ----
|
||||||
|
menuItem68.setText("text");
|
||||||
|
menu13.add(menuItem68);
|
||||||
|
|
||||||
|
//---- menuItem69 ----
|
||||||
|
menuItem69.setText("text");
|
||||||
|
menu13.add(menuItem69);
|
||||||
|
}
|
||||||
|
add(menu13);
|
||||||
|
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
||||||
|
}
|
||||||
|
|
||||||
|
// JFormDesigner - Variables declaration - DO NOT MODIFY //GEN-BEGIN:variables
|
||||||
|
// JFormDesigner - End of variables declaration //GEN-END:variables
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,439 @@
|
|||||||
|
JFDML JFormDesigner: "7.0.5.0.404" Java: "17" encoding: "UTF-8"
|
||||||
|
|
||||||
|
new FormModel {
|
||||||
|
contentType: "form/swing"
|
||||||
|
root: new FormRoot {
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.defaultVariableLocal": true
|
||||||
|
}
|
||||||
|
add( new FormContainer( "com.formdev.flatlaf.testing.FlatTestPanel", new FormLayoutManager( class net.miginfocom.swing.MigLayout ) {
|
||||||
|
"$layoutConstraints": "ltr,insets dialog,hidemode 3"
|
||||||
|
"$columnConstraints": "[]"
|
||||||
|
"$rowConstraints": "[]"
|
||||||
|
} ) {
|
||||||
|
name: "this"
|
||||||
|
add( new FormComponent( "javax.swing.JButton" ) {
|
||||||
|
name: "showPopupMenuButton"
|
||||||
|
"text": "show JPopupMenu"
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "showPopupMenuButtonActionPerformed", true ) )
|
||||||
|
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
|
||||||
|
"value": "cell 0 0"
|
||||||
|
} )
|
||||||
|
}, new FormLayoutConstraints( null ) {
|
||||||
|
"location": new java.awt.Point( 0, 0 )
|
||||||
|
"size": new java.awt.Dimension( 390, 130 )
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JMenuBar", new FormLayoutManager( class javax.swing.JMenuBar ) ) {
|
||||||
|
name: "menuBar"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.variableLocal": false
|
||||||
|
}
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu3"
|
||||||
|
"text": "main menu"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem1"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem50"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu4"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem9"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem10"
|
||||||
|
"text": "text text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem11"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu8"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu21"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem81"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem82"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem83"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem41"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem42"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem43"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem44"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem45"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem46"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem12"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem13"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem14"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem2"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu5"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem15"
|
||||||
|
"text": "text bla bla"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem16"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem17"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem18"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem19"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem20"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem21"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem22"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem23"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem24"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem25"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem26"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem27"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem28"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem29"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu6"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem30"
|
||||||
|
"text": "text o text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem31"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem32"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu9"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem47"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem48"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem49"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem33"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem34"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem3"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem4"
|
||||||
|
"text": "longer text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem5"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem6"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem7"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem8"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu7"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem35"
|
||||||
|
"text": "text abc"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem37"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem36"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem38"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem39"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem40"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
}, new FormLayoutConstraints( null ) {
|
||||||
|
"location": new java.awt.Point( 0, 175 )
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JPopupMenu", new FormLayoutManager( class javax.swing.JPopupMenu ) ) {
|
||||||
|
name: "popupMenu1"
|
||||||
|
auxiliary() {
|
||||||
|
"JavaCodeGenerator.className": "PopupMenu"
|
||||||
|
}
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem54"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem51"
|
||||||
|
"text": "text text"
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu10"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem57"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem58"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu14"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu18"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu19"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem76"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem77"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem78"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu20"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem73"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem74"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem75"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem79"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem80"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem70"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem71"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem72"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem59"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem60"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem52"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu11"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem61"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem62"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem63"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu12"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem64"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem65"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem66"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem53"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem55"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem56"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JMenu", new FormLayoutManager( class javax.swing.JMenu ) ) {
|
||||||
|
name: "menu13"
|
||||||
|
"text": "text"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem67"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem68"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "menuItem69"
|
||||||
|
"text": "text"
|
||||||
|
} )
|
||||||
|
} )
|
||||||
|
}, new FormLayoutConstraints( null ) {
|
||||||
|
"location": new java.awt.Point( 275, 175 )
|
||||||
|
} )
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user