<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JMenu | 酷 壳 - CoolShell</title>
	<atom:link href="https://coolshell.cn/tag/jmenu/feed" rel="self" type="application/rss+xml" />
	<link>https://coolshell.cn</link>
	<description>享受编程和技术所带来的快乐 - Coding Your Ambition</description>
	<lastBuildDate>Tue, 26 May 2009 02:49:48 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2</generator>
	<item>
		<title>OMG, Jave的JMenu居然有433个方法</title>
		<link>https://coolshell.cn/articles/182.html</link>
					<comments>https://coolshell.cn/articles/182.html#comments</comments>
		
		<dc:creator><![CDATA[陈皓]]></dc:creator>
		<pubDate>Sat, 14 Mar 2009 12:49:04 +0000</pubDate>
				<category><![CDATA[Java语言]]></category>
		<category><![CDATA[编程语言]]></category>
		<category><![CDATA[轶事趣闻]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[JMenu]]></category>
		<category><![CDATA[Swing]]></category>
		<guid isPermaLink="false">http://coolshell.cn/?p=182</guid>

					<description><![CDATA[<p>Java的Swing类库中有一个类叫JMenu，这个类上面有7层的继承，加上所有被继承下来的方法，这个类一共有433个方法，虽然，很多类是从上面继承下来的，而它...</p>
<p class="read-more"><a class="btn btn-default" href="https://coolshell.cn/articles/182.html"> Read More<span class="screen-reader-text">  Read More</span></a></p>
The post <a href="https://coolshell.cn/articles/182.html">OMG, Jave的JMenu居然有433个方法</a> first appeared on <a href="https://coolshell.cn">酷 壳 - CoolShell</a>.]]></description>
										<content:encoded><![CDATA[<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3415450859608158"
     crossorigin="anonymous"></script>Java的Swing类库中有一个类叫JMenu，这个类上面有7层的继承，加上所有被继承下来的方法，这个类一共有433个方法，虽然，很多类是从上面继承下来的，而它自己的方法并没有定义太多的方法，不过，继承体系过深，在底层类上要想知道所有的继承下来的东西并不是一样容易的事情。这个例子展示了一个滥用代码重用的反面案例。我个人认为我们应该反思一下滥用面向对象的作法。</p>
<p>要把Java一个类所有的方法例出来并不是一件难事，使用Javascript 利用Firefox浏览器所支持的Package来穷举JMenu的方法可以很方便的列出所有的方法。</p>
<p><span id="more-182"></span><br />
下面是这段Javascripts程序：</p>
<p> </p>
<pre name="code" class="html">
<script>
    jmenu = new Packages.javax.swing.JMenu( );

    methods = jmenu.getClass( ).getMethods( );

    regx = /j[^( ]+([^)]*)/; // match just the method

    for (var i = 0, jsArray=[], name = ""; 
          i < methods.length; 
          i++ ) 
    {
        name = methods[ i ].toString( );
        jsArray.push( name.match( regx )[ 0 ] );
    }

    jsArray = jsArray.sort( );

    result = " <ol>";
    for(var i = 0; i<jsArray.length; i++){
        result += " <li>"+ jsArray[i] +" </li>";
    }
    result += " </ol>";

    document.write(result);
</script>
</pre>
<p>虽然，在Firefox下有比较严格的安全限制，我们并不一定能够使用Swing类库中所有的Java方法，但我们查看一下其继承体系和一个类所拥有的方法却没有什么安全问题。</p>
<p>使用上面那段程序，你可以在Firefox中输出JMenu的433个如下的方法，下面是的列表中JMenu的方法在最后。</p>
<p>下面你可以理解为是在灌水：</p>
<ol>
<li>java.awt.Component.action(java.awt.Event,java.lang.Object)</li>
<li>java.awt.Component.add(java.awt.PopupMenu)</li>
<li>java.awt.Component.addComponentListener(java.awt.event.ComponentListener)</li>
<li>java.awt.Component.addFocusListener(java.awt.event.FocusListener)</li>
<li>java.awt.Component.addHierarchyBoundsListener(java.awt.event.HierarchyBoundsListener)</li>
<li>java.awt.Component.addHierarchyListener(java.awt.event.HierarchyListener)</li>
<li>java.awt.Component.addInputMethodListener(java.awt.event.InputMethodListener)</li>
<li>java.awt.Component.addKeyListener(java.awt.event.KeyListener)</li>
<li>java.awt.Component.addMouseListener(java.awt.event.MouseListener)</li>
<li>java.awt.Component.addMouseMotionListener(java.awt.event.MouseMotionListener)</li>
<li>java.awt.Component.addMouseWheelListener(java.awt.event.MouseWheelListener)</li>
<li>java.awt.Component.bounds()</li>
<li>java.awt.Component.checkImage(java.awt.Image,int,int,java.awt.image.ImageObserver)</li>
<li>java.awt.Component.checkImage(java.awt.Image,java.awt.image.ImageObserver)</li>
<li>java.awt.Component.contains(java.awt.Point)</li>
<li>java.awt.Component.createImage(int,int)</li>
<li>java.awt.Component.createImage(java.awt.image.ImageProducer)</li>
<li>java.awt.Component.createVolatileImage(int,int)</li>
<li>java.awt.Component.createVolatileImage(int,int,java.awt.ImageCapabilities)</li>
<li>java.awt.Component.dispatchEvent(java.awt.AWTEvent)</li>
<li>java.awt.Component.enable(boolean)</li>
<li>java.awt.Component.enableInputMethods(boolean)</li>
<li>java.awt.Component.firePropertyChange(java.lang.String,byte,byte)</li>
<li>java.awt.Component.firePropertyChange(java.lang.String,double,double)</li>
<li>java.awt.Component.firePropertyChange(java.lang.String,float,float)</li>
<li>java.awt.Component.firePropertyChange(java.lang.String,long,long)</li>
<li>java.awt.Component.firePropertyChange(java.lang.String,short,short)</li>
<li>java.awt.Component.getBackground()</li>
<li>java.awt.Component.getBounds()</li>
<li>java.awt.Component.getColorModel()</li>
<li>java.awt.Component.getComponentListeners()</li>
<li>java.awt.Component.getComponentOrientation()</li>
<li>java.awt.Component.getCursor()</li>
<li>java.awt.Component.getDropTarget()</li>
<li>java.awt.Component.getFocusCycleRootAncestor()</li>
<li>java.awt.Component.getFocusListeners()</li>
<li>java.awt.Component.getFocusTraversalKeysEnabled()</li>
<li>java.awt.Component.getFont()</li>
<li>java.awt.Component.getForeground()</li>
<li>java.awt.Component.getGraphicsConfiguration()</li>
<li>java.awt.Component.getHierarchyBoundsListeners()</li>
<li>java.awt.Component.getHierarchyListeners()</li>
<li>java.awt.Component.getIgnoreRepaint()</li>
<li>java.awt.Component.getInputContext()</li>
<li>java.awt.Component.getInputMethodListeners()</li>
<li>java.awt.Component.getInputMethodRequests()</li>
<li>java.awt.Component.getKeyListeners()</li>
<li>java.awt.Component.getLocale()</li>
<li>java.awt.Component.getLocation()</li>
<li>java.awt.Component.getLocationOnScreen()</li>
<li>java.awt.Component.getMouseListeners()</li>
<li>java.awt.Component.getMouseMotionListeners()</li>
<li>java.awt.Component.getMousePosition()</li>
<li>java.awt.Component.getMouseWheelListeners()</li>
<li>java.awt.Component.getName()</li>
<li>java.awt.Component.getParent()</li>
<li>java.awt.Component.getPeer()</li>
<li>java.awt.Component.getPropertyChangeListeners()</li>
<li>java.awt.Component.getPropertyChangeListeners(java.lang.String)</li>
<li>java.awt.Component.getSize()</li>
<li>java.awt.Component.getToolkit()</li>
<li>java.awt.Component.getTreeLock()</li>
<li>java.awt.Component.gotFocus(java.awt.Event,java.lang.Object)</li>
<li>java.awt.Component.handleEvent(java.awt.Event)</li>
<li>java.awt.Component.hasFocus()</li>
<li>java.awt.Component.hide()</li>
<li>java.awt.Component.inside(int,int)</li>
<li>java.awt.Component.isBackgroundSet()</li>
<li>java.awt.Component.isCursorSet()</li>
<li>java.awt.Component.isDisplayable()</li>
<li>java.awt.Component.isEnabled()</li>
<li>java.awt.Component.isFocusOwner()</li>
<li>java.awt.Component.isFocusTraversable()</li>
<li>java.awt.Component.isFocusable()</li>
<li>java.awt.Component.isFontSet()</li>
<li>java.awt.Component.isForegroundSet()</li>
<li>java.awt.Component.isLightweight()</li>
<li>java.awt.Component.isMaximumSizeSet()</li>
<li>java.awt.Component.isMinimumSizeSet()</li>
<li>java.awt.Component.isPreferredSizeSet()</li>
<li>java.awt.Component.isShowing()</li>
<li>java.awt.Component.isValid()</li>
<li>java.awt.Component.isVisible()</li>
<li>java.awt.Component.keyDown(java.awt.Event,int)</li>
<li>java.awt.Component.keyUp(java.awt.Event,int)</li>
<li>java.awt.Component.list()</li>
<li>java.awt.Component.list(java.io.PrintStream)</li>
<li>java.awt.Component.list(java.io.PrintWriter)</li>
<li>java.awt.Component.location()</li>
<li>java.awt.Component.lostFocus(java.awt.Event,java.lang.Object)</li>
<li>java.awt.Component.mouseDown(java.awt.Event,int,int)</li>
<li>java.awt.Component.mouseDrag(java.awt.Event,int,int)</li>
<li>java.awt.Component.mouseEnter(java.awt.Event,int,int)</li>
<li>java.awt.Component.mouseExit(java.awt.Event,int,int)</li>
<li>java.awt.Component.mouseMove(java.awt.Event,int,int)</li>
<li>java.awt.Component.mouseUp(java.awt.Event,int,int)</li>
<li>java.awt.Component.move(int,int)</li>
<li>java.awt.Component.nextFocus()</li>
<li>java.awt.Component.paintAll(java.awt.Graphics)</li>
<li>java.awt.Component.postEvent(java.awt.Event)</li>
<li>java.awt.Component.prepareImage(java.awt.Image,int,int,java.awt.image.ImageObserver)</li>
<li>java.awt.Component.prepareImage(java.awt.Image,java.awt.image.ImageObserver)</li>
<li>java.awt.Component.remove(java.awt.MenuComponent)</li>
<li>java.awt.Component.removeComponentListener(java.awt.event.ComponentListener)</li>
<li>java.awt.Component.removeFocusListener(java.awt.event.FocusListener)</li>
<li>java.awt.Component.removeHierarchyBoundsListener(java.awt.event.HierarchyBoundsListener)</li>
<li>java.awt.Component.removeHierarchyListener(java.awt.event.HierarchyListener)</li>
<li>java.awt.Component.removeInputMethodListener(java.awt.event.InputMethodListener)</li>
<li>java.awt.Component.removeKeyListener(java.awt.event.KeyListener)</li>
<li>java.awt.Component.removeMouseListener(java.awt.event.MouseListener)</li>
<li>java.awt.Component.removeMouseMotionListener(java.awt.event.MouseMotionListener)</li>
<li>java.awt.Component.removeMouseWheelListener(java.awt.event.MouseWheelListener)</li>
<li>java.awt.Component.removePropertyChangeListener(java.beans.PropertyChangeListener)</li>
<li>java.awt.Component.removePropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)</li>
<li>java.awt.Component.repaint()</li>
<li>java.awt.Component.repaint(int,int,int,int)</li>
<li>java.awt.Component.repaint(long)</li>
<li>java.awt.Component.resize(int,int)</li>
<li>java.awt.Component.resize(java.awt.Dimension)</li>
<li>java.awt.Component.setBounds(int,int,int,int)</li>
<li>java.awt.Component.setBounds(java.awt.Rectangle)</li>
<li>java.awt.Component.setCursor(java.awt.Cursor)</li>
<li>java.awt.Component.setDropTarget(java.awt.dnd.DropTarget)</li>
<li>java.awt.Component.setFocusTraversalKeysEnabled(boolean)</li>
<li>java.awt.Component.setFocusable(boolean)</li>
<li>java.awt.Component.setIgnoreRepaint(boolean)</li>
<li>java.awt.Component.setLocale(java.util.Locale)</li>
<li>java.awt.Component.setLocation(int,int)</li>
<li>java.awt.Component.setLocation(java.awt.Point)</li>
<li>java.awt.Component.setName(java.lang.String)</li>
<li>java.awt.Component.setSize(int,int)</li>
<li>java.awt.Component.setSize(java.awt.Dimension)</li>
<li>java.awt.Component.show()</li>
<li>java.awt.Component.show(boolean)</li>
<li>java.awt.Component.size()</li>
<li>java.awt.Component.toString()</li>
<li>java.awt.Component.transferFocus()</li>
<li>java.awt.Component.transferFocusBackward()</li>
<li>java.awt.Component.transferFocusUpCycle()</li>
<li>java.awt.Container.add(java.awt.Component,java.lang.Object)</li>
<li>java.awt.Container.add(java.awt.Component,java.lang.Object,int)</li>
<li>java.awt.Container.add(java.lang.String,java.awt.Component)</li>
<li>java.awt.Container.addContainerListener(java.awt.event.ContainerListener)</li>
<li>java.awt.Container.addPropertyChangeListener(java.beans.PropertyChangeListener)</li>
<li>java.awt.Container.addPropertyChangeListener(java.lang.String,java.beans.PropertyChangeListener)</li>
<li>java.awt.Container.areFocusTraversalKeysSet(int)</li>
<li>java.awt.Container.countComponents()</li>
<li>java.awt.Container.deliverEvent(java.awt.Event)</li>
<li>java.awt.Container.doLayout()</li>
<li>java.awt.Container.findComponentAt(int,int)</li>
<li>java.awt.Container.findComponentAt(java.awt.Point)</li>
<li>java.awt.Container.getComponent(int)</li>
<li>java.awt.Container.getComponentAt(int,int)</li>
<li>java.awt.Container.getComponentAt(java.awt.Point)</li>
<li>java.awt.Container.getComponentCount()</li>
<li>java.awt.Container.getComponentZOrder(java.awt.Component)</li>
<li>java.awt.Container.getComponents()</li>
<li>java.awt.Container.getContainerListeners()</li>
<li>java.awt.Container.getFocusTraversalKeys(int)</li>
<li>java.awt.Container.getFocusTraversalPolicy()</li>
<li>java.awt.Container.getLayout()</li>
<li>java.awt.Container.getMousePosition(boolean)</li>
<li>java.awt.Container.insets()</li>
<li>java.awt.Container.invalidate()</li>
<li>java.awt.Container.isAncestorOf(java.awt.Component)</li>
<li>java.awt.Container.isFocusCycleRoot()</li>
<li>java.awt.Container.isFocusCycleRoot(java.awt.Container)</li>
<li>java.awt.Container.isFocusTraversalPolicyProvider()</li>
<li>java.awt.Container.isFocusTraversalPolicySet()</li>
<li>java.awt.Container.layout()</li>
<li>java.awt.Container.list(java.io.PrintStream,int)</li>
<li>java.awt.Container.list(java.io.PrintWriter,int)</li>
<li>java.awt.Container.locate(int,int)</li>
<li>java.awt.Container.minimumSize()</li>
<li>java.awt.Container.paintComponents(java.awt.Graphics)</li>
<li>java.awt.Container.preferredSize()</li>
<li>java.awt.Container.printComponents(java.awt.Graphics)</li>
<li>java.awt.Container.removeContainerListener(java.awt.event.ContainerListener)</li>
<li>java.awt.Container.setComponentZOrder(java.awt.Component,int)</li>
<li>java.awt.Container.setFocusCycleRoot(boolean)</li>
<li>java.awt.Container.setFocusTraversalPolicy(java.awt.FocusTraversalPolicy)</li>
<li>java.awt.Container.setFocusTraversalPolicyProvider(boolean)</li>
<li>java.awt.Container.transferFocusDownCycle()</li>
<li>java.awt.Container.validate()</li>
<li>java.lang.Object.equals(java.lang.Object)</li>
<li>java.lang.Object.getClass()</li>
<li>java.lang.Object.hashCode()</li>
<li>java.lang.Object.notify()</li>
<li>java.lang.Object.notifyAll()</li>
<li>java.lang.Object.wait()</li>
<li>java.lang.Object.wait(long)</li>
<li>java.lang.Object.wait(long,int)</li>
<li>javax.swing.AbstractButton.addActionListener(java.awt.event.ActionListener)</li>
<li>javax.swing.AbstractButton.addChangeListener(javax.swing.event.ChangeListener)</li>
<li>javax.swing.AbstractButton.addItemListener(java.awt.event.ItemListener)</li>
<li>javax.swing.AbstractButton.doClick()</li>
<li>javax.swing.AbstractButton.getAction()</li>
<li>javax.swing.AbstractButton.getActionCommand()</li>
<li>javax.swing.AbstractButton.getActionListeners()</li>
<li>javax.swing.AbstractButton.getChangeListeners()</li>
<li>javax.swing.AbstractButton.getDisabledIcon()</li>
<li>javax.swing.AbstractButton.getDisabledSelectedIcon()</li>
<li>javax.swing.AbstractButton.getDisplayedMnemonicIndex()</li>
<li>javax.swing.AbstractButton.getHideActionText()</li>
<li>javax.swing.AbstractButton.getHorizontalAlignment()</li>
<li>javax.swing.AbstractButton.getHorizontalTextPosition()</li>
<li>javax.swing.AbstractButton.getIcon()</li>
<li>javax.swing.AbstractButton.getIconTextGap()</li>
<li>javax.swing.AbstractButton.getItemListeners()</li>
<li>javax.swing.AbstractButton.getLabel()</li>
<li>javax.swing.AbstractButton.getMargin()</li>
<li>javax.swing.AbstractButton.getMnemonic()</li>
<li>javax.swing.AbstractButton.getModel()</li>
<li>javax.swing.AbstractButton.getMultiClickThreshhold()</li>
<li>javax.swing.AbstractButton.getPressedIcon()</li>
<li>javax.swing.AbstractButton.getRolloverIcon()</li>
<li>javax.swing.AbstractButton.getRolloverSelectedIcon()</li>
<li>javax.swing.AbstractButton.getSelectedIcon()</li>
<li>javax.swing.AbstractButton.getSelectedObjects()</li>
<li>javax.swing.AbstractButton.getText()</li>
<li>javax.swing.AbstractButton.getUI()</li>
<li>javax.swing.AbstractButton.getVerticalAlignment()</li>
<li>javax.swing.AbstractButton.getVerticalTextPosition()</li>
<li>javax.swing.AbstractButton.imageUpdate(java.awt.Image,int,int,int,int,int)</li>
<li>javax.swing.AbstractButton.isBorderPainted()</li>
<li>javax.swing.AbstractButton.isContentAreaFilled()</li>
<li>javax.swing.AbstractButton.isFocusPainted()</li>
<li>javax.swing.AbstractButton.isRolloverEnabled()</li>
<li>javax.swing.AbstractButton.removeActionListener(java.awt.event.ActionListener)</li>
<li>javax.swing.AbstractButton.removeChangeListener(javax.swing.event.ChangeListener)</li>
<li>javax.swing.AbstractButton.removeItemListener(java.awt.event.ItemListener)</li>
<li>javax.swing.AbstractButton.removeNotify()</li>
<li>javax.swing.AbstractButton.setAction(javax.swing.Action)</li>
<li>javax.swing.AbstractButton.setActionCommand(java.lang.String)</li>
<li>javax.swing.AbstractButton.setBorderPainted(boolean)</li>
<li>javax.swing.AbstractButton.setContentAreaFilled(boolean)</li>
<li>javax.swing.AbstractButton.setDisabledIcon(javax.swing.Icon)</li>
<li>javax.swing.AbstractButton.setDisabledSelectedIcon(javax.swing.Icon)</li>
<li>javax.swing.AbstractButton.setDisplayedMnemonicIndex(int)</li>
<li>javax.swing.AbstractButton.setFocusPainted(boolean)</li>
<li>javax.swing.AbstractButton.setHideActionText(boolean)</li>
<li>javax.swing.AbstractButton.setHorizontalAlignment(int)</li>
<li>javax.swing.AbstractButton.setHorizontalTextPosition(int)</li>
<li>javax.swing.AbstractButton.setIcon(javax.swing.Icon)</li>
<li>javax.swing.AbstractButton.setIconTextGap(int)</li>
<li>javax.swing.AbstractButton.setLabel(java.lang.String)</li>
<li>javax.swing.AbstractButton.setLayout(java.awt.LayoutManager)</li>
<li>javax.swing.AbstractButton.setMargin(java.awt.Insets)</li>
<li>javax.swing.AbstractButton.setMnemonic(char)</li>
<li>javax.swing.AbstractButton.setMnemonic(int)</li>
<li>javax.swing.AbstractButton.setMultiClickThreshhold(long)</li>
<li>javax.swing.AbstractButton.setPressedIcon(javax.swing.Icon)</li>
<li>javax.swing.AbstractButton.setRolloverEnabled(boolean)</li>
<li>javax.swing.AbstractButton.setRolloverIcon(javax.swing.Icon)</li>
<li>javax.swing.AbstractButton.setRolloverSelectedIcon(javax.swing.Icon)</li>
<li>javax.swing.AbstractButton.setSelectedIcon(javax.swing.Icon)</li>
<li>javax.swing.AbstractButton.setText(java.lang.String)</li>
<li>javax.swing.AbstractButton.setUI(javax.swing.plaf.ButtonUI)</li>
<li>javax.swing.AbstractButton.setVerticalAlignment(int)</li>
<li>javax.swing.AbstractButton.setVerticalTextPosition(int)</li>
<li>javax.swing.JComponent.addAncestorListener(javax.swing.event.AncestorListener)</li>
<li>javax.swing.JComponent.addNotify()</li>
<li>javax.swing.JComponent.addVetoableChangeListener(java.beans.VetoableChangeListener)</li>
<li>javax.swing.JComponent.computeVisibleRect(java.awt.Rectangle)</li>
<li>javax.swing.JComponent.contains(int,int)</li>
<li>javax.swing.JComponent.createToolTip()</li>
<li>javax.swing.JComponent.disable()</li>
<li>javax.swing.JComponent.enable()</li>
<li>javax.swing.JComponent.firePropertyChange(java.lang.String,boolean,boolean)</li>
<li>javax.swing.JComponent.firePropertyChange(java.lang.String,char,char)</li>
<li>javax.swing.JComponent.firePropertyChange(java.lang.String,int,int)</li>
<li>javax.swing.JComponent.getActionForKeyStroke(javax.swing.KeyStroke)</li>
<li>javax.swing.JComponent.getActionMap()</li>
<li>javax.swing.JComponent.getAlignmentX()</li>
<li>javax.swing.JComponent.getAlignmentY()</li>
<li>javax.swing.JComponent.getAncestorListeners()</li>
<li>javax.swing.JComponent.getAutoscrolls()</li>
<li>javax.swing.JComponent.getBaseline(int,int)</li>
<li>javax.swing.JComponent.getBaselineResizeBehavior()</li>
<li>javax.swing.JComponent.getBorder()</li>
<li>javax.swing.JComponent.getBounds(java.awt.Rectangle)</li>
<li>javax.swing.JComponent.getClientProperty(java.lang.Object)</li>
<li>javax.swing.JComponent.getComponentPopupMenu()</li>
<li>javax.swing.JComponent.getConditionForKeyStroke(javax.swing.KeyStroke)</li>
<li>javax.swing.JComponent.getDebugGraphicsOptions()</li>
<li>javax.swing.JComponent.getDefaultLocale()</li>
<li>javax.swing.JComponent.getFontMetrics(java.awt.Font)</li>
<li>javax.swing.JComponent.getGraphics()</li>
<li>javax.swing.JComponent.getHeight()</li>
<li>javax.swing.JComponent.getInheritsPopupMenu()</li>
<li>javax.swing.JComponent.getInputMap()</li>
<li>javax.swing.JComponent.getInputMap(int)</li>
<li>javax.swing.JComponent.getInputVerifier()</li>
<li>javax.swing.JComponent.getInsets()</li>
<li>javax.swing.JComponent.getInsets(java.awt.Insets)</li>
<li>javax.swing.JComponent.getListeners(java.lang.Class)</li>
<li>javax.swing.JComponent.getLocation(java.awt.Point)</li>
<li>javax.swing.JComponent.getMaximumSize()</li>
<li>javax.swing.JComponent.getMinimumSize()</li>
<li>javax.swing.JComponent.getNextFocusableComponent()</li>
<li>javax.swing.JComponent.getPopupLocation(java.awt.event.MouseEvent)</li>
<li>javax.swing.JComponent.getPreferredSize()</li>
<li>javax.swing.JComponent.getRegisteredKeyStrokes()</li>
<li>javax.swing.JComponent.getRootPane()</li>
<li>javax.swing.JComponent.getSize(java.awt.Dimension)</li>
<li>javax.swing.JComponent.getToolTipLocation(java.awt.event.MouseEvent)</li>
<li>javax.swing.JComponent.getToolTipText()</li>
<li>javax.swing.JComponent.getToolTipText(java.awt.event.MouseEvent)</li>
<li>javax.swing.JComponent.getTopLevelAncestor()</li>
<li>javax.swing.JComponent.getTransferHandler()</li>
<li>javax.swing.JComponent.getVerifyInputWhenFocusTarget()</li>
<li>javax.swing.JComponent.getVetoableChangeListeners()</li>
<li>javax.swing.JComponent.getVisibleRect()</li>
<li>javax.swing.JComponent.getWidth()</li>
<li>javax.swing.JComponent.getX()</li>
<li>javax.swing.JComponent.getY()</li>
<li>javax.swing.JComponent.grabFocus()</li>
<li>javax.swing.JComponent.isDoubleBuffered()</li>
<li>javax.swing.JComponent.isLightweightComponent(java.awt.Component)</li>
<li>javax.swing.JComponent.isManagingFocus()</li>
<li>javax.swing.JComponent.isOpaque()</li>
<li>javax.swing.JComponent.isOptimizedDrawingEnabled()</li>
<li>javax.swing.JComponent.isPaintingForPrint()</li>
<li>javax.swing.JComponent.isPaintingTile()</li>
<li>javax.swing.JComponent.isRequestFocusEnabled()</li>
<li>javax.swing.JComponent.isValidateRoot()</li>
<li>javax.swing.JComponent.paint(java.awt.Graphics)</li>
<li>javax.swing.JComponent.paintImmediately(int,int,int,int)</li>
<li>javax.swing.JComponent.paintImmediately(java.awt.Rectangle)</li>
<li>javax.swing.JComponent.print(java.awt.Graphics)</li>
<li>javax.swing.JComponent.printAll(java.awt.Graphics)</li>
<li>javax.swing.JComponent.putClientProperty(java.lang.Object,java.lang.Object)</li>
<li>javax.swing.JComponent.registerKeyboardAction(java.awt.event.ActionListener,java.lang.String,javax.swing.KeyStroke,int)</li>
<li>javax.swing.JComponent.registerKeyboardAction(java.awt.event.ActionListener,javax.swing.KeyStroke,int)</li>
<li>javax.swing.JComponent.removeAncestorListener(javax.swing.event.AncestorListener)</li>
<li>javax.swing.JComponent.removeVetoableChangeListener(java.beans.VetoableChangeListener)</li>
<li>javax.swing.JComponent.repaint(java.awt.Rectangle)</li>
<li>javax.swing.JComponent.repaint(long,int,int,int,int)</li>
<li>javax.swing.JComponent.requestDefaultFocus()</li>
<li>javax.swing.JComponent.requestFocus()</li>
<li>javax.swing.JComponent.requestFocus(boolean)</li>
<li>javax.swing.JComponent.requestFocusInWindow()</li>
<li>javax.swing.JComponent.resetKeyboardActions()</li>
<li>javax.swing.JComponent.reshape(int,int,int,int)</li>
<li>javax.swing.JComponent.revalidate()</li>
<li>javax.swing.JComponent.scrollRectToVisible(java.awt.Rectangle)</li>
<li>javax.swing.JComponent.setActionMap(javax.swing.ActionMap)</li>
<li>javax.swing.JComponent.setAlignmentX(float)</li>
<li>javax.swing.JComponent.setAlignmentY(float)</li>
<li>javax.swing.JComponent.setAutoscrolls(boolean)</li>
<li>javax.swing.JComponent.setBackground(java.awt.Color)</li>
<li>javax.swing.JComponent.setBorder(javax.swing.border.Border)</li>
<li>javax.swing.JComponent.setComponentPopupMenu(javax.swing.JPopupMenu)</li>
<li>javax.swing.JComponent.setDebugGraphicsOptions(int)</li>
<li>javax.swing.JComponent.setDefaultLocale(java.util.Locale)</li>
<li>javax.swing.JComponent.setDoubleBuffered(boolean)</li>
<li>javax.swing.JComponent.setFocusTraversalKeys(int,java.util.Set)</li>
<li>javax.swing.JComponent.setFont(java.awt.Font)</li>
<li>javax.swing.JComponent.setForeground(java.awt.Color)</li>
<li>javax.swing.JComponent.setInheritsPopupMenu(boolean)</li>
<li>javax.swing.JComponent.setInputMap(int,javax.swing.InputMap)</li>
<li>javax.swing.JComponent.setInputVerifier(javax.swing.InputVerifier)</li>
<li>javax.swing.JComponent.setMaximumSize(java.awt.Dimension)</li>
<li>javax.swing.JComponent.setMinimumSize(java.awt.Dimension)</li>
<li>javax.swing.JComponent.setNextFocusableComponent(java.awt.Component)</li>
<li>javax.swing.JComponent.setOpaque(boolean)</li>
<li>javax.swing.JComponent.setPreferredSize(java.awt.Dimension)</li>
<li>javax.swing.JComponent.setRequestFocusEnabled(boolean)</li>
<li>javax.swing.JComponent.setToolTipText(java.lang.String)</li>
<li>javax.swing.JComponent.setTransferHandler(javax.swing.TransferHandler)</li>
<li>javax.swing.JComponent.setVerifyInputWhenFocusTarget(boolean)</li>
<li>javax.swing.JComponent.setVisible(boolean)</li>
<li>javax.swing.JComponent.unregisterKeyboardAction(javax.swing.KeyStroke)</li>
<li>javax.swing.JComponent.update(java.awt.Graphics)</li>
<li>javax.swing.JMenu.add(java.awt.Component)</li>
<li>javax.swing.JMenu.add(java.awt.Component,int)</li>
<li>javax.swing.JMenu.add(java.lang.String)</li>
<li>javax.swing.JMenu.add(javax.swing.Action)</li>
<li>javax.swing.JMenu.add(javax.swing.JMenuItem)</li>
<li>javax.swing.JMenu.addMenuListener(javax.swing.event.MenuListener)</li>
<li>javax.swing.JMenu.addSeparator()</li>
<li>javax.swing.JMenu.applyComponentOrientation(java.awt.ComponentOrientation)</li>
<li>javax.swing.JMenu.doClick(int)</li>
<li>javax.swing.JMenu.getAccessibleContext()</li>
<li>javax.swing.JMenu.getComponent()</li>
<li>javax.swing.JMenu.getDelay()</li>
<li>javax.swing.JMenu.getItem(int)</li>
<li>javax.swing.JMenu.getItemCount()</li>
<li>javax.swing.JMenu.getMenuComponent(int)</li>
<li>javax.swing.JMenu.getMenuComponentCount()</li>
<li>javax.swing.JMenu.getMenuComponents()</li>
<li>javax.swing.JMenu.getMenuListeners()</li>
<li>javax.swing.JMenu.getPopupMenu()</li>
<li>javax.swing.JMenu.getSubElements()</li>
<li>javax.swing.JMenu.getUIClassID()</li>
<li>javax.swing.JMenu.insert(java.lang.String,int)</li>
<li>javax.swing.JMenu.insert(javax.swing.Action,int)</li>
<li>javax.swing.JMenu.insert(javax.swing.JMenuItem,int)</li>
<li>javax.swing.JMenu.insertSeparator(int)</li>
<li>javax.swing.JMenu.isMenuComponent(java.awt.Component)</li>
<li>javax.swing.JMenu.isPopupMenuVisible()</li>
<li>javax.swing.JMenu.isSelected()</li>
<li>javax.swing.JMenu.isTearOff()</li>
<li>javax.swing.JMenu.isTopLevelMenu()</li>
<li>javax.swing.JMenu.menuSelectionChanged(boolean)</li>
<li>javax.swing.JMenu.remove(int)</li>
<li>javax.swing.JMenu.remove(java.awt.Component)</li>
<li>javax.swing.JMenu.remove(javax.swing.JMenuItem)</li>
<li>javax.swing.JMenu.removeAll()</li>
<li>javax.swing.JMenu.removeMenuListener(javax.swing.event.MenuListener)</li>
<li>javax.swing.JMenu.setAccelerator(javax.swing.KeyStroke)</li>
<li>javax.swing.JMenu.setComponentOrientation(java.awt.ComponentOrientation)</li>
<li>javax.swing.JMenu.setDelay(int)</li>
<li>javax.swing.JMenu.setMenuLocation(int,int)</li>
<li>javax.swing.JMenu.setModel(javax.swing.ButtonModel)</li>
<li>javax.swing.JMenu.setPopupMenuVisible(boolean)</li>
<li>javax.swing.JMenu.setSelected(boolean)</li>
<li>javax.swing.JMenu.updateUI()</li>
<li>javax.swing.JMenuItem.addMenuDragMouseListener(javax.swing.event.MenuDragMouseListener)</li>
<li>javax.swing.JMenuItem.addMenuKeyListener(javax.swing.event.MenuKeyListener)</li>
<li>javax.swing.JMenuItem.getAccelerator()</li>
<li>javax.swing.JMenuItem.getMenuDragMouseListeners()</li>
<li>javax.swing.JMenuItem.getMenuKeyListeners()</li>
<li>javax.swing.JMenuItem.isArmed()</li>
<li>javax.swing.JMenuItem.processKeyEvent(java.awt.event.KeyEvent,javax.swing.MenuElement[],javax.swing.MenuSelectionManager)</li>
<li>javax.swing.JMenuItem.processMenuDragMouseEvent(javax.swing.event.MenuDragMouseEvent)</li>
<li>javax.swing.JMenuItem.processMenuKeyEvent(javax.swing.event.MenuKeyEvent)</li>
<li>javax.swing.JMenuItem.processMouseEvent(java.awt.event.MouseEvent,javax.swing.MenuElement[],javax.swing.MenuSelectionManager)</li>
<li>javax.swing.JMenuItem.removeMenuDragMouseListener(javax.swing.event.MenuDragMouseListener)</li>
<li>javax.swing.JMenuItem.removeMenuKeyListener(javax.swing.event.MenuKeyListener)</li>
<li>javax.swing.JMenuItem.setArmed(boolean)</li>
<li>javax.swing.JMenuItem.setEnabled(boolean)</li>
<li>javax.swing.JMenuItem.setUI(javax.swing.plaf.MenuItemUI)</li>
</ol>
<p>最后，如果你知道某个类有更多的方法，请告诉我们。<!--



<p align="center"><a href= target=_blank><img decoding="async" src=""></a></p>





<p align="center"><img decoding="async" src="https://coolshell.cn/wp-content/uploads/2020/03/coolshell.weixin.jpg"> <img decoding="async" loading="lazy" src="https://coolshell.cn/wp-content/uploads/2020/03/coolshell.mini_.jpg" width="300" height="300"> <br />关注CoolShell微信公众账号和微信小程序</p>

 

--></p>
<div style="margin-top: 15px; font-size: 16px;color: #cc0000;">
<p align="center"><strong>（转载本站文章请注明作者和出处 <a href="https://coolshell.cn/">酷 壳 &#8211; CoolShell</a> ，请勿用于任何商业用途）</strong></p>
</div>

<div class="wp_rp_wrap  wp_rp_vertical_m" id="wp_rp_first"><div class="wp_rp_content"><h3 class="related_post_title">相关文章</h3><ul class="related_post wp_rp"><li ><a href="https://coolshell.cn/articles/18360.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/uploads/2018/05/300x262-150x150.jpg" alt="程序员练级攻略（2018)  与我的专栏" width="150" height="150" /></a><a href="https://coolshell.cn/articles/18360.html" class="wp_rp_title">程序员练级攻略（2018)  与我的专栏</a></li><li ><a href="https://coolshell.cn/articles/5709.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/29.jpg" alt="API设计：用流畅接口构造内部DSL" width="150" height="150" /></a><a href="https://coolshell.cn/articles/5709.html" class="wp_rp_title">API设计：用流畅接口构造内部DSL</a></li><li ><a href="https://coolshell.cn/articles/3437.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/uploads/2010/12/ediff-small-150x150.png" alt="一些杂项资源" width="150" height="150" /></a><a href="https://coolshell.cn/articles/3437.html" class="wp_rp_title">一些杂项资源</a></li><li ><a href="https://coolshell.cn/articles/2053.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/20.jpg" alt="最为奇怪的程序语言的特性" width="150" height="150" /></a><a href="https://coolshell.cn/articles/2053.html" class="wp_rp_title">最为奇怪的程序语言的特性</a></li><li ><a href="https://coolshell.cn/articles/20845.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/uploads/2020/03/rust-social-wide-150x150.jpg" alt="Rust语言的编程范式" width="150" height="150" /></a><a href="https://coolshell.cn/articles/20845.html" class="wp_rp_title">Rust语言的编程范式</a></li><li ><a href="https://coolshell.cn/articles/17634.html" class="wp_rp_thumbnail"><img src="https://coolshell.cn/wp-content/uploads/2017/01/pretty-code-150x150.gif" alt="Chrome开发者工具的小技巧" width="150" height="150" /></a><a href="https://coolshell.cn/articles/17634.html" class="wp_rp_title">Chrome开发者工具的小技巧</a></li></ul></div></div>The post <a href="https://coolshell.cn/articles/182.html">OMG, Jave的JMenu居然有433个方法</a> first appeared on <a href="https://coolshell.cn">酷 壳 - CoolShell</a>.]]></content:encoded>
					
					<wfw:commentRss>https://coolshell.cn/articles/182.html/feed</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
	</channel>
</rss>
