Java 在另一个 class 中创建菜单,添加到框架
Java create menu in another class, add to frame
我尝试在另一个 class 中创建一个菜单并将其添加到我的框架中,但它不起作用(没有添加)。能帮我看看代码有什么问题吗,谢谢
Class 测试:
public class Test extends JFrame {
public Test() {
MenuBar menuBar = new MenuBar();
setJMenuBar(menuBar);
pack();
setVisible(true);
}
}
Class 菜单:
public class MenuBar extends JMenuBar {
JMenuBar menuBar;
JMenu menu;
public MenuBar() {
menuBar = new JMenuBar();
menu = new JMenu("File");
menuBar.add(menu);
MenuItem menuItem = new MenuItem();
menu.add(menuItem);
}
}
class 菜单项:
public class MenuItem extends JMenuItem {
JMenuItem menuItemUndo;
JMenuItem menuItemRedo;
public MenuItem() {
menuItemUndo = new JMenuItem("Undo");
menuItemRedo = new JMenuItem("Redo");
}
}
MenuBar
extends JMenuBar
并且因此您不必在其构造函数中创建新的 JMenuBar
。这更有意义:
public class MenuBar extends JMenuBar {
JMenu menu;
public MenuBar() {
menu = new JMenu("File");
this.add(menu);
.....
}
}
同样的事情适用于 MenuItem
class。
public class Undo extends JMenuItem {
public MenuItem() {
this.setText("Undo");
}
}
class Test extends JFrame {
public Test() {
MenuBar menuBar = new MenuBar();
setJMenuBar(menuBar);
pack();
setVisible(true);
}
}
class MenuBar extends JMenuBar {
JMenu menu;
JMenuItem menuItemUndo;
JMenuItem menuItemRedo;
public MenuBar() {
menu = new JMenu("File");
menuItemUndo = new JMenuItem("Undo");
menuItemRedo = new JMenuItem("Redo");
menu.add(menuItemUndo);
menu.add(menuItemRedo);
this.add(menu);
}
public static void main(String[] args) {
new Test();
}
}
运行这个程序。我想它会给你想要的输出。
我尝试在另一个 class 中创建一个菜单并将其添加到我的框架中,但它不起作用(没有添加)。能帮我看看代码有什么问题吗,谢谢
Class 测试:
public class Test extends JFrame {
public Test() {
MenuBar menuBar = new MenuBar();
setJMenuBar(menuBar);
pack();
setVisible(true);
}
}
Class 菜单:
public class MenuBar extends JMenuBar {
JMenuBar menuBar;
JMenu menu;
public MenuBar() {
menuBar = new JMenuBar();
menu = new JMenu("File");
menuBar.add(menu);
MenuItem menuItem = new MenuItem();
menu.add(menuItem);
}
}
class 菜单项:
public class MenuItem extends JMenuItem {
JMenuItem menuItemUndo;
JMenuItem menuItemRedo;
public MenuItem() {
menuItemUndo = new JMenuItem("Undo");
menuItemRedo = new JMenuItem("Redo");
}
}
MenuBar
extends JMenuBar
并且因此您不必在其构造函数中创建新的 JMenuBar
。这更有意义:
public class MenuBar extends JMenuBar {
JMenu menu;
public MenuBar() {
menu = new JMenu("File");
this.add(menu);
.....
}
}
同样的事情适用于 MenuItem
class。
public class Undo extends JMenuItem {
public MenuItem() {
this.setText("Undo");
}
}
class Test extends JFrame {
public Test() {
MenuBar menuBar = new MenuBar();
setJMenuBar(menuBar);
pack();
setVisible(true);
}
}
class MenuBar extends JMenuBar {
JMenu menu;
JMenuItem menuItemUndo;
JMenuItem menuItemRedo;
public MenuBar() {
menu = new JMenu("File");
menuItemUndo = new JMenuItem("Undo");
menuItemRedo = new JMenuItem("Redo");
menu.add(menuItemUndo);
menu.add(menuItemRedo);
this.add(menu);
}
public static void main(String[] args) {
new Test();
}
}
运行这个程序。我想它会给你想要的输出。