类javax.swing.plaf.basic.BasicCheckBoxMenuItemUI源码实例Demo

下面列出了怎么用javax.swing.plaf.basic.BasicCheckBoxMenuItemUI的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: java-swing-tips   文件: MainPanel.java
private MainPanel() {
  super();
  // Java 9
  // UIManager.put("CheckBoxMenuItem.doNotCloseOnMouseClick", true);

  JToggleButton button = new JToggleButton("JPopupMenu Test");
  JPopupMenu popup = new JPopupMenu();
  TogglePopupHandler handler = new TogglePopupHandler(popup, button);
  popup.addPopupMenuListener(handler);
  button.addActionListener(handler);

  // Java 9
  // JCheckBoxMenuItem checkMenuItem = new JCheckBoxMenuItem("doNotCloseOnMouseClick");
  // checkMenuItem.putClientProperty("CheckBoxMenuItem.doNotCloseOnMouseClick", true);
  // popup.add(checkMenuItem);

  popup.add(new JCheckBox("JCheckBox") {
    @Override public void updateUI() {
      super.updateUI();
      setFocusPainted(false);
    }

    @Override public Dimension getMinimumSize() {
      Dimension d = getPreferredSize();
      d.width = Short.MAX_VALUE;
      return d;
    }
  });
  popup.add(makeStayOpenCheckBoxMenuItem("JMenuItem + JCheckBox"));
  popup.add(new JCheckBoxMenuItem("JCheckBoxMenuItem"));
  popup.add(new JCheckBoxMenuItem("keeping open #1")).addActionListener(e -> {
    System.out.println("ActionListener");
    Container c = SwingUtilities.getAncestorOfClass(JPopupMenu.class, (Component) e.getSource());
    if (c instanceof JPopupMenu) {
      c.setVisible(true);
    }
  });
  popup.add(new JCheckBoxMenuItem("keeping open #2") {
    @Override public void updateUI() {
      super.updateUI();
      setUI(new BasicCheckBoxMenuItemUI() {
        // https://stackoverflow.com/questions/3759379/how-to-prevent-jpopupmenu-disappearing-when-checking-checkboxes-in-it
        @Override protected void doClick(MenuSelectionManager msm) {
          // super.doClick(msm);
          System.out.println("MenuSelectionManager: doClick");
          menuItem.doClick(0);
        }
      });
    }
  });

  setOpaque(true);
  setComponentPopupMenu(popup);
  add(button);
  setPreferredSize(new Dimension(320, 240));
}
 
 类所在包
 类方法
 同包方法