Pul*_*nda 13 java user-interface swing jmenuitem jmenu
我正在制作一个有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 url.dll,FileProtocolHandler ")
.append(s).toString());
} else {
String as[] = { "firefox", "opera", "konqueror", "epiphany",
"mozilla", "netscape" };
String s2 = null;
for (int i = 0; i < as.length && s2 == null; i++)
if (Runtime.getRuntime()
.exec(new String[] { "which", as[i] }).waitFor() == 0)
s2 = as[i];
if (s2 == null)
throw new Exception("Could not find web browser");
Runtime.getRuntime().exec(new String[] { s2, s });
}
} catch (Exception exception) {
System.out
.println("An error occured while trying to open the web browser!\n");
}
}
public static JMenuBar menuBarCreator() {
// create the menu parts
JMenuBar menuBar = new JMenuBar();
JMenu menuFile = new JMenu("File");
JMenu menuHelp = new JMenu("Help");
JMenuItem menuFileWebsite = new JMenuItem("Website");
JMenuItem menuFileExit = new JMenuItem("Exit");
JMenuItem menuHelpRules = new JMenuItem("Rules");
JMenuItem menuHelpAbout = new JMenuItem("About");
JMenuItem menuHelpHow = new JMenuItem("How To Play");
// make the shortcuts for the items
menuFile.setMnemonic(KeyEvent.VK_F);
menuHelp.setMnemonic(KeyEvent.VK_H);
// put the menu parts with eachother
menuBar.add(menuFile);
menuBar.add(menuHelp);
menuFile.add(menuFileWebsite);
menuFile.add(menuFileExit);
menuHelp.add(menuHelpRules);
menuHelp.add(menuHelpAbout);
menuHelp.add(menuHelpHow);
return menuBar;
}
public static Component setTitle() {
JLabel title = new JLabel("Welcome To *the game*");
title.setVerticalAlignment(JLabel.TOP);
title.setHorizontalAlignment(JLabel.CENTER);
return title;
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句:我想要网站选项(现在让我们使用它)来使用launchURL方法; 我知道一个有效.
Ste*_*Kuo 14
A JMenuItem是按钮(AbstractButton)的一种形式.正常模式是使用Action(参见JMenuItem构造函数)构造您的按钮.该Action定义的名称和要执行的操作.大多数人都会扩展AbstractAction并实现actionPerformed按下按钮时调用的内容.
可能的实现可能如下所示:
JMenuItem menuItem = new JMenuItem(new AbstractAction("My Menu Item") {
public void actionPerformed(ActionEvent e) {
// Button pressed logic goes here
}
});
Run Code Online (Sandbox Code Playgroud)
要么:
JMenuItem menuItem = new JMenuItem(new MyAction());
...
public class MyAction extends AbstractAction {
public MyAction() {
super("My Menu Item");
}
public void actionPerformed(ActionEvent e) {
// Button pressed logic goes here
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我上面说的一切也适用于JButton.另请参阅Java非常有用的" 如何使用操作"教程.
虽然最好使用 Actions,但您也可以将 ActionListener 添加到 JMenuItem1,如下所示:
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
}
});
Run Code Online (Sandbox Code Playgroud)
然后在 jMenuItem1ActionPerformed(evt) 中实现操作:
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
javax.swing.JOptionPane.showMessageDialog(null, "foo");
// more code...
}
Run Code Online (Sandbox Code Playgroud)
对于您的代码:
...
JMenuItem menuFileWebsite = new JMenuItem("Website");
JMenuItem menuFileExit = new JMenuItem("Exit");
menuFileExit.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
menuFileExitActionPerformed(evt);
}
});
JMenuItem menuHelpRules = new JMenuItem("Rules");
Run Code Online (Sandbox Code Playgroud)
和:
private static void menuFileExitActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47446 次 |
| 最近记录: |