我有一个JMenuBar和一个JPanel.我想将JMenuBar添加到JPanel.我该怎么办?
我想在a中的menuItem前面创建一个复选框或复选符号JMenu
.例如,当我们打开一个记事本文件并单击格式菜单时,格式菜单的Word Wrap menuItem前面有一个复选框.
我一直在尝试重载JMenu并添加一些自定义代码来支持JTextField,但这并不顺利.我的主要目的是在菜单项的右侧添加一个搜索字段.所以我有左边的文件,编辑,帮助,然后右边的搜索栏,几乎就像在某些浏览器中有一个谷歌搜索栏.有谁知道如何添加此功能?
在Java Swing GUI设计器中添加JMenuBar子菜单项的快捷方式是显而易见的,但是如何将快捷方式添加到JMenuBar主菜单项?
所以,如果我有一个JMenu
&JMenuBar
定义如下:
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenu1.setText("About");
jMenuBar1.add(jMenu1);
// Finally
setJMenuBar(jMenuBar1);
Run Code Online (Sandbox Code Playgroud)
并且菜单"关于"菜单与菜单栏的最左侧对齐.无论如何,我可以在菜单栏的最右侧对齐此菜单吗?
我的JMenuBar上的ActionListener需要一些帮助.
没有错误; 但是每次单击JMenuItem时,它都会触发与JMenuItem关联的所有操作.我的问题是:我在ActionListener代码中做得对吗?我对ActionListener类不太确定.我正在尝试将我的ActionListener与Button逻辑分开.
如果有人对我可能做错了什么有任何想法,请指出.
这是我的代码:
package MenuBar;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class SimpleMenuBar{
private static final LayoutManager grid = new GridLayout(0, 1);
public JMenuBar MenuBar;
public JMenu MenuFile, MenuEdit, MenuOption;
public JMenuItem ItemNew, ItemOpen, ItemSave, ItemExit, ItemCopy, ItemCut, ItemPaste;
ButtonGroup direction;
JRadioButtonMenuItem forwardradio, backwardradio;
JCheckBoxMenuItem CheckCase;
String input = null;
public void Design()
{
JFrame frame = new JFrame("Simple Menubar");
frame.setSize(320, 320);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
MenuBar = new JMenuBar();
frame.setJMenuBar(MenuBar);
MenuBar.setLayout(grid);
//Menus
MenuFile = new JMenu("File");
MenuFile.setMnemonic(KeyEvent.VK_F);
MenuBar.add(MenuFile); …
Run Code Online (Sandbox Code Playgroud) 在首次单击JMenuBar之前,JMenuBar不会开始将JMenuItem显示为已选中或显示JMenu弹出窗口.单击JMenuBar中的某个位置后,所有这些项都会响应鼠标悬停.
我想绕过所需的初始点击,并在鼠标悬停时自动激活它.有没有办法做到这一点?
我正在尝试用其他边框更改JMenuBar的边框.像那样(例如):
从图像1 http://img11.hostingpics.net/pics/696780Sanstitre.png 到图像2 http://img11.hostingpics.net/pics/900299Sanstitre2.png
但我找不到办法做到这一点.我可以改变我想要的任何东西.
[编辑]我已经尝试过:
UIManager.put("Menu.border", BorderFactory.createLineBorder(Color.black, 1));
UIManager.put("MenuBar.border", BorderFactory.createLineBorder(Color.black, 1));
UIManager.put("MenuItem.border", BorderFactory.createLineBorder(Color.black, 1));
Run Code Online (Sandbox Code Playgroud)
并且它不起作用:( ...
[/编辑]
我试图让JMenu表现得像JButton,但我遇到了一些问题,希望有人可以提供帮助!
我已经用这个添加了一个MenuListener到JMenu项目,但我不能让弹出菜单/焦点离开,让我能够正确点击JMenu重复次数来触发这个功能,我希望有人可以告诉我我在做什么错误.谢谢.
public void menuSelected(MenuEvent e)
{
... // do stuff here code
JMenu source = (JMenu)e.getSource();
source.setSelected(false);
source.setPopupMenuVisible(false);
}
Run Code Online (Sandbox Code Playgroud) 当我将我移动JMenuBar
到Mac OS X上的屏幕菜单栏时,它会留下一些空白区域,菜单将出现在我的窗口中; 我需要删除那个空间.我在用
System.setProperty("apple.laf.useScreenMenuBar", "true")
Run Code Online (Sandbox Code Playgroud)
将我移动JMenuBar
到屏幕菜单栏.我的朋友使用Mac报告,如果我没有设置该属性,这将留下一些丑陋的垂直空间,菜单将驻留在该空间中.解决此问题的最佳方法是什么?
编辑:这是我的来源的一个例子:
public static void main(String[] args) {
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Name");
JFrame frame = new JFrame("Gabby");
final DesktopMain dm = new DesktopMain();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(dm);
frame.setSize(160, 144);
frame.setLocationRelativeTo(null);
frame.setIgnoreRepaint(true);
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
menuBar.add(fileMenu);
// Populating the menu bar code goes here
frame.setJMenuBar(menuBar);
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)