我正在用Java练习我的gui技能,我一直在做菜单和菜单栏。它们对我来说很有意义,但我有一个问题,我在哪里可以了解更多关于它们的信息。
我所做的基本菜单,ActionListener函数actionPerformed必须与菜单在同一个类中,菜单正在更改的项目也必须与菜单位于同一类中。
What If I want to have a menu that affect a JPanel that is created by a constructor from other class and placed in my frame。。我不确定菜单如何改变它的组成部分。
你们发现任何有用的提示、提示或网站都会很棒,提前谢谢。
我发现在Action
对象中包装菜单栏操作很有用。这封装了:
- 操作的名称和图标
- 如果启用或禁用
- (对于复选框操作)如果已选中
- 操作的键盘快捷键
- 动作监听器的实现
你可以在该操作作用于其数据的类中定义AbstractAction
的一个子类。然后为该操作定义一个getter,这样你的菜单构建代码就可以获得它。你可以直接将Action
添加到菜单中-MenuItem
会自动为它构建。
动作的另一个优点是,相同的动作可以用于按钮、工具栏等。
class ModelClass {
int value;
Action incAction = new AbstractAction("Increment") {
public void actionPerformed() {
value++;
setEnabled(value < 10);
}
};
public Action getIncAction() {
return incAction;
}
}
class UIClass {
void buildMenu() {
JMenu menu = new JMenu("Model");
menu.add(model.getIncAction());
}
}