使用 Java JOptionPane 的菜单栏



美好的一天!我正在尝试学习JOptionPane。我在网上搜索代码,并试图通过运行代码和在线搜索来分析它,但我仍然无法理解其中的某些部分。您能否用注释详细说明这些代码,特别是javax.swing,public JOPmenu((,createMenuBar((,setJMenuBar和String [] args。

javax.swing.*;** //what's the difference between this and javax.swing.JOptionPane
import java.awt.EventQueue;  
import java.awt.event.KeyEvent;
public class JOpMenu extends JFrame
{
public JOpMenu()
{
**initUI();** // can I delete this class and just directly insert the code from initUI
}
public void initUI()
{
createMenuBar(); // whats the purpose of this
setTitle("CHS Presentation");
setSize(560, 350);
setLocationRelativeTo(null);
}
private void createMenuBar()
{
var menuBar = new JMenuBar();
var fileMenu = new JMenu("File");
fileMenu.setMnemonic(KeyEvent.VK_F);
var newMenuItem = new JMenuItem("New");
newMenuItem.setMnemonic(KeyEvent.VK_N);
var openMenuItem = new JMenuItem("Open");
openMenuItem.setMnemonic(KeyEvent.VK_O);
var saveMenuItem = new JMenuItem("Save");
saveMenuItem.setMnemonic(KeyEvent.VK_S);
var exitMenuItem = new JMenuItem("Exit");
exitMenuItem.setMnemonic(KeyEvent.VK_E);
exitMenuItem.addActionListener((event) -> System.exit(0));
fileMenu.add(newMenuItem);
fileMenu.add(openMenuItem);
fileMenu.add(saveMenuItem);
fileMenu.addSeparator();
fileMenu.add(exitMenuItem);
var editMenu = new JMenu("Edit");
editMenu.setMnemonic(KeyEvent.VK_E);
var undoMenuItem = new JMenuItem("Undo");
undoMenuItem.setMnemonic(KeyEvent.VK_U);
var redoMenuItem = new JMenuItem("Redo");
redoMenuItem.setMnemonic(KeyEvent.VK_R);
var copyMenuItem = new JMenuItem("Copy");
copyMenuItem.setMnemonic(KeyEvent.VK_C);
var pasteMenuItem = new JMenuItem("Paste");
pasteMenuItem.setMnemonic(KeyEvent.VK_P);
var selectMenuItem = new JMenuItem("Select");
selectMenuItem.setMnemonic(KeyEvent.VK_S);
editMenu.add(undoMenuItem);
editMenu.add(redoMenuItem);
editMenu.addSeparator();
editMenu.add(copyMenuItem);
editMenu.add(pasteMenuItem);
editMenu.add(selectMenuItem);
var helpMenu = new JMenu("Help");
helpMenu.setMnemonic(KeyEvent.VK_H);
var aboutMenuItem = new JMenuItem("About");
aboutMenuItem.setMnemonic(KeyEvent.VK_A);
helpMenu.add(aboutMenuItem);
menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(helpMenu);
setJMenuBar(menuBar); //why the menu disappear when I remove this
} 
public static void main(String[] args) // why does the string args declaration is in here
{
EventQueue.invokeLater(() -> {
var ex = new JOpMenu();
ex.setVisible(true);
});
} 
}

谢谢!

  1. JOpMenu()

JOpMenu是类的构造函数,因此当您创建启动initUI函数的类的实例/对象时,它将隐式调用。因此,您将自动调用initUI函数。使用构造函数启动 UI 也被认为是一种很好的编码实践,还有其他方式您根本不需要调用initUI(这是一个不同的主题(,是的,您可以直接编写initUI()它仍然有效。

  1. createMenuBar()

这只是对代码中存在的用户定义函数的调用

  1. setMenuBar()

这是一个JFrame组件,您可以使用它向框架添加菜单栏.
这里JFrame扩展到类。但是,如果您显式创建JFrame则语法将是:

JFrame frame_name = new JFrame();
frame_name.setMenuBar(menuBar);
  1. String[] args

当您在命令提示符下运行代码并且必须接受输入时,将使用此方法。所有给出的输入都将以字符串格式存储在 args 数组中,您可以像使用数组元素一样使用它们。特别是在此程序中,如果您删除String[] args则即使在命令提示符下,您的代码仍然可以正常运行,因为您没有从用户那里获取任何输入。

最新更新