別の匿名クラスに匿名クラスを含むコードがあり、内側の匿名クラスから外側の匿名クラスのインスタンスをアドレス指定する必要があります。コードは次のとおりです。
editTemplateButton.setAction(new AbstractAction("Edit...", GUIUtils.EDIT_ELEMENT_ICON)
{
{
setEnabled(false); // disabled at start
templatesList.addListSelectionListener(new ListSelectionListener()
{
@Override
public void valueChanged(ListSelectionEvent e)
{
setEnabled(!templatesList.isSelectionEmpty()); // depends on selection
}
});
}
@Override
public void actionPerformed(ActionEvent e)
{
//todo
}
});
setEnabled()
というわけで、の実装のAbstractAction
中で の実装を呼び出しますListSelectionListener
。今ではOKと呼ばれています。ListSelectionListener
しかし、実装を変数に入れ、異なるアクションに 2 回使用したいと考えています。どのようにすればsetEnabled()
正しく呼び出すことができますか? JFrame
このコードにはメソッドも含まれていることを忘れないでくださいsetEnabled()
。正しいコードの代わりに呼び出したくありません。
ご回答ありがとうございます。
更新:AbstractAction.this.setEnabled(!templatesList.isSelectionEmpty());
コンパイラがエラーを報告するため、ような構造は使用できません。