我正在练习Java的gui技能,而且我一直在做菜单和菜单栏。 他们对我很有意义,但我有一个问题,我可以在哪里了解更多。
我已经完成的基本菜单,ActionListener函数actionPerformed必须与菜单在同一个类中,菜单正在更改的项目也必须在类中作为菜单。
如果我想要一个影响JPanel的菜单,该菜单由另一个类的构造函数创建并放置在我的框架中..我不确定该菜单如何更改它的组件。
您提供的任何提示,提示或网站都会很有用,非常感谢。
答案 0 :(得分:3)
我发现将菜单栏操作包装在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());
}
}