这段代码对我来说工作正常,但这是如何发生的?我是如何制作 4 个JMenu
对象命名为同名的(菜单)的?即使它有效,我也需要了解,并且这段代码是编写代码的好方法还是更好?
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class Window extends JFrame {
private static final String TITLE = "DevTools";
private static final int WIDTH = 800;
private static final int HEIGHT = 600;
private JMenuBar menubar;
private JMenu menu;
private JMenuItem menuitem;
private String[] menu_titles = {"File", "Edit", "Diagrams", "Help"};
public Window(){
init();
createMenu();
}
public void init(){
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setExtendedState(MAXIMIZED_BOTH);
this.setResizable(true);
this.setSize(WIDTH, HEIGHT);
this.setLocationRelativeTo(null);
this.setTitle(TITLE);
}
public void createMenu(){
menubar = new JMenuBar();
setJMenuBar(menubar);
for(int j = 0; j < menu_titles.length; j++){
menu = new JMenu(menu_titles[j]);
menubar.add(menu);
}
this.setVisible(true);
}
}
我是如何使 JMenu 的 4 个对象命名为相同的名称,即(菜单)
menu
不是任何对象的名称。 menu
只是用于临时存储对每个新创建的JMenu
实例的引用的变量。您可以为其分配任意数量的引用。它最终将只容纳其中最新的。
由于您创建的每个JMenu
都添加到menubar
JMenuBar
中,因此您最终会得到一个包含多个JMenu
实例的菜单栏。
我是如何使 JMenu 的 4 个对象命名为相同的名称,即(菜单)
你没有。您使用了四次menu
实例字段,每次都覆盖其先前的值。它只剩下引用您分配给它的最后一个JMenu
。
menu
,在该代码中,根本不应该是实例字段。它应该是 createMenu
中的局部变量(甚至在 createMenu
中的 for
循环内),因为一旦完成并且您已经将所有菜单添加到菜单栏,就不应该使用它createMenu
。
> JAVA
有两个术语,实际上这两个术语之间存在很大差异。所以请不要混淆这两个术语是:----
- 引用变量。
-
实际对象。
私有 JMenu 菜单;//这里菜单是一个引用变量而不是一个对象。
menu = new JMenu(menu_titles[j]);//new 关键字负责创建对象。这个新的对象引用实际上是由
menu
引用的变量保存的。
现在是时候解释你实际上感到困惑的循环代码了
for(int j = 0; j < menu_titles.length; j++){
menu = new JMenu(menu_titles[j]); // at each iteration
// new keyword is responsible to creating a different Object.
//and refers to menu reference variable actually.
menubar.add(menu); //add new JMenu to menubar.
}
解释 :- 在每次迭代中
new
关键字负责创建不同的Object
。 并实际引用菜单引用变量。menubar.add(menu);
这部分代码,将新的menu
对象成员添加到menubar
。它只是认为有 3-4 个成员站成一排,将东西传递给下一个人,最后一个人将东西扔进
beanbox
. 每次迭代相同的事物都经过不同的人,但事物保持不变,只是参考发生了变化,该事物的最终位置是beanbox
。
这里beanbox
菜单栏,可以容纳多个menu
对象。 传递事物的人就像一个参考变量。
仔细阅读你会得到这个概念。谢谢。。:)