Tag: jmenu

单击JMenuItem时如何获取JMenu的名称

如何获得持有点击的JMenuItem的JMenu的名称? 我试过这样做: public void actionPerformed(ActionEvent arg0) { JMenu menuthing = (JMenu)(arg0.getSource()); String menuString = menuthing.getText(); JMenuItem source = (JMenuItem)(arg0.getSource()); String colorType = source.getText(); 但它给了我这个错误: Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: javax.swing.JMenuItem cannot be cast to javax.swing.JMenu 那么有没有办法转换为JMenu,或其他一些方法来确定名称? 谢谢。

JMenu在Windows7 LAF Java7中使用focuslost事件

如果在单击另一个组件时仍然打开弹出菜单,则该组件不会获取该事件,因为它可能被弹出窗口消耗。 这通常发生在所有JPopupmenus上。 这只发生在带有Windows LAF(Windows7)的Java 7中。 有解决方法吗? 这是一个已知的bug吗? import javax.swing.*; import java.awt.event.*; public class Test { public static void main(String[] s) throws Exception { String lookAnfFeelClassName = UIManager.getSystemLookAndFeelClassName(); UIManager.setLookAndFeel(lookAnfFeelClassName); JMenu menu = new JMenu(“TEST Menu”); JMenuItem menuItem = new JMenuItem(“Menu Item 1”); JMenuBar menuBar = new JMenuBar(); menu.add(menuItem); menuBar.add(menu); final JButton b = new JButton(“Test”); b.setBounds(5, […]

如何设置JMenuItem的大小?

正如你所看到的,拥有这些JMenuItem很难看。 菜单项的宽度非常小。 这是代码: JMenu menuOne=new JMenu(“MenuOne”); JMenu menuTwo=new JMenu(“MenuTwo”); JMenu menuThree=new JMenu(“MenuThree”); JMenu menuFour=new JMenu(“MenuFour”); JMenuBar mbar=new JMenuBar(); //add the menu to menubar mbar.add(menuOne); JMenuItem OneItOne=new JMenuItem(“1”); JMenuItem OneItTwo=new JMenuItem(“2″); menuOne.add(OneItOne); menuOne.addSeparator(); menuOne.add(OneItTwo); mbar.add(menuTwo); mbar.add(menuThree); mbar.add(menuFour); setJMenuBar(mbar); 只需在String中添加一些空格即可(例如”1 ” ),但有没有更好的方法来设置JMenuItem的首选长度? 我尝试过OneItTwo.setSize() ,但失败了。

JTable单元格编辑可以消耗击键吗?

在我的程序中,有一个带有许多加速器的JMenu和一个可编辑的JTable。 问题是,在编辑JTable时,加速键仍会被触发。 例如,如果我在jtable单元格中输入字母’n’,那么’next’菜单选项也会激活。 如何让jtable单元格编辑器专门使用击键? import javax.swing.JFrame; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JTable; import javax.swing.KeyStroke; import java.awt.event.KeyEvent; import java.awt.Toolkit; public class SampleClass{ public SampleClass(){ JFrame frame = new JFrame(); JMenuBar menuBar = new JMenuBar(); JMenu menu = new JMenu(); JMenuItem item = new JMenuItem(); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, 0)); item.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { […]

让JButton像JMenu一样行事

我有一个JMenuBar的以下代码(此代码取自一个免费的Java程序调用JGuiD并为个人目的编辑) import javax.swing.*; import java.awt.event.*; import javax.swing.event.*; import java.awt.Dimension; import java.awt.Color; public class GuiDMenuBar extends JMenuBar { JMenu m_file,m_edit,m_help; JMenuItem mi_f_new,mi_f_open,mi_f_save,mi_f_saveas,mi_f_exit; JMenuItem mi_e_cut,mi_e_copy,mi_e_paste,mi_e_delete; JMenuItem mi_v_motif,mi_v_java,mi_v_windows,mi_v_nimbus; JMenuItem mi_h_help,mi_h_about; JButton m_code; public GuiDMenuBar() { setBorderPainted(true); makeFileMenu(); makeEditMenu(); makeCodeButton(); makeHelpMenu(); } void makeFileMenu() { m_file = new JMenu(“File”); m_file.setMnemonic(‘F’); mi_f_new = new JMenuItem(“New”,new ImageIcon(“icons/new_project.png”)); mi_f_new.setMnemonic(‘N’); mi_f_open = new […]

Java中的自定义JMenuItems

是否可以创建包含按钮的自定义JMenuItem ? 例如,是否可以使用与JMenuITem项创建JMenuITem : +—————————————-+ | JMenuItem [ Button | Button | Button ] | +—————————————-+

为什么我的ChangeListener只对JMenu作出反应,而对JMenuItem不作出反应?

现在,我有一个JMenu,还有一些JMenuItems。 当JMenu和JMenuItem的状态更改为“selected”时,我希望我的程序执行一些操作。 我不使用MouseLitener的MouseOver,因为我希望用户也可以使用键盘在菜单中导航。 现在,我写了这个监听器: class MenuItemListener implements ChangeListener { @Override public void stateChanged(ChangeEvent arg0) { JMenuItem item = (JMenuItem) arg0.getSource(); if(item.isSelected()) System.out.println(item.getText()+” pressed!”); } } 当我将这个监听器添加到JMenu时,它可以正常工作,但是当我将它添加到JMenuItem时,没有任何反应……当我删除if语句以便监听器对两者做出反应时,当菜单被选中并且被选中时我对JMenu以及对于JMenuItem。 所以,正如我所见,JMenuItem无法“通过”isSelected()测试……但是什么可能是个问题呢? :S

更改其中的JMenuBar和JMenu对象的背景和文本颜色

如何为其中的JMenuBar和JMenu对象设置自定义背景颜色? 我试过.setBackgroundColor它不起作用!

JMenu ActionListener

我想知道你是否可以测试是否点击了JMenu(而不是JMenuItem)。 我尝试添加一个ActionListener,但它似乎没有识别它。 我只需要在按下JMenu按钮时执行操作,这样我就可以在打开时更改该菜单的JMenuItems。 欢迎所有的工作来获得这个结果! 谢谢