したがって、通常、私は C、C++、および C# プログラマーであり、ほとんどの GUI 経験は C# WPF にあります。私は Java を使用するプロジェクトに配置されましたが、C# の語彙が Java とうまく調和していないことがわかりました。
私が遭遇した問題の 1 つは、JButtons に関するものであり、おそらく C# で「デリゲート」と呼ばれるものを持つすべてのものです。この例には、次のコードがあります。
jbnButton1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jtfInput.setText("Button 1!");
}
});
簡単に言えば、関数がパラメーターとして定義されている (またはパラメーターとして渡されている) 場合、これは何と呼ばれますか? また、これはベストプラクティスですか?私が取り組んでいるプロジェクトでは、Initialize() 関数はボタンやチェック ボックスなどのこのような関数で満たされているため、扱いにくい関数になっています。Initialize() 内ではなく、クラス レベルで定義することをお勧めします。
これにより、別の例(トップのコード例) が表示されます。これらのコード行で:
b1.addActionListener(this);
b3.addActionListener(this);
...
}
public void actionPerformed(ActionEvent e) {
if ("disable".equals(e.getActionCommand())) {
b2.setEnabled(false);
b1.setEnabled(false);
b3.setEnabled(true);
} else {
b2.setEnabled(true);
b1.setEnabled(true);
b3.setEnabled(false);
}
}
基本的に、コードは、ボタン 1 の b1 とボタン 3 の b3 のアクションを同じイベント ハンドラーに割り当てます。このイベント ハンドラーは、私が好むスコープ (ボタンが初期化されている場所の外) で定義されます。それらが異なる機能を指すようにする方法はありますか? また、電話することで
.addActionListener(this);
コンパイラは、これで actionPerformed(ActionEvent e) を使用することをどのように判断しますか? アクションが 'actionPerformed(ActionEvent e)' に解決されると事前に定義されているものはありますか?