我正在制作一个有Jmenu的GUI; 它有点击时会做的jmenu项目.那就是问题所在.我看了看,但我找不到如何让它在点击时做点什么.此外,我是一个菜鸟,所以如果你能以一种非常简单的方式做到这一点,那就太棒了!
这是代码:
import java.awt.Color;
import java.awt.Component;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.*;
public abstract class windowMaker extends JFrame implements ActionListener {
private JMenu menuFile;
public static void main(String[] args) {
createWindow();
}
public static void createWindow() {
JFrame frame = new JFrame();
frame.setTitle("*Game Title* Beta 0.0.1");
frame.setSize(600, 400);
frame.setLocation(100, 100);
frame.setVisible(true);
frame.setResizable(false);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setJMenuBar(windowMaker.menuBarCreator());
frame.add(windowMaker.setTitle());
}
public static void launchURL(String s) {
String s1 = System.getProperty("os.name");
try {
if (s1.startsWith("Windows")) {
Runtime.getRuntime()
.exec((new StringBuilder())
.append("rundll32 …
Run Code Online (Sandbox Code Playgroud) 我想知道你是否可以测试是否点击了JMenu(而不是JMenuItem).我尝试添加一个ActionListener但它似乎没有认出它.我只需要在按下JMenu按钮时执行操作,以便我可以更改该菜单的JMenuItem,因为它打开了.欢迎所有工作以获得这个结果!
谢谢
是否可以创建JMenuItem
包含按钮的自定义?例如,是否可以使用JMenuITem
与此类似的项创建:
+----------------------------------------+
| JMenuItem [ Button | Button | Button ] |
+----------------------------------------+
Run Code Online (Sandbox Code Playgroud) 我想在a中的menuItem前面创建一个复选框或复选符号JMenu
.例如,当我们打开一个记事本文件并单击格式菜单时,格式菜单的Word Wrap menuItem前面有一个复选框.
我正在尝试使用复合Swing组件作为菜单的一部分.
除了一个细节之外,一切都运行得很好:组件包含JComboBox
es,每当用户点击其中一个打开其下拉列表时,下拉列表就会打开,但菜单会消失.JComboBox
单击时是否可以使菜单保持打开状态?
我分类了JMenu
.这是相应的代码:
public class FilterMenu extends JMenu {
public FilterMenu(String name) {
super(name);
final JPopupMenu pm = this.getPopupMenu();
final FilterPanel filterPanel = new FilterPanel(pm) {
@Override
public void updateTree() {
super.updateTree();
pm.pack();
}
};
pm.add(filterPanel);
}
}
Run Code Online (Sandbox Code Playgroud)
FilterPanel
是自定义复合组件.在pm.pack()
被称为适应的大小JPopupMenu
的时候filterPanel
大小的变化.
谢谢你的帮助
所以,如果我有一个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)
并且菜单"关于"菜单与菜单栏的最左侧对齐.无论如何,我可以在菜单栏的最右侧对齐此菜单吗?
我试图让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) 尝试单击子菜单中的项目时,很自然地会在其下方的菜单项中快速绘制鼠标.Windows和Mac本身都通过在打开菜单之前稍微延迟来处理这个问题.Swing JMenus不会处理这个问题,鼠标到达目标菜单项之前会打开鼠标暂时悬停的菜单.
例如,在下图中,如果我尝试选择Item 3
,但在此过程中我的鼠标短暂滑过Menu 2
,Menu 1
子菜单将在我到达之前消失.
有没有人有任何提示或建议来解决这个问题?我的想法是定义一个自定义MenuUI,为其鼠标处理程序添加一个计时器.
这是一些简单的示例代码,说明了我的问题:
public class Thing extends JFrame {
public Thing()
{
super();
this.setSize(new Dimension(500, 500));
final JPopupMenu pMenu = new JPopupMenu();
for (int i = 0; i < 5; i++)
{
JMenu menu = new JMenu("Menu " + i);
pMenu.add(menu);
for (int j = 0; j < 10; j++)
{
menu.add(new JMenuItem("Item " + j));
}
}
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
pMenu.show(Thing.this, e.getX(), …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Swing实现这种类型的菜单.有没有现成的解决方案(免费和/或商业)?
这已被确认为错误。你可以在这里跟踪它:
https://bugs-stage.openjdk.java.net/browse/JDK-8258934
除了我在 MCVE 中发布的代码之外,没有其他代码在运行;运行此程序时没有其他 JVM 处于活动状态(尽管我认为这无关紧要)。
我没有安装任何自定义系统 UI 的程序。
目标环境
Java 1.8.0_201
Windows 10 Home Edition
Run Code Online (Sandbox Code Playgroud)
测试过的 JDK
由第三方测试
import javax.swing.*;
public class Demo {
public static void main(String[] args) {
SwingUtilities.invokeLater(Demo::launchUI); …
Run Code Online (Sandbox Code Playgroud)