1

我已经阅读了 Oracle 提供的 Java trail,他们说对象属性设置为与操作属性匹配。我想知道这是否是一组有限的共享属性,或者动作是否被强制转换为与您设置动作的对象相同的类。

我的另一个问题是......是否可以将 Action 设置为与我设置的 Component 具有相同的属性,以便它不会重置所有内容?我能想到的唯一解决方法是在对对象执行任何操作之前为对象设置操作,或者通过操作方法或构造函数传递对象并在此时设置您想要的所有值。但是我希望我可以稍后在程序中设置操作而不会打扰任何东西,这样会更方便。

例子 ...

JMenuItem myItem = new JMenuItem("someText");
myItem.setAction(myAction);// Clears the text from my menu item which is the problem

谢谢

4

1 回答 1

3

我:

为什么不让“someText”从一开始就与 Action 相关联?

你:

我怎么做?

解决方案:

  // can also pass in an icon to this constructor as a 2nd parameter
  Action myAction = new AbstractAction("Some Text") {
     {
        // set properties here including mnemmonic
        putValue(MNEMONIC_KEY, KeyEvent.VK_S);
     }

     @Override
     public void actionPerformed(ActionEvent e) {
        // action initiated code goes here
     }
  };

您还可以通过 Action 的 NAME 属性设置按钮的文本:

  Action myAction = new AbstractAction() {
     {
        putValue(NAME, "Some Text");
        putValue(MNEMONIC_KEY, KeyEvent.VK_S);
     }

     // ... etc...
  };
于 2012-11-30T22:29:18.117 回答