我正在用 Java 练习我的 gui 技能,我一直在做菜单和菜单栏。它们对我来说很有意义,但我有一个问题,我可以在哪里了解更多关于它们的信息。
我做过的基本菜单,ActionListener 函数 actionPerformed 必须和菜单在同一个类中,菜单改变的项也必须和菜单在类中。
如果我想要一个影响 JPanel 的菜单,该 JPanel 由另一个类的构造函数创建并放置在我的框架中。我不确定菜单如何更改它的组件。
你们发现有用的任何提示、提示或网站都会很棒,在此先感谢。
Action
我发现将菜单栏操作包装在对象中很有用。这封装了:
AbstractAction
您将在该动作作用于其数据的类中定义一个子类。然后为该操作定义一个 getter,以便您的菜单构建代码可以获取它。您可以将Action
直接添加到菜单中 - aMenuItem
会自动为其构建。
动作的另一个优点是可以在按钮、工具栏等中使用相同的动作。
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());
}
}